2016-12-14 24 views
0
inventories/ 
    production/ 
     hosts.yml   # inventory file for production servers 
     group_vars/   # contains global variables for microservices 

webservers.yml  

roles/ 
    webservers/ 
     tasks/    
     main.yml   # has include statements for all the other files in tasks 
     microservice1.yml 
     microservice2.yml 
     install_certificates.yml 
     etc 
    vars/     # contains variables for each microservice 

這是我目前的目錄結構。最初,我將其設置爲使webservers.yml劇本將全面部署新調配的Web服務器...因此安裝apache,php,certs和所有微服務站點。只調用一個角色的子集?

我想知道的是,什麼是最好的方式來完成只運行webservers角色的子集?就像我只想運行microservice1.yml任務一樣。這是適用於當前的庫存結構還是我需要使每個任務都是自己的角色,並將它們全部包含在webservers.yml中?哪種方式會被認爲是更好的做法?

回答

0

最簡單的和預期的方法是使用標籤。您將相同的標記添加到您想要組合在一起的規則中,然後運行ansible,以便它僅執行以此方式標記的規則。

ansible-playbook -i hosts --ask-become-pass site.yml --tags usersetup

只標有usersetup規則將被執行:

例如,如果你運行你的劇本是這樣這個規則被標記爲 「usersetup」

- name: Create user groups 
    group: name={{ item.username }} state=present 
    with_items: "{{ my_items }}" 
    tags: [ "usersetup" ] 

。請注意,您可以將多個標記添加到規則,方法是用逗號分隔它們。

+0

所以我想我只能決定是否我更喜歡標籤或個人角色。謝謝。 –

相關問題