Как последовательно запустить все задачи на хост в Ansible - PullRequest
0 голосов
/ 26 марта 2020

Я пишу Ansible playbook, где у меня есть 3 узла кота. Теперь мой сценарий делает много вещей, таких как копирование выпуска с nexus на узлы приложения, его развертывание, запуск tomcats et c.

То, чего я хочу достичь, - это делать это последовательно. Например, книга воспроизведения должна запускаться для одного хоста, а когда она будет завершена, она должна запускаться для другого хоста. Мой инвентарь выглядит так, как показано ниже, и я использую group_vars, так как у меня есть несколько сред, таких как prod, preprod et c.

Может кто-нибудь помочь.

[веб-сервер] tomcat1 tomcat2 tomcat3

1 Ответ

0 голосов
/ 26 марта 2020

Q: "Книга воспроизведения должна запускаться для одного хоста, а когда она будет завершена, она должна запускаться для другого хоста."

A: Использовать серийный . Например

shell> cat playbook.yml
- hosts: webserver
  gather_facts: false
  serial: 1
  tasks:
    - debug:
        var: inventory_hostname
shell> ansible-playbook playbook.yml

PLAY [webserver] ***

TASK [debug] ***
ok: [tomcat1] => {
    "inventory_hostname": "tomcat1"
}

PLAY [webserver] ***

TASK [debug] ***
ok: [tomcat2] => {
    "inventory_hostname": "tomcat2"
}

PLAY [webserver] ***

TASK [debug] ***
ok: [tomcat3] => {
    "inventory_hostname": "tomcat3"
}

PLAY RECAP ***
tomcat1: ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0   
tomcat2: ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0   
tomcat3: ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

См. Как создать свой инвентарь

shell> cat hosts
[webserver]
tomcat1
tomcat2
tomcat3
...