User data
User data — пользовательские параметры конфигурации операционной системы сервера. Описываются в виде скриптов в формате cloud-config (текстовые файлы с YAML-синтаксисом) или как bash-скрипт. Скрипты автоматически кодируются в Base64, передаются на сервер и выполняются с помощью агента cloud-init при первом запуске операционной системы. Использование user data помогает автоматизировать настройку серверов.
Указать user data можно на этапе установки операционной системы.
Подробнее о форматах скриптов cloud-config и bash в инструкции User data formats документации cloud-init.
В скриптах можно передавать как отдельные параметры конфигурации операционной системы, так и целые последовательности параметров. Например:
- установить часовой пояс;
- создать каталог и загрузить в него файлы;
- обновить репозитории и установить пакеты;
- разместить SSH-ключ на сервере;
- настроить файл конфигурации преобразователя доменных имен resolv.conf.
Посмотрите другие примеры в инструкции Cloud config examples документации cloud-init.
Указать user data
Указать user data можно только при установке ОС Linux автоустановкой. Текст скрипта добавляется в поле User data.
После завершения автоматической установки текст в поле User data изменить нельзя.
Максимальный размер скрипта с данными, которые не закодированы в Base64, — 16 КБ.
Примеры user data
Установить часовой пояс
Cloud-config
Bash-скрипт
Пример скрипта для установки часового пояса Europe/Moscow:
#cloud-config
timezone: Europe/Moscow
Пример скрипта для установки часового пояса Europe/Moscow:
#!/bin/bash
timedatectl set-timezone Europe/Moscow
Создать каталог и загрузить в него файлы
Cloud-config
Bash-скрипт
Пример скрипта для создания каталога и загрузки в него файла по сети:
#cloud-config
runcmd:
- mkdir /run/newdir
- [ wget, "http://example.com", -O, /run/newdir/index.html ]
Пример скрипта для создания каталога и загрузки в него файла по сети:
#!/bin/bash
mkdir /run/newdir
wget http://example.com -O /run/newdir/index.html
Обновить репозитории и установить пакеты
Cloud-config
Bash-скрипт
Пример скрипта для установки pwgen и pastebinit:
#cloud-config
package_update: true
packages:
- pwgen
- pastebinit
Пример скрипта для установки pwgen и pastebinit:
#!/bin/bash
apt update
apt install pwgen pastebinit
Разместить SSH-ключ на сервере
Cloud-config
Bash-скрипт
Пример скрипта:
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3N…V7NZ user1@host
- ssh-rsa AAAAB3N…NtHw== user2@server
Пример скрипта:
#!/bin/bash
echo "ssh-rsa AAAAB3N…V7NZ user1@host" >> /root/.ssh/authorized_keys
echo "sssh-rsa AAAAB3N…NtHw== user2@server" >> /root/.ssh/authorized_keys
Настроить файл конфигурации
Cloud-config
Bash-скрипт
Пример скрипта для преобразователя доменных имен resolv.conf:
#cloud-config
manage_resolv_conf: true
resolv_conf:
nameservers: ['4.4.4.4', '8.8.8.8']
searchdomains:
- foo.example.com
- bar.example.com
domain: example.com
options:
rotate: true
timeout: 1
Пример скрипта для преобразователя доменных имен resolv.conf:
#!/bin/bash
cat <<EOF > /etc/resolv.conf
domain example.com
nameserver 4.4.4.4
nameserver 8.8.8.8
search foo.example.com bar.example.com
options rotate
options timeout:1
EOF