Долго ждать, пока плейбук отработает на десятках серверов — та ещё боль. Но Ansible можно ускорить, если правильно его настроить. Ловите 5 простых способов для новичка, которые действительно сработают:
1.Используйте serial для пошагового развертывания
Если у вас много серверов, выполните плейбук не на всех сразу, а по группам. Добавьте в задачи параметр:
- hosts: all
serial: 10
Таким образом, задачи будут выполняться на 10 серверах одновременно, а остальные начнут выполняться после завершения первой группы. Это снижает нагрузку на сеть и серверы.
2.Оптимизируйте модули
Используйте специализированные модули вместо общих command или shell. Например, для установки пакетов — apt или yum.
- name: Установить nginx
ansible.builtin.apt:
name: nginx
state: present
Они автоматически обрабатывают ошибки и не требуют проверки состояния вручную.
3.Отключите сбор фактов, если он не нужен
По умолчанию Ansible собирает факты о каждом сервере перед выполнением плейбука, что занимает некоторое время. Если вам не нужны эти факты, отключите их:
- hosts: all
gather_facts: no
Или соберите их один раз и используйте повторно.
4.Уменьшите количество задач
Иногда задачи можно объединить. Например, вместо многократного вызова установки пакетов объедините их в список:
- name: Установить несколько пакетов
ansible.builtin.apt:
name:
- nginx
- curl
- git
state: present
Это сокращает общее время выполнения.
5.Кэшируйте данные
Чтобы Ansible не собирал одни и те же факты каждый раз, включите кэширование:
gather_facts: yes
fact_caching: jsonfile
fact_caching_connection: /tmp/ansible_facts
Это сократит количество повторных выполнений идентичных задач.
Пробуйте эти рекомендации, и ваши плейбуки начнут работать быстрее. Время выполнения плейбуков Ansible зависит от множества конфигурационных параметров, оптимальные значения которых определяются спецификой конкретной ИТ-среды и применяемых в ней автоматизаций.
Мы показали только 5 базовых шагов, всё остальное — на курсе «Ansible: Infrastructure as Code».
1.Используйте serial для пошагового развертывания
Если у вас много серверов, выполните плейбук не на всех сразу, а по группам. Добавьте в задачи параметр:
- hosts: all
serial: 10
Таким образом, задачи будут выполняться на 10 серверах одновременно, а остальные начнут выполняться после завершения первой группы. Это снижает нагрузку на сеть и серверы.
2.Оптимизируйте модули
Используйте специализированные модули вместо общих command или shell. Например, для установки пакетов — apt или yum.
- name: Установить nginx
ansible.builtin.apt:
name: nginx
state: present
Они автоматически обрабатывают ошибки и не требуют проверки состояния вручную.
3.Отключите сбор фактов, если он не нужен
По умолчанию Ansible собирает факты о каждом сервере перед выполнением плейбука, что занимает некоторое время. Если вам не нужны эти факты, отключите их:
- hosts: all
gather_facts: no
Или соберите их один раз и используйте повторно.
4.Уменьшите количество задач
Иногда задачи можно объединить. Например, вместо многократного вызова установки пакетов объедините их в список:
- name: Установить несколько пакетов
ansible.builtin.apt:
name:
- nginx
- curl
- git
state: present
Это сокращает общее время выполнения.
5.Кэшируйте данные
Чтобы Ansible не собирал одни и те же факты каждый раз, включите кэширование:
gather_facts: yes
fact_caching: jsonfile
fact_caching_connection: /tmp/ansible_facts
Это сократит количество повторных выполнений идентичных задач.
Пробуйте эти рекомендации, и ваши плейбуки начнут работать быстрее. Время выполнения плейбуков Ansible зависит от множества конфигурационных параметров, оптимальные значения которых определяются спецификой конкретной ИТ-среды и применяемых в ней автоматизаций.
Мы показали только 5 базовых шагов, всё остальное — на курсе «Ansible: Infrastructure as Code».