Назад | Перейти на главную страницу

Возможно ли асинхронно запускать роли, определенные в site.yml, в Ansible, не открывая тысячи терминалов?

На данный момент в site.yml определено несколько ролей:

- include: role1.yml
- include: role2.yml
- include: role3.yml
- include: role4.yml
- include: role5.yml

и они запускаются синхронно путем выдачи:

ansible-playbook -i testing site.yml -u root --vault-password-file ~/.vault_pass.txt

Вопрос

Как запустить сразу все определенные роли в site.yml?

Обсуждение

Он работает для асинхронного запуска всех ролей, открывая несколько терминалов и выполняя:

ansible-playbook -i testing playbook1.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook2.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook3.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook4.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook5.yml -u root --vault-password-file ~/.vault_pass.txt

Взгляни на playbooks стратегии:

В 2.0 мы добавили новый способ управления исполнением игры, стратегию, по умолчанию игры будут по-прежнему выполняться, как и раньше, с тем, что мы называем линейной стратегией. Все хосты будут запускать каждую задачу до того, как какой-либо хост запустит следующую задачу, используя количество вилок (по умолчанию 5) для распараллеливания.

Стоит попробовать установить стратегию на free:

Вторая стратегия поставляется с доступным бесплатным доступом, что позволяет каждому хосту работать до конца игры так быстро, насколько это возможно.

- hosts: all
  strategy: free

Также проверьте вилки установка в ansible.cfg:

Это количество параллельных процессов по умолчанию, запускаемых при обмене данными с удаленными хостами. Начиная с Ansible 1.3, число вилок автоматически ограничивается количеством возможных хостов, так что это действительно предел того, с какой нагрузкой на сеть и процессор, по вашему мнению, вы можете справиться. Многие пользователи могут установить это значение 50, некоторые - 500 или больше. Если у вас большое количество хостов, более высокие значения ускорят выполнение действий на всех этих хостах. По умолчанию очень консервативно:

forks=5