Виртуализация

Что такое cloud-init?

Определение

cloud-init is the standard mechanism for configuring a virtual machine on first boot, using metadata supplied by the platform. It handles SSH key injection, hostname, network configuration and arbitrary user scripts, which is what makes fully automated provisioning possible.

Почему cloud-init важен

Он обрабатывает внедрение SSH-ключей, имя хоста, сетевую конфигурацию и произвольные пользовательские скрипты, что и делает возможной полностью автоматизированную подготовку.

cloud-init на практике

При свежей загрузке cloud-init запускается до старта ваших сервисов. Вы бы наблюдали за консолью на предмет «running modules» и проверяли /var/log/cloud-init-output.log. Неправильно настроенный сценарий user-data может зависеть при загрузке или оставить SSH заблокированным. Сначала вы бы протестировали на одноразовом инстансе. Вы можете перезапустить с помощью 'cloud-init clean' и перезагрузиться. Ошибка стоит вам времени на повторное предоставление из панели или сессию VNC для ручного исправления.

Что люди часто понимают неправильно в отношении cloud-init

Распространенная ошибка — думать, что cloud-init выполняется при каждой загрузке. Он выполняется один раз при первой загрузке. Если вы добавите скрипт в user-data, ожидая, что он применится при перезагрузке, этого не произойдет. Исправление: используйте его только для первоначальной настройки или явно вызывайте 'cloud-init clean' для сброса состояния перед новым запуском.

cloud-init — частые вопросы

Как передать user-data в cloud-init?

При создании инстанса из панели или через API вы можете указать поле user-data. Оно внедряется через метаданные, и cloud-init применяет его при первой загрузке. Используйте его как shell-скрипт или cloud-config в формате YAML, в зависимости от ваших нужд.

Можно ли использовать cloud-init с собственным ISO?

Да, если в ISO установлен cloud-init. Например, облачные образы основных дистрибутивов включают его. Вы также можете загрузить свой образ с cloud-init. Убедитесь, что инстанс — KVM, а не контейнер, так как cloud-init полагается на метаданные платформы.

Больше из раздела «виртуализация»

KVM
KVM — это полная аппаратная виртуализация, встроенная в ядро Linux, предоставляющая каждому гостю собственное ядро и аппаратно-обеспеченную изоляцию от других арендаторов.
OpenVZ
OpenVZ — это контейнерная виртуализация, в которой каждый экземпляр разделяет ядро хоста, поэтому гости не могут загружать модули ядра или запускать другую операционную систему.
LXC
LXC — это нативная контейнеризация Linux, которая изолирует процессы с помощью namespace и cgroups, разделяя ядро хоста.
Гипервизор
Гипервизор — это программный слой, который создаёт и запускает виртуальные машины, распределяя между ними физические CPU, память и ввод-вывод.
Nested virtualisation
Вложенная виртуализация позволяет виртуальной машине самой запускать виртуальные машины, предоставляя гостю расширения виртуализации процессора.
vCPU
vCPU — это виртуальный процессор, предоставляемый гостевой системе, поддерживаемый временем планирования на физическом ядре или потоке.