Создавать виртуальную машину скучно. Создание сотен занимает много времени. cloud-init позволяет автоматизировать создание виртуальных машин в Microsoft Azure.
Если вы когда-либо устанавливали виртуальную машину, вы знаете, как она работает. Вы щелкаете здесь и там, щелкаете еще немного, и, в конце концов, у вас есть настроенная система. Но тогда вам все равно придется установить программное обеспечение и настроить виртуальную машину по своему усмотрению.
Теперь представьте, что вы хотите настроить сотни виртуальных машин. Щелчок по пути установки не так эффективен. Вместо этого вам нужно максимально автоматизировать процесс, и здесь на помощь приходит cloud-init.
Давайте посмотрим, как можно автоматизировать установку ОС и настройку виртуальной машины с помощью cloud-init в Microsoft Azure.
Зачем использовать cloud-init для автоматизации создания виртуальных машин?
cloud-init — это мощный инструмент автоматизации развертывания, разработанный Canonical, компанией, стоящей за Ubuntu.
С помощью cloud-init вы можете устанавливать и развертывать операционные системы Linux и настраивать другие аспекты виртуальной машины. Например, вы можете использовать cloud-init для настройки учетных записей пользователей, установки и настройки программного обеспечения, добавления ключей SSH и так далее.
В настоящее время большинство поставщиков облачных услуг, таких как Azure, Linode и Amazon Web Services (AWS), поддерживают cloud-init.
Несмотря на то, что cloud-init зародился в Ubuntu, теперь он поддерживает все основные дистрибутивы Linux, такие как openSUSE, Debian, Red Hat Enterprise Linux (RHEL) и т. д.
Помимо развертывания программного обеспечения в облаке, вы также можете использовать cloud-init для настройки и установки программного обеспечения на локальных серверах или в виртуальных средах, таких как VirtualBox, KVM и VMware.
Мы будем использовать облачную платформу Microsoft Azure для автоматизации развертывания сервера Ubuntu с помощью cloud-init.
Шаг 1. Создание сценария cloud-init
Сценарии cloud-init используют модули для настройки различных аспектов вашей системы. Например, вы будете использовать пользователи модуль для настройки информации о пользователях и учетных записях, а также проволока модуль для настройки WireGuard и др. Есть множество других модулей, которые вы можете использовать из коробки.
Давайте создадим сценарий cloud-init, чтобы автоматизировать большинство действий, которые вы настраиваете при настройке новой виртуальной машины.
Мы создадим пользователя с именем «mwiza» и назначим ему пароль. Для простоты давайте использовать простой текстовый пароль, но вы можете зашифровать его, если хотите. Кроме того, добавьте SSH-ключ пользователя в авторизованные ключи. Это позволяет позже отключить вход по паролю SSH для большей безопасности.
Помимо создания нового пользователя, скрипт должен сделать следующее:
- Запись файла: Создайте простой файл и запишите в него содержимое с помощью write_files модуль. Файл будет помещен в домашнюю директорию. Вы можете использовать те же концепции для создания более сложных файлов в будущем.
- Запуск команд: Мы запустим простые команды для настройки брандмауэра UFW, но это может быть и любая другая команда Linux. Используйте запуститьcmd модуль для запуска любой команды на ваш выбор; это похоже на запуск команд Linux с помощью выполнение Bash-скриптов.
- Настройка локалей: Это устанавливает ваши предпочтительные локали, такие как раскладка клавиатуры, предпочтительный язык, часовой пояс и т. д.
- Установить пакеты: Используйте свой любимый менеджер пакетов для установки пакетов в вашей системе. Например, в системах на основе Debian вы можете использовать APT.
Это лишь некоторые из модулей, которые вы можете использовать из cloud-init; есть несколько других модулей для автоматизации всевозможных вещей.
Вот полный скрипт cloud-init для настройки новой учетной записи пользователя. Не забудьте заменить ключ SSH на правильный. Кроме того, не стесняйтесь менять имя пользователя и любые другие данные.
vim: синтаксис = yaml
# Добавьте сюда системных пользователей
пользователи:
- имя: Мвиза
группы: пользователи, sudo
оболочка: /bin/bash
gecos: мвиза
plain_text_passwd: Живи-смейся-люби12345G123
lock_passwd: ложь
ssh_authorized_keys:
- ssh-ed25519 BSHSDSDS3NzaC1sdfSDGSDSDJ1KSDB: PWELJWEEWeKBrkXWbLJBs; ldfkagfafkC6li71Ra6i+NKkajdfi [email protected]# Устанавливайте, обновляйте и обновляйте пакеты
package_upgrade: правда
пакет_обновление: правда
package_reboot_if_require: правдапакеты:
- трассировка
- сетевые инструменты
- фейл2бан# Установить локали
локаль: en_UK
часовой пояс: Etc/UTC
клавиатура:
макет: NBзаписи_файлы:
- путь: /etc/salt/minion.d/master_ip_port.conf
содержание: |
мастер: соль
master_port: 4506
порт_публикации: 4505
- путь: /home/mwiza/cloud-init.txt
содержание: |
создано cloud-init в лазури# Запуск команд Bash для настройки программного обеспечения и служб
выполнить команду:
- включить УФВ
- ufw разрешить ssh
- уфв разрешит 80
- systemctl включить ufw
# Выключите виртуальную машину после завершения инициализации
выключение: выключение
Сценарий cloud-init использует YAML, поэтому убедитесь, что отступ правильный, иначе он не будет работать должным образом.
Шаг 2: Создание ресурса виртуальной машины
Следующим шагом будет создание необходимого ресурса в Azure для виртуальной машины. Войдите в Azure, если у вас уже есть учетная запись, или создайте бесплатную пробную учетную запись, перейдя на azure.microsoft.com.
На домашней странице портала Azure щелкните значок Создать ресурс кнопка. Из списка самых популярных служб Azure выберите Виртуальная машина.
На следующей странице представлена информация о создании ресурсов виртуальной машины, таких как жесткий диск, сеть и т. д.
Дайте вашей виртуальной машине осмысленное имя и выберите регион развертывания. Кроме того, создайте группу ресурсов для своей виртуальной машины или используйте существующую.
Под Аутентификация тип, выберите Пароль вариант и укажите свое имя пользователя и надежный пароль.
После того, как вы заполните все поля на этой странице, ваши данные должны выглядеть примерно так, как показано ниже.
Шаг 3. Добавление сценария cloud-init
Далее нажмите на Передовой вкладку, чтобы добавить скрипт cloud-init. Скопируйте и вставьте сценарий cloud-init из первого шага в поле настраиваемых данных.
Наконец, нажмите на Проверить + создать кнопка. Если все в порядке, тест будет пройден. В противном случае создатель виртуальной машины Azure поможет вам внести исправления.
Шаг 4: Вход в вашу виртуальную машину
Используйте обзорную информацию о виртуальной машине, чтобы получить общедоступный IP-адрес вашей виртуальной машины и войти через SSH. Если вы использовали правильный SSH-ключ, система не предложит вам ввести пароль пользователя.
После входа в систему вы можете проверить наличие файлов, которые вы хотели создать с помощью скрипта. Также, искать установленные пакеты с APT и проверьте правильность настройки брандмауэра с помощью статус sudo ufw команда.
cloud-init также регистрирует важную информацию в /var/log/cloud-init.log файл. Он содержит подробные сообщения обо всех событиях, произошедших во время инициализации cloud-init. Вы можете проверить этот файл с помощью команды cat следующим образом:
кот /var/log/cloud-init.log
Автоматизируйте создание виртуальной машины с помощью cloud-init
cloud-init — мощный инструмент, помогающий автоматизировать установку и настройку Linux. Вы можете использовать его в облаке и на локальных серверах. Хотите ли вы просто автоматизировать развертывание виртуальной машины или вам нужно развернуть серверы Linux в больших масштабах, cloud-init — отличный выбор.
В связи с этим всегда защищайте свои логины SSH для ваших облачных виртуальных машин, чтобы избежать нарушений безопасности.