Deployment Ansible-委托到-数据库更新

Deployment Ansible-委托到-数据库更新,deployment,ansible,ansible-playbook,Deployment,Ansible,Ansible Playbook,一旦我完成部署,如果需要应用任何补丁,我需要更新数据库结构 My hosts are: [qa] qa1 qa2 [prod] prod1 prod2 我只希望根据部署到的环境对每个环境运行一次 场景: -所有:db补丁应针对每个环境应用一次,例如qa1+prod1 -Prod:db补丁应仅应用于生产,例如prod1 -QA:db补丁只应用于QA,例如qa1 我可以使用delegate_to选项,但如何涵盖上述所有场景 例如,如果我写:delegate_to:{{groups['prod'

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

My hosts are:

[qa]
qa1
qa2

[prod]
prod1
prod2
我只希望根据部署到的环境对每个环境运行一次

场景: -所有:db补丁应针对每个环境应用一次,例如qa1+prod1 -Prod:db补丁应仅应用于生产,例如prod1 -QA:db补丁只应用于QA,例如qa1

我可以使用delegate_to选项,但如何涵盖上述所有场景

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


谢谢

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

另一个选项是制作一个playbook以所有组为目标,hosts:qa:prod,然后使用ansible playbook的limit选项-limit/-l来决定以哪些组为目标