Подготовка и настройка в одном процессе
Передавайте новые узлы плейбукам настройки
«Подготовка и настройка в одном процессе» — бесплатный урок Ansible Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Две задачи, один сценарий
Развёртывание создаёт сервер. Настройка делает его полезным. Настоящая сила заключается в том, чтобы плавно выполнить оба действия в одном сценарии. 🔗
Развёртывайте на управляющем узле
Задачи создания облачных ресурсов выполняются локально через API AWS, поэтому целью сценария развёртывания должен быть localhost, а не новый сервер.
- hosts: localhost
gather_facts: false
tasks:
- amazon.aws.ec2_instance: { name: web-01 }Получите данные нового узла
Нельзя подключиться по SSH к машине, о которой Вы пока ничего не знаете. Сохраните результат ec2_instance с помощью register, чтобы получить её новый публичный IP-адрес.
- amazon.aws.ec2_instance:
name: web-01
register: ec2Добавьте его в инвентарь в памяти
Модуль add_host добавляет новый сервер в текущий инвентарь, поэтому последующая часть сценария сможет обратиться к нему без статического файла.
- add_host:
name: "{{ ec2.instances[0].public_ip_address }}"
groups: launchedДождитесь готовности SSH
Запускающийся экземпляр не становится доступным мгновенно. wait_for приостанавливает выполнение, пока порт 22 не начнёт отвечать, и только после этого выполняется попытка подключения.
- wait_for:
host: "{{ ec2.instances[0].public_ip_address }}"
port: 22Начните второй сценарий
Теперь откройте новый сценарий, целью которого будет только что созданная группа launched. Этот сценарий выполняется на самом облачном сервере.
- hosts: launched
become: true
tasks:
- ping:Настройте новый узел
После добавления узла в инвентарь обычные модули берут работу на себя. Устанавливайте пакеты, копируйте конфигурации и запускайте службы так же, как на любом другом узле.
- hosts: launched
tasks:
- package:
name: nginx
state: presentПередайте правильного пользователя SSH
Облачные образы используют определённые учётные записи, например ubuntu или ec2-user. Укажите ansible_user, чтобы сценарий настройки подключился правильно.
add_host:
name: "{{ ec2.instances[0].public_ip_address }}"
groups: launched
ansible_user: ubuntuОдин файл — от начала до конца
В результате получается один плейбук: первый сценарий создаёт инфраструктуру, второй настраивает её. Запустите его один раз — и рабочий сервер будет готов.
Идемпотентность на каждом этапе
Обе части идемпотентны. При повторном запуске существующий экземпляр распознаётся, а конфигурация приводится к нужному состоянию, поэтому этот процесс безопасно повторять.
Пропустите запросы ключа хоста
У нового хоста SSH-ключ ещё неизвестен. Отключите host_key_checking для запущенной группы, чтобы первое подключение не зависло.
add_host:
name: "{{ ec2.instances[0].public_ip_address }}"
groups: launched
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"Быстрая проверка
Вы только что запустили экземпляр EC2 и хотите, чтобы следующий сценарий настроил его без статической записи в инвентаре. Что соединяет эти этапы?
Итоги
Вы связали подготовку и настройку: создали ресурсы на localhost, зарегистрировали IP, использовали add_host, дождались SSH, а затем выполнили настройку во втором сценарии. ✨
Часто задаваемые вопросы
Урок «Подготовка и настройка в одном процессе» бесплатный?
Да — полный текст урока «Подготовка и настройка в одном процессе» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подготовка и настройка в одном процессе»?
Передавайте новые узлы плейбукам настройки Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Подготовка и настройка в одном процессе»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Облачные коллекции и аутентификация
- Декларативный запуск экземпляров EC2
- Сеть: VPC, подсети и группы безопасности
- Подготовка и настройка в одном процессе