Перейти к содержимому

Пользовательские метаданные

Пользовательские метаданные передаются в ключе attributes.

Они включают дополнительные метки и атрибуты для инвентаризации и классификации ВМ: например, environment:prod, role:dbserver и т.п.

Особую роль играет атрибут attributes/user-data, в котором передаются скрипты для настройки ВМ при первом запуске.

Просматривать, добавлять и удалять пользовательские метаданные можно как через веб-консоль, так и через API.

Операции с пользовательскими метаданными

Заголовок раздела «Операции с пользовательскими метаданными»
  • Веб-консоль
  • API
  1. В веб-консоли выберите нужный проект.

  2. В списке сервисов выберите ComputeВиртуальные машины и выберите нужную ВМ.

  3. Перейдите на вкладку Метаданные. На ней отображаются:

    • содержимое скрипта cloud-init;
    • добавленные на ВМ SSH-ключи;
    • все дополнительные пользовательские метаданные, назначенные ВМ.
  • Веб-консоль
  • API
  1. В веб-консоли выберите нужный проект.

  2. В списке сервисов выберите ComputeВиртуальные машины и выберите нужную ВМ.

  3. Перейдите на вкладку Метаданные и нажмите кнопку Редактировать метаданные.

  4. Чтобы добавить новые метаданные:

    4.1. Нажмите кнопку Добавить ключ-значение.

    4.2. Введите ключи и значения новых метаданных.

    4.3. Нажмите кнопку Сохранить.

  5. Чтобы изменить существующие метаданные, отредактируйте значения соответствующих ключей и нажмите кнопку Сохранить.

  6. Чтобы удалить элемент метаданных, нажмите на значок удаления для удаляемого элемента.

Скрипт 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 символа.
    • Нельзя использовать имена admin или root — это приведет к ошибке.

    Правила валидации имен пользователей различаются в разных операционных системах. Если имя не соответствует требованиям операционной системы, виртуальная машина будет создана, а пользователь — нет, и подключиться к виртуальной машине от его имени не получится.

yaml
#cloud-config
users:
- name: <имя пользователя, кроме admin и root>
groups: sudo
shell: /bin/bash
sudo: 'ALL=(ALL) NOPASSWD:ALL'
ssh-authorized-keys:
- <SSH-ключ>
yaml
#cloud-config
packages:
- nginx
- mysql-server
- php
yaml
#cloud-config
runcmd:
- mkdir ~/new-folder/
yaml
#cloud-config
packages:
- docker.io
runcmd:
- systemctl enable docker
- systemctl start docker