如何在Ansible中按顺序运行每个主机的所有任务

问题描述 投票:0回答:1

我正在编写Ansible剧本,其中有3个tomcat节点。现在我的脚本做了很多事情,例如将发行版从nexus复制到应用程序节点,部署它,启动tomcats等。

我想实现的是按顺序执行此操作。例如,剧本应在一个主机上运行,​​完成后应在另一台主机上运行。我的清单如下所示,由于使用了prod,preprod等多个环境,因此我正在使用group_vars。

有人可以帮忙。

[网络服务器]雄猫1雄猫2tomcat3

ansible ansible-inventory
1个回答
0
投票

Q:“剧本应在一个主机上运行,​​完成后应在另一台主机上运行。”

A:使用serial。例如

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
© www.soinside.com 2019 - 2024. All rights reserved.