У меня очень общий playbook без какой-либо жестко закодированной информации. Все в playbook является переменной и заполняется дополнительными переменными, даже именами хостов для соединений. Файлы инвентаризации не используются, поскольку хост, с которым они запускаются, обычно случайный.
В командной строке в Linux я могу запускать свою доступную книгу воспроизведения несколько раз с разными переданными переменными, и все они будут работать одновременно.
ansible-playbook cluster_check_build.yml -e {"host": "host1"...}
ansible-playbook cluster_check_build.yml -e {"host": "host2"...}
Однако в башне, если я создам шаблон задания и использую ту же книгу, все будет работать последовательно. Я вызываю этот шаблон задания несколько раз, используя API, и передаю данные в формате JSON. Каждый раз, когда я вызываю API для запуска задания задания, я добавляю новый extra_vars
, чтобы задание выполнялось на разных хостах. Я вижу, что задания выполняются последовательно, а не параллельно, как из командной строки.
У меня есть 400+ хостов, которым нужно запускать одну и ту же книгу в случайное время. На выполнение этой инструкции может уйти около часа. Могут быть случаи, когда playbook нужно запускать против 20 или 30 случайных хостов. Время имеет решающее значение, а серийная обработка заданий - это не вопрос.
Можно ли запустить один и тот же шаблон задания на разных хостах параллельно? ЕСЛИ ответ отрицательный, то каковы мои варианты? Надеюсь, мы не создадим 400+ шаблонов вакансий. Похоже, это противоречит цели очень общего сценария.