我有下面的手册(简体)。
它工作的很好,但我想能够做一个热身,我只部署到一个单一的主机(如序列:1),然后暂停,所以我可以检查日志,以确认一切都很好,然后释放到一样大我所有服务的33%。
有一个简单的方法Ansible让你这样做?
我现在有一个真正的hacky解决scheme,涉及基本上复制和粘贴我的代码与串行:1,一个失败的声明,一堆检查和命令行参数。 必须有一个比破坏一个干净可读的剧本更好的方法。 我只是不知道它可能是什么。
- name: 33% at a time max-analytics deploy hosts: role_max_logger serial: 33% tasks: - name: take out of lb analytics shell: haproxy stuff - pause: seconds: 5 - name: gracefulReloading max-analytics shell: reload stuff - name: add back to lb analytics shell: haproxy stuff
从Ansible 2.2开始,您可以设置dynamic批量大小 。
--- - hosts: mygroup serial: - 1 - 33% tasks: - shell: date - pause: prompt: check if everything ok when: ansible_play_hosts.index(inventory_hostname) == 0
这将在第一批中只有一台主机,在该主机上执行date命令,如果当前主机是第一台主机,则暂停。 所以它只会暂停一次,然后33%的批次不会暂停。
您可以将序列作为variables,并传递您希望剧本运行的数量。 例如,您可以传入“1”作为序列号,并且在剧本末尾,如果variables为“1”,则退出剧本。
如果variables不是“1”,剧本将继续与其他服务器。 您的第一个服务器可能会再次部署,但没有问题,因为您的更改应该已经是最新的。
来自这里的更多信息: http : //docs.ansible.com/ansible/playbooks_variables.html#passing-variables-on-the-command-line
如果variables为“1”,则使用失败模块退出: http : //docs.ansible.com/ansible/fail_module.html