The renderers package implements a way to encode the userdata depending on the OS and the provider. It currently holds an interface and common functions, while the implementations live in the particular providers.
AddPowershellTags adds <powershell>...</powershell> to it's input
RenderScript renders the given cloud-config as a script, and then passes the script through the given decorators.
RenderYAML renders the given cloud-config as YAML, and then passes the YAML through the given decorators.
ToBase64 just transforms whatever userdata it gets to base64 format
WinEmbedInScript for now is used on windows and it returns a powershell script which has the userdata embedded as base64(gzip(userdata))
Decorator is a function that can be used as part of a rendering pipeline.
ProviderRenderer defines a method to encode userdata depending on the OS and the provider. In the future this might support another method for rendering the userdata differently(bash vs yaml) since some providers might not ship cloudinit on every OS