Пользовательские метаданные
Пользовательские метаданные передаются в ключе 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).При добавлении SSH-ключа нужно составлять имя пользователя по следующим правилам:
- Имя должно начинаться со строчной латинской буквы или символа подчеркивания.
- Имя может содержать строчные латинские буквы, цифры, символы подчеркивания и дефисы.
- Имя может заканчиваться строчной латинской буквой, цифрой, символом подчеркивания, дефисом или значком доллара.
- Максимальная длина — 32 символа.
Правила валидации имен пользователей различаются в разных операционных системах. Если имя не соответствует требованиям операционной системы, виртуальная машина будет создана, а пользователь — нет, и подключиться к виртуальной машине от его имени не получится.
Примеры скриптов
Добавить пользователя и 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