Перейти к основному содержимому
User data
Последнее изменение:

User data

User data — пользовательские параметры конфигурации операционной системы сервера. Описываются в виде скриптов в формате cloud-config (текстовые файлы с YAML-синтаксисом) или как bash-скрипт. Скрипты автоматически кодируются в Base64, передаются на сервер и выполняются с помощью агента cloud-init при первом запуске операционной системы. Использование user data помогает автоматизировать настройку серверов.

Указать user data можно на этапе установки операционной системы.

Подробнее о форматах скриптов cloud-config и bash в инструкции User data formats документации cloud-init.

В скриптах можно передавать как отдельные параметры конфигурации операционной системы, так и целые последовательности параметров. Например:

Посмотрите другие примеры в инструкции Cloud config examples документации cloud-init.

Указать user data​

Указать user data можно только при установке ОС Linux автоустановкой. Текст скрипта добавляется в поле User data.

После завершения автоматической установки текст в поле User data изменить нельзя.

Максимальный размер скрипта с данными, которые не закодированы в Base64, — 16 КБ.

Примеры user data

Установить часовой пояс

Пример скрипта для установки часового пояса Europe/Moscow:

#cloud-config

timezone: Europe/Moscow

Создать каталог и загрузить в него файлы

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

#cloud-config

runcmd:
- mkdir /run/newdir
- [ wget, "http://example.com", -O, /run/newdir/index.html ]

Обновить репозитории и установить пакеты

Пример скрипта для установки pwgen и pastebinit:

#cloud-config

package_update: true
packages:
- pwgen
- pastebinit

Разместить SSH-ключ на сервере

Пример скрипта:

#cloud-config

ssh_authorized_keys:
- ssh-rsa AAAAB3N…V7NZ user1@host
- ssh-rsa AAAAB3N…NtHw== user2@server

Настроить файл конфигурации

Пример скрипта для преобразователя доменных имен 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

Отключить доступ в интернет

Пример скрипта:

#!/bin/bash
ip addr show
public_interface=$(ip -4 addr show | awk '/inet/ && !/127.0.0.1/ && !/192\.0\.2\.0/ && !/10\./ && !/198\.(1[6-9]|2[0-9]|3[0-1])\./ && !/192\.168\./ {print $NF}')
if [ -n "$public_interface" ]; then
ip link set down dev "$public_interface"
else
echo "Public interface not found."
fi