ansible滚动重启playboook

时间:2016-02-25 22:11:00

标签: ansible

民间,   我希望在每台主机上单独重新启动服务,并等待用户输入,然后继续进入清单中的下一个主机。

目前,如果您有以下内容:

- name: Restart something
  command: service foo restart
  tags:
    - foo
- name: wait
  pause: prompt="Make sure org.foo.FooOverload exception is not present"
  tags:
    - foo

它只会提示一次,而不是真正有效果。

在每台主机上运行重启任务之前,等待用户输入的正确ansible语法是什么?

2 个答案:

答案 0 :(得分:4)

使用剧本的serial属性和step选项的组合。

playbook.yml

- name: Do it
  hosts: myhosts
  serial: 1

  tasks:
  - shell: hostname 

使用--step选项

调用该剧本
ansible-playbook playbook.yml --step

系统会提示您输入每个主机。

    Perform task: shell hostname (y/n/c): y

    Perform task: shell hostname (y/n/c):  **************************************** 
    changed: [y.y.y.y]
    Perform task: shell hostname (y/n/c): y

    Perform task: shell hostname (y/n/c):  **************************************** 
    changed: [z.z.z.z]

有关详细信息:Start and Step

答案 1 :(得分:1)

我继续这样做:

- name: Restart Datastax Agent
  tags:
    - agent
  hosts: cassandra
  sudo: yes
  serial: 1
  gather_facts: yes
  tasks:
    - name: Pause
      pause: prompt="Hit RETURN to restart datastax agent on {{ inventory_hostname }}"
    - name: Restarting Datastax Agent on {{ inventory_hostname }}
      service: name=datastax-agent state=restarted