
Внутри каждого шаблона для виртуальной машины в K2 Cloud установлен cloud-init. Это великолепный инструмент для автоматизации рутинных операций в процессе начального запуска вашей виртуальной машины. В этой статье я расскажу, как автоматизировать установку имени сервера (hostname).
В каждом публичном Облаке (AWS, GCP, Azure) или частном Облаке (OpenStack или CloudStack) есть так называемый сервис метаданных. Задача этого сервиса предоставлять виртуальной машине информацию об окружении, в котором она запущена. Эта информация обычно как минимум содержит в себе:
Сервис метаданных для большинства облачных платформ доступен из виртуальной машины по адресу , получать информацию от которого очень удобно при помощи утилиты curl. Чтобы посмотреть список доступной вам информации, предоставляемой этим сервисом, выполните команду внутри вашей виртуальной машины, запущенной в Облаке:
curl http://169.254.169.254/latest/meta-data/
Например, ваша виртуальная машина может самостоятельно узнать собственный hostname следующим образом:
curl http://169.254.169.254/latest/meta-data/hostname
Cloud-init в свою очередь представляет собой набор скриптов, поддерживаемых сообществом в актуальном состоянии, который настраивает вашу виртуальную машину на основании информации из сервиса метаданных.
У сервиса метаданных есть одно интересное поле, которое может быть изменено в любой момент жизненного цикла виртуальной машины — «пользовательские данные» (user-data), доступное внутри виртуальной машины по адресу:
curl http://169.254.169.254/latest/user-data
Пользовательские данные сервиса метаданных используются для всевозможной автоматизации ваших шаблонов, например, автоматическая установка в процессе запуска необходимого ПО, задания имени сервера, установка и запуск ПО управления изменениями в конфигурации, т.к. Chef, Puppet или Ansible и т.д.
Сloud-init работает следующим образом: он читает данные настроек «Пользовательских данных» и, если они заданы в формате, который понимает cloud-init, то он может выполнять действия описанные в пользовательских данных, игнорируя настройки сервиса метаданных.
Простейший пример «Пользовательских данных» — это задание имени хоста при загрузке виртуальной машины. Для этого в процессе создания виртуальной машины задайте «Пользовательские данные» следующим образом:
#cloud-config
hostname: node-3
fqdn: node-3.vol.avmaksimov.ru
manage_etc_hosts: true
Описание настроек: