Base64 encoded user data to run on the edge as part of bootstrap. The payload
must start with either #cloud-config (cloud-init YAML) or #! (shell
script with a shebang). On environments that support cloud-init both options are supported.
For #cloud-config, cloud-init's default merge behavior can be
customized inside the user-provided #cloud-config via the merge_how
Example overriding the default merge strategy:
#cloud-config
merge_how:
- name: list
settings: [prepend]
- name: dict
settings: [no_replace, recurse_list]
bootcmd:
- echo "configuring boot"
runcmd:
- echo "running user script"
Omni's internal #cloud-config part looks roughly like:
#cloud-config
cloud_final_modules:
- [scripts-user, always]
runcmd:
- 'until curl --fail -H "Authorization: Token " -sSL "/.../edges/:getCloudInitScript" -o /tmp/omni-cloud-init.sh; do sleep 5; done'
- ' /bin/bash /tmp/omni-cloud-init.sh'
For shebang (#!) user data, the script is executed as-is before Omni's internal bootstrap script runs.