Описание функционала
User data – настройки конфигурации ОС пользователя. Определяются посредством файлов конфигурации в виде скриптов cloud-config (текстовые файлы с YAML-синтаксисом), либо через командные скрипты на bash. Автоматическая конвертация скриптов в формат Base64 происходит перед их отправкой на сервер, где они исполняются агентом cloud-init во время первой загрузки ОС. Применение user data способствует автоматизации конфигурации ОС пользователя.
Параметры user data указываются в поле –"User Data", при создании инстанса. В соответствующее поле вы можете вставить скрипт, либо прикрепить файл с yaml-конфигурацией.

Полную информация о поддерживаемых форматах скриптов вы можете узнать в документации cloud-init.
В скриптах можно передавать параметры для настройки операционной системы и сценарии, такие как:
- Конфигурация пользователей, групп и паролей;
- Настройка сетевых параметров, DNS;
- Настройка репозиториев, настройка пакетов ПО;
- Настройка SSH, размещение ключа на сервере;
- и другие.
Примеры User Data (cloud-init)
Добавление пользователей и групп
#cloud-config
users:
- default
- name: foobar
gecos: Foo B. Bar
primary_group: foobar
groups: users
selinux_user: staff_u
expiredate: '2032-09-01'
ssh_import_id:
- lp:falcojr
- gh:TheRealFalcon
lock_passwd: false
passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/
- name: barfoo
gecos: Bar B. Foo
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
ssh_import_id:
- lp:falcojr
- gh:TheRealFalcon
lock_passwd: true
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSL7uWGj8cgWsp... csmith@fringe
- name: cloudy
gecos: Magic Cloud App Daemon User
inactive: '5'
system: true
- name: fizzbuzz
sudo: false
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSL7uWGj8cgWsp... csmith@fringe
- snapuser: joe@joeuser.io
- name: nosshlogins
ssh_redirect_user: true
Обновление пакетов
#cloud-config
package_reboot_if_required: true
package_update: true
package_upgrade: true
packages:
- pwgen
- pastebinit
- [libpython3.8, 3.8.10-0ubuntu1~20.04.2]
- snap:
- certbot
- [juju, --edge]
- [lxd, --channel=5.15/stable]
- apt: [mg]
Размещение SSH-ключа на сервере
#cloud-config
ssh_authorized_keys:
- ssh-rsa [ключ] inferit@host
- ssh-rsa [ключ] inferit2@server