Your AI powered learning assistant

13-Ansible - Циклы – Loop, With_Items, Until, With_fileglob

Отработка циклов Ansible при многосерверном веб-развертывании Новая папка проекта, "мой веб-сайт 2", содержит XML-файл Яндекса и четыре изображения, которые необходимо развернуть на всех серверах. Перед полным развертыванием подготовлен минимальный план действий, который выполняется только для linux3. Цель состоит в том, чтобы продемонстрировать циклы, позволяющие избежать повторяющихся задач при настройке рабочего процесса развертывания.

Замена повторения циклом и переменной item Простая задача выводит "hello" для каждого имени в списке с помощью цикла и переменной reserved item. Вместо дублирования задач список содержит такие значения, как Вася, Петя и Маша, что создает отдельное сообщение для каждой записи. В Ansible 2.5 loop заменяется на_items, однако оба подхода ведут себя одинаково для этого шаблона.

Повторные попытки, задержка до тех пор, пока не будет зарегистрирован вывод в цикле оболочки Команда оболочки добавляет "Z" без перевода строки (echo -n) в my file.txt и затем показывает содержимое файла. Результат записывается с помощью register, при этом задержка: 2 и повторные попытки: 10 контрольных шагов и максимальное количество попыток. Цикл продолжается до тех пор, пока выходные данные не будут содержать четыре символа Z; при выполнении условия выполнение останавливается. Для подтверждения содержимого файла выводится окончательный стандартный вывод.

Установка множества пакетов в рамках одной задачи с использованием циклов Циклы также упрощают установку пакетов с помощью yum или apt, перечисляя несколько пакетов в рамках одной задачи. Использование состояния "установлено" (или "присутствует") позволяет избежать повторяющихся задач, когда требуется несколько библиотек или инструментов. Благодаря этому шаблону playbooks становятся лаконичными и масштабируемыми.

Рефакторинг развертывания с использованием специфичных для ОС обработчиков и настройки Apache Приложение playbook пересмотрено для развертывания всего каталога веб-сайтов при обработке установки и запуска Apache для каждого дистрибутива. Отдельные обработчики перезапускают соответствующую службу в системах на базе Red Hat и Debian, и обе службы могут получать уведомления, пока условия гарантируют запуск только правильной службы. Удаление дублированных блоков упрощает работу: установите Apache, запустите его, скопируйте содержимое и запустите перезапуск только при изменении файлов.

Копирование выбранных веб-файлов с циклическим запуском и перезапуском после внесения изменений Переменные source_folder и destination_folder определяют, откуда берутся файлы и куда они отправляются. Модуль копирования работает в цикле над конкретными элементами — HTML и четырьмя изображениями, поэтому обновляются только измененные файлы. Когда происходят изменения, оба обработчика получают уведомление, и соответствующий из них перезапускает правильную веб-службу. При проверке отображается обновленная страница, отправленная из целевых объектов.

Копирование всего каталога с помощью шаблона fileglob Вместо перечисления файлов в цикле используется шаблон fileglob, такой как source_folder/*, для копирования всего из исходного файла. Этот подход короче и безопаснее, когда задействовано много файлов. При повторном запуске передаются только отсутствующие или измененные файлы, и соответствующий обработчик перезапускает службу там, где это необходимо.

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