2016-02-29 56 views
1

在Ansible項目中製作主劇本有什麼意義?該Ansible best practices描述項目的佈局是這樣的:爲什麼有一個Ansible「主劇本」?

production  # inventory file for production servers 
staging   # inventory file for staging servers 
site.yml  # master playbook 
webservers.yml # playbook for webserver tier 
dbservers.yml # playbook for dbserver tier 

主劇本會是這個樣子:

# site.yml 
--- 
- include: webservers.yml 
- include: dbservers.yml 

的Web服務器和dbservers會是這個樣子:

--- 
- name: configure webservers 
    hosts: webservers 

    tasks: 
    (tasks go here) 

    roles: 
    (roles go here) 

通常情況下,如果您只有一個庫存文件,您可以在ansible.cfg文件中指定它:

# ansible.cfg 
[defaults] 
hostfile = inventory 

然後,您可以簡單地用命令來運行你的劇本:

$ ansible-playbook site.yml 

但是,如果我們分裂我們的庫存爲兩個獨立的文件,你總是需要在運行劇本來指定清單文件:

$ ansible-playbook -i production site.yml 

然而,由於你的網絡服務器或DBSERVER劇本是在所有的可能性要指定「主機:Web服務器」或「主持人:dbservers」,表示在廣告資源文件中,這些各組,你爲什麼不只是運行這些命令?

$ ansible-playbook -i production webservers.yml 
$ ansible-playbook -i production dbservers.yml 

有什麼有一個site.yml主劇本買你?

謝謝。

回答

3

這個例子非常簡單。

想象一下,您有一個體面複雜的基礎架構,其各種組件都有15-20個不同的劇本。這樣的主劇本將確保不僅所有底層劇本都能執行,而且它們將以正確的順序執行。 (即什麼應該先運行,dbservers.yml或webservers.yml?)

0

該playbook只意味着一次執行中的所有基礎結構,不再有。對我來說,關鍵是向我的老闆證明這一點,並說:「嗨,如果你運行這個劇本,你可以在雲中建立所有的企業基礎架構,如果發生了什麼錯誤,現在你知道該怎麼做」