Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
37fb80c5-86c9-46d6-b683-0a5c8bf0c098
Серверы

Сценарии cloud-init

Cloud-init — это инструмент для настройки облачного сервера, который позволяет передать пользовательские параметры (user-data) при запуске виртуальной машины и тем самым ускорить и автоматизировать процесс настройки серверов.

С помощью cloud-init вы можете настроить конфигурацию сервера, установить нужное ПО, создать нужные директории и пользователей и назначить им права — и многое другое. 

Сценарии cloud-init также можно передавать через Terraform, а в ближайшее время реализуем и передачу через CLI.

Форматы

Сценарии cloud-init можно передавать в виде текстовых файлов #cloud-config или shell-скриптов #!/bin/sh.

При использовании shell-скриптов необходимо учитывать следующее:

  • shell-скрипт будет автоматически преобразован в cloud-config с директивой runcmd;
  • runcmd выполняется однократно, поэтому после изменения скрипта и перезагрузки VDS скрипт не будет выполнен.

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

Особенности

  • Сценарии выполняются от root, поэтому в командах не требуется указывать sudo
  • Все созданные файлы и директории будут принадлежать пользователю root, поэтому если необходимо, чтобы доступ к ним имел иной пользователь, задайте в сценарии соответствующие права для него.
  • Так как сценарий выполняется полностью автоматически, в нем не получится использоваться команды, запрашивающие действия от пользователя. Для команд, требующих подтверждения в процессе выполнения, используйте ключ -y (например, apt upgrade -y).
  • Лог выполнения сценария записывается в файл /var/log/cloud-init-output.log.
  • На Ubuntu cloud-init по умолчанию создаст пользователя ubuntu, если нет инструкции users. Если создание пользователей не требуется, рекомендуется указать запись вида:
    

Загрузка сценария

Загрузить сценарий cloud-init можно:

  • На этапе создания сервера. Заданные параметры будут применены при установке.

081449bf 55b6 44d0 Bd74 578830f3efef

  • При переустановке сервера. Заданные параметры будут применены при установке.

Без Названия (1)

  • После создания сервера, в разделе «Конфигурация». Чтобы заданные параметры были применены при следующей перезагрузке, необходимо перезагрузить систему командой: cloud-init clean --reboot.

E5d9634a 23f5 491b B45f 60f3be14d878

Редактирование сценария

Вы можете изменять уже загруженный скрипт cloud-init в настройках сервера.

Чтобы заданные параметры были применены при следующей перезагрузке, необходимо перезагрузить систему командой: cloud-init clean --reboot.

  1. Перейдите на вкладку «Конфигурация».
  2. Кликните «Редактировать» в блоке «Cloud-init».
  3. Внесите изменения и сохраните их.

E5d9634a 23f5 491b B45f 60f3be14d878

Сценарий будет применен при следующей перезагрузке сервера. 

Примеры shell-скриптов

Скрипт обязательно должен начинаться с #!/bin/sh.

Установка пакетов

С помощью скрипта ниже установим fail2ban:

    

Установка LAMP на CentOS

    

Примеры cloud-config

Файл обязательно должен начинаться с  #cloud-config.

Установка пакетов

    

Создание пользователей

    

При создании пользователя через cloud-init пропадет возможность авторизации под пользователем root с использованием пароля. Это происходит из-за того, что ваш user-data перезаписывает настройки, заданные vendor-data.

Если вам нужна авторизация под root с паролем, используйте директиву chpasswd и явно задайте пароль:

    

В этом случае пароль root, отображаемый в панели управления, больше не будет актуален. Однако при смене пароля через панель управления он обновится корректно.

Если авторизация по паролю вам не нужна, используйте SSH-ключи.

Добавление SSH-ключей

    

Можно добавить несколько ключей сразу:

    

Создание пользователя с правами sudo, добавление SSH-ключей и настройка оболочки bash

    

Установка LAMP на Ubuntu

    

После завершения настройки при переходе по адресу http://ip_адрес_сервера/phpinfo.php отобразится страница с параметрами PHP.

Больше примеров можно найти в документации cloud-init.

Была ли статья полезна?
Ваша оценка очень важна