Пользовательские метаданные
Пользовательские метаданные передаются в ключе attributes.
Они включают дополнительные метки и атрибуты для инвентаризации и классификации ВМ: например, environment:prod, role:dbserver и т.п.
Особую роль играет атрибут attributes/user-data, в котором передаются скрипты для настройки ВМ при первом запуске.
Просматривать, добавлять и удалять пользовательские метаданные можно как через веб-консоль, так и через API.
Операции с пользовательскими метаданными
Просмотреть метаданные ВМ
Добавить, изменить, удалить метаданные
Работа с cloud-init
Скрипт cloud-init предназначен для первичной настройки ВМ. С его помощью можно:
- добавить на ВМ SSH-ключи;
- создать пользователей и добавить их в группы;
- настроить на ВМ локаль и часовой пояс;
- установить пакеты;
- создать конфигурационные файлы;
- запустить сервисы.
Скрипт может иметь формат cloud-config или bash. Он передается в атрибуте user-data.
Скрипт cloud-init можно передавать в метаданных как через веб-консоль, так и через API.
При создании ВМ через веб-консоль скрипт создается автоматически на этапе добавления SSH-ключа.
Особенности и ограничения
- Скрипт
cloud-initможно запустить только один раз — при создании ВМ. - Скрипт
cloud-initвыполняется от имени пользователяroot, поэтому в командах не нужно использоватьsudo. - Все создаваемые во время выполнения скрипта директории и файлы будут принадлежать пользователю
root. Если нужно, чтобы доступ к этим директориям и файлам имели другие пользователи, создайте их и предоставьте необходимые права. - Команды, требующие подтверждения от пользователя, нужно использовать с опцией
-y(например,apt install -y docker.io). - Нельзя использовать имя пользователя
adminилиrootпри добавлении SSH-ключа пользователя. Использование таких имен приведет к ошибке при выполнении командыuseraddна ВМ.
Примеры скриптов
Добавить пользователя и SSH-ключ на ВМ
#cloud-config
users:
- name: <имя пользователя, кроме admin и root>
groups: sudo
shell: /bin/bash
sudo: 'ALL=(ALL) NOPASSWD:ALL'
ssh-authorized-keys:
- <SSH-ключ>2
3
4
5
6
7
8
Установить на ВМ пакеты
#cloud-config
packages:
- nginx
- mysql-server
- php2
3
4
5
Выполнить команду после создания ВМ
#cloud-config
runcmd:
- mkdir ~/new-folder/2
3
Установить и запустить сервис
#cloud-config
packages:
- docker.io
runcmd:
- systemctl enable docker
- systemctl start docker2
3
4
5
6