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