2015-11-12 21 views
0

完成我的部署後,如果需要應用任何修補程序,我需要更新數據庫結構。Ansible - 委託給 - 數據庫更新

My hosts are: 

[qa] 
qa1 
qa2 

[prod] 
prod1 
prod2 

我只希望在每個環境中運行一次,這取決於要部署哪些環境。

方案:
- 所有:db補丁程序應該針對每個環境應用一次,例如, QA1 + PROD1
- PROD:DB補丁應適用於只是生產egprod1
- QA:DB補丁應適用於只是QA egqa1

我可以使用delegate_to選項,但我怎麼會涵蓋所有場景以上?

例如,如果我寫:delegate_to: "{{ groups['prod'][0] }}"然後QA不會得到更新等

感謝

回答

0

您可以編寫單獨的劇本,以涵蓋不同環境的更新,指定哪個(些)你想在hosts變量中。例如,您將有三本劇本,涵蓋每個更新排列,每個排列都有以下主機指令集:主機:qa,主機:qa:prod,hosts:prod

另一個選項是讓一個劇本指向目標所有組,主機:qa:prod,然後使用限制選項(--limit/-l)作爲劇本,以決定哪些組要定位。