Синтаксис Ansible для запуска задачи на основе состояния хоста

#ansible

#ansible

Вопрос:

Мне интересно, возможно ли использовать такой синтаксис для запуска playbook на основе требований хоста :

  • включить: tomcat8_for_assc_team.yml когда: hostgroup: assc

  • включить: tomcat8_for_oab_team.yml когда: hostgroup: автономная адресная книга

В моих файлах инвентаризации :

[assc] vm1 vm2 и т.д.

[автономная адресная книга] vm4 vm5 и т. Д

Ответ №1:

Вы могли бы использовать волшебную переменную group_names. это описано здесь: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#accessing-information-about-other-hosts-with-magic-variables . Они говорят: group_names — это список (массив) всех групп, в которых находится текущий хост.

Итак, в вашем случае следующие две задачи выполнят эту работу.

 - name: "run the playbook for assc"
  include: "tomcat8_for_assc_team.yml"
  when: "'assc' in group_names"
- name: "run the playbook for oab"
  include: "tomcat8_for_oab_team.yml"
  when: "'oab' in group_names"
  

Первый включенный playbook запускается, только если assc находится в gouplist текущего хоста. Второй такой же для автономной адресной книги goup.