Cloud-init#

Cloud-init — это инструмент для настройки облачного сервера, который позволяет передать пользовательские параметры (user-data) при запуске виртуальной машины. Это позволяет ускорить и автоматизировать процесс настройки серверов.

Дополнительно с работой и настройкой cloud-init можно ознакомиться на сайте с официальной документацией.

Сценарии cloud-init#

С помощью cloud-init вы можете настроить конфигурацию сервера, установить нужное ПО, создать пользователей и каталоги, назначить права доступа.

Сценарии cloud-init можно использовать при развёртывании инфраструктуры с помощью Terraform.

Форматы#

Настройки cloud-init могут быть описаны декларативно в формате YAML или императивно в виде сценариев оболочки (Shell-скриптов).

Содержимое файла интерпретируется в зависимости от заголовка:

  • YAML:

    #cloud-config
    
  • сценарий оболочки:

    #!/bin/sh
    

Создание пользователя#

Пример создания пользователя со следующими свойствами:

  • имя – administrator;

  • использование механизма sudo без ввода пароля;

  • аутентификация по SSH с помощью ключа;

  • высокий уровень целостности;

  • интерпретатор Bash в качестве оболочки командной строки.

#cloud-config
users:
  - name: administrator
    groups: astra-admin
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    parsec_user_max_ilev: high
    ssh-authorized-keys:
      - ssh-ed25519 AAAAC3....zvNm administrator@example.com
      - ssh-rsa AAAAB3....8Vc= administrator@example.com

Здесь:

  • name – имя пользователя.

  • groups – список дополнительных групп, в которые должен быть включен пользователь.

  • parsec_user_max_ilev – уровень целостности.

  • ssh-authorized-keys – публичные ключи SSH, которые можно будет использовать для доступа к ВМ.

Важно

Для администрирования системы необходимо, чтобы пользователь был членом группы astra-admin и имел высокий уровень целостности.

Инструкции по работе с пользователями доступны в разделе Управление пользователями.

Измененение размера диска#

Чтобы увеличить размер диска, используемого в libvirt, добавьте в настройки cloud-init следующие параметры:

#cloud-config

growpart:
  mode: auto
  devices: ['/']

Размер файловой системы будет увеличен до целевого размера диска.

Выполнение команд#

В данном примере при первом запуске ВМ выполняется обновление ОС:

#cloud-config

runcmd:
  apt-get update
  apt-get -y upgrade

Установка пакетов#

Установка пакетов при первом запуске ВМ:

#cloud-config

package_update: true
packages:
  - nginx
  - ntp