2016-12-14 1 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 playbook было полностью развернуто вновь созданный веб-сервер ... поэтому установите apache, php, certs и все сайты микросервисов.вызывает только подмножества роли?

Что мне интересно, каков наилучший способ выполнить запуск только подмножеств роли веб-серверов? Например, если я только хочу запускать задачи microservice1.yml и ничего больше. Является ли это возможным с текущей структурой инвентаризации или мне нужно сделать каждую задачу своей собственной ролью и включить их в webservers.yml? Какой путь будет считаться лучшей практикой?

ответ

0

Самый простой и наглядный способ добиться этого - использовать теги. Вы добавляете тот же тег к правилам, которые хотите группировать вместе, а затем вы запускаете исполняемый файл, чтобы он выполнял только те правила, которые были помечены таким образом.

Например, это правило с тегом "usersetup"

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

Если вы ведете свой сборник пьес, как это:

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

только правила с тэгом usersetup будут выполнены. Обратите внимание, что вы можете добавить несколько тегов в правило, разделив их запятыми.

+0

Так что, я думаю, мне просто нужно решить, предпочитаю ли я теги или отдельные роли. Благодарю. –