Выполнить Ansible Такс для нескольких групп параллельно - PullRequest
0 голосов
/ 19 февраля 2020

У нас есть много похожих хостов, сгруппированных по конкретным c типам. В каждой группе есть несколько хостов, в основном от 2 до 8 для масштабируемости в пределах типа. Теперь нам нужно запустить одинаковые задачи / роли на всех этих хостах. Сериализовано в каждой группе, но во всех группах одновременно. Это должно выполняться намного быстрее, чем все группы (около 10 групп в настоящее время) подряд.

Возможно ли это сегодня с Ansible?

1 Ответ

1 голос
/ 20 февраля 2020

Может быть. Я в эфире, у меня нет возможности проверить эту идею, но здесь идет ...

Допустим, у вас есть GroupA и GroupB. Чтобы проверить связь каждого хоста в группе последовательно, но при этом группы будут работать параллельно, вы можете попробовать эту отвратительную конструкцию:

---
- hosts: localhost
  tasks:
  - ping:
    delegate_to: "{{ item }}"
    with_items: "{{ groups['groupA'] }}"
    forks: 1
    async: 0
    poll: 0
  - ping:
    delegate_to: "{{ item }}"
    with_items: "{{ groups['groupB'] }}"
    forks: 1
    async: 0
    poll: 0

Ansible по-прежнему будет показывать вывод задачи отдельно.

Когда я запустил это, файлы были созданы в /home/ansible/.ansible_async. Эти файлы показывают время запуска задачи, и это выглядело так, как будто она работает. Чтобы проверить, я запустил shell: sleep 5 вместо ping: и увидел, что времена запуска в этих файлах правильно чередуются.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...