MIME multi-part archive¶
Example¶
Content-Type: multipart/mixed; boundary="===============2389165605550749110=="
MIME-Version: 1.0
Number-Attachments: 2
--===============2389165605550749110==
Content-Type: text/cloud-boothook; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="part-001"
#!/bin/sh
echo "this is from a boothook." > /var/tmp/boothook.txt
--===============2389165605550749110==
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="part-002"
bootcmd:
- echo "this is from a cloud-config." > /var/tmp/bootcmd.txt
--===============2389165605550749110==--
Explanation¶
Using a MIME multi-part file, the user can specify more than one type of data.
For example, both a user-data script and a cloud-config type could be specified.
Each part must specify a valid
content types. Supported content-types
may also be listed from the cloud-init subcommand
make-mime:
$ cloud-init devel make-mime --list-types
Helper subcommand to generate MIME messages¶
The cloud-init make-mime subcommand can also generate MIME multi-part
files.
The make-mime subcommand takes pairs of (filename, “text/” mime
subtype) separated by a colon (e.g., config.yaml:cloud-config) and emits a
MIME multipart message to stdout.
MIME subcommand Examples
Create user-data containing both a cloud-config (config.yaml)
and a shell script (script.sh)
$ cloud-init devel make-mime -a config.yaml:cloud-config -a script.sh:x-shellscript > user-data.mime
Create user-data containing 3 shell scripts:
always.sh- run every bootinstance.sh- run once per instanceonce.sh- run once
$ cloud-init devel make-mime -a always.sh:x-shellscript-per-boot -a instance.sh:x-shellscript-per-instance -a once.sh:x-shellscript-per-once