Thank you for reading this post, don't forget to subscribe!
Ansible – это современный инструмент управления конфигурацией. Для связи и выполнения команд на управляемых серверах (нодах) он использует только SSH и Python – то есть вам не нужно устанавливать агентское программное обеспечение на удаленные ноды.
Процесс автоматизации настройки сервера иногда требует повторить выполнение одной и той же задачи с разными значениями. Например, вам может потребоваться изменить права доступа к нескольким файлам или создать нескольких новых пользователей. Для этого лучше не писать саму задачу в плейбуке несколько раз, а использовать циклы.
В программировании цикл позволяет повторять инструкции; как правило, он делает это до тех пор, пока не будет выполнено определенное условие. Ansible предлагает различные методы для создания цикла, при этом ключевое слово loop является наиболее рекомендуемым вариантом (поскольку он обеспечивает долгосрочную совместимость).
В следующем примере мы создаем в папке /tmp три разных файла. Модуль file используется в задаче, которая реализует цикл при помощи трех разных значений.
Создайте новый файл playbook-06.yml
1 2 3 4 5 6 7 8 9 10 11 |
--- - hosts: all tasks: - name: creates users files file: path: /tmp/ansible-{{ item }} state: touch loop: - test - erika - brian |
Сохраните и закройте файл.
Затем запустите ansible-playbook с теми же аргументами подключения, что вы использовали в этой серии ранее (мы, как всегда, используем инвентарь по имени inventory и пользователя user-ansible , но вам следует соответствующим образом изменить эти значения):
ansible-playbook -i inventory playbook-06.yml -u user-ansible
Вы получите следующий результат; он показывает значение каждого отдельного элемента, использованного в цикле:
1 2 3 4 5 6 |
... TASK [creates users files] ****************************************************************************** changed: [203.0.113.10] => (item=test) changed: [203.0.113.10] => (item=erika) changed: [203.0.113.10] => (item=brian) ... |