54 lines
2.4 KiB
Plaintext
54 lines
2.4 KiB
Plaintext
=== Overview ===
|
|
Vendordata is data provided by the entity that launches an instance
|
|
(for example, the cloud provider). This data can be used to
|
|
customize the image to fit into the particular environment it is
|
|
being run in.
|
|
|
|
Vendordata follows the same rules as user-data, with the following
|
|
caveats:
|
|
1. Users have ultimate control over vendordata. They can disable its
|
|
execution or disable handling of specific parts of multipart input.
|
|
2. By default it only runs on first boot
|
|
3. Vendordata can be disabled by the user. If the use of vendordata is
|
|
required for the instance to run, then vendordata should not be
|
|
used.
|
|
4. user supplied cloud-config is merged over cloud-config from
|
|
vendordata.
|
|
|
|
Users providing cloud-config data can use the '#cloud-config-jsonp' method
|
|
to more finely control their modifications to the vendor supplied
|
|
cloud-config. For example, if both vendor and user have provided
|
|
'runcnmd' then the default merge handler will cause the user's runcmd to
|
|
override the one provided by the vendor. To append to 'runcmd', the user
|
|
could better provide multipart input with a cloud-config-jsonp part like:
|
|
#cloud-config-jsonp
|
|
[{ "op": "add", "path": "/runcmd", "value": ["my", "command", "here"]}]
|
|
|
|
Further, we strongly advise vendors to not 'be evil'. By evil, we
|
|
mean any action that could compromise a system. Since users trust
|
|
you, please take care to make sure that any vendordata is safe,
|
|
atomic, idempotent and does not put your users at risk.
|
|
|
|
=== Input Formats ===
|
|
cloud-init will download and cache to filesystem any vendor-data that it
|
|
finds. Vendordata is handled exactly like user-data. That means that
|
|
the vendor can supply multipart input and have those parts acted on
|
|
in the same way as user-data.
|
|
|
|
The only differences are:
|
|
* user-scripts are stored in a different location than user-scripts (to
|
|
avoid namespace collision)
|
|
* user can disable part handlers by cloud-config settings.
|
|
For example, to disable handling of 'part-handlers' in vendor-data,
|
|
the user could provide user-data like this:
|
|
#cloud-config
|
|
vendordata: {excluded: 'text/part-handler'}
|
|
|
|
=== Examples ===
|
|
There are examples in the examples subdirectory.
|
|
Additionally, the 'tools' directory contains 'write-mime-multipart',
|
|
which can be used to easily generate mime-multi-part files from a list
|
|
of input files. That data can then be given to an instance.
|
|
|
|
See 'write-mime-multipart --help' for usage.
|