Ansible - 委托给 - 数据库更新

时间:2015-11-12 13:58:28

标签: deployment ansible ansible-playbook

完成部署后,如果需要应用任何补丁,我需要更新数据库结构。

My hosts are:

[qa]
qa1
qa2

[prod]
prod1
prod2

我只希望根据部署到哪些环境,每个环境运行一次。

方案:
- 全部:每个环境应该应用一次db补丁,例如qa1 + prod1
- 产品:数据库补丁应该应用于生产egprod1
- 质量保证:数据库补丁应仅应用于qa egqa1

我可以使用delegate_to选项,但我如何涵盖上述所有情况?

例如,如果我写:delegate_to: "{{ groups['prod'][0] }}",那么qa就不会得到更新等。

由于

1 个答案:

答案 0 :(得分:0)

您可以编写单独的剧本来涵盖不同环境的更新,并在hosts变量中指定您想要的更新。例如,您将有三个剧本,以涵盖每个更新的排列,每个都有以下主机指令集:hosts:qa,hosts:qa:prod,hosts:prod

另一种选择是制作一个剧本以定位所有群组,主持人:qa:prod,然后使用限制选项(--limit / -l)为ansible-playbook决定要定位的群组。