Использование Host Group в качестве переменной в Ansible Task - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю над тем, чтобы собрать сборник пьес, который будет развертывать сценарии локальных фактов для различных групп в моем инвентаре Ansible, и я бы мог использовать имя группы, над которой работаем, в качестве переменной в самих задачах.Предположим для этого примера, что у меня есть традиционная структура каталогов Ansible role на моей машине Ansible, и у меня есть подкаталоги в каталоге «files», называемые «apache», «web» и «db».Сейчас я проиллюстрирую на примере: ...

---
- hosts: apache:web:db

  tasks:
  - name: Set facts for facts directories
    set_fact:
      facts_dir_local: "files/{{ group_name }}"
      facts_dir_remote: "/etc/ansible/facts.d"

   - name: Deploy local facts
     copy:
       src: "{{ item }}"
       dest: "{{ facts_dir_remote }}"
       owner: ansible
       group: ansible
       mode: 0750
     with_fileglob:
      - "{{ facts_dir_local }}/*.fact"

Цель состоит в том, чтобы {{ group_name }} выше принял значение "apache" для хостов в группе apache, "web" дляhosts в веб-группе и «db» для хостов в группе db.Таким образом, мне не нужно копировать и вставлять эту задачу и назначать пользовательские переменные для каждой группы.Будем весьма благодарны за любые предложения о том, как этого добиться.

1 Ответ

0 голосов
/ 04 октября 2018

Для этого вы можете использовать групповые переменные, указанные в файле инвентаризации или в отдельных group_vars/<group> файлах - см. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

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

...