CLOUD-CONFIG(5) # NAME cloud-config - tiny-cloud-supported cloud-config user-data format # DESCRIPTION *cloud-config* describes the subset of *cloud-init* style user-data supported by tiny-cloud. This is not a full implementation of upstream cloud-init semantics. Only the keys documented here are supported by tiny-cloud's *#cloud-config* handler. The user-data document must begin with the header: #cloud-config # SUPPORTED KEYS *user* Configure the default login user. tiny-cloud recognizes scalar and mapping forms, including *name*, *homedir*, *shell*, *primary_group*, and *gecos*. *users* Configure additional users. The first entry may be *default* to keep the default user. Supported per-user keys are *name*, *gecos*, *homedir*, *shell*, *primary_group*, *system*, *no_create_home*, *lock_passwd*, *groups*, *doas*, and *ssh_authorized_keys*. *ssh_authorized_keys* Install SSH keys for the default user selected by *user* or *users*. *groups* Create additional groups. *bootcmd* Run commands during the main phase before later package and file actions. *write_files* Write files to disk. tiny-cloud supports *path*, *content*, *permissions*, *owner*, *encoding*, and *append*. Supported encodings are *text/plain*, *base64*, *b64*, *gzip*, *gz*, *gz+base64*, *gzip+base64*, *gz+b64*, and *gzip+b64*. *ntp* Enable and configure NTP. Supported keys are *enabled* and *ntp_client*. Recognized client values are *busybox*, *chrony*, and *openntpd*. *package_update* When set to *true*, run *apk update*. *package_upgrade* When set to *true*, run *apk upgrade*. *packages* Install packages with *apk add*. *runcmd* Run commands during the final phase. # NOTES The implementation is Alpine-focused. Package management and service control are performed with Alpine tools such as *apk*(8), *rc-update*(8), and *rc-service*(8). For Alpine-specific extensions beyond this subset, see *alpine-config*(5). # EXAMPLES A more complete example: ``` #cloud-config user: name: alpine shell: /bin/ash ssh_authorized_keys: - ssh-ed25519 AAAA... user@example.com groups: - wheel package_update: true packages: - curl - jq write_files: - path: /etc/motd permissions: '0644' content: | tiny-cloud configured this host runcmd: - echo ready >/var/tmp/cloud-ready ``` This example sets the default user, installs SSH keys, creates a group, installs packages, writes a file, and runs a final command. # SEE ALSO *alpine-config*(5), *tiny-cloud*(8)