Ansible: отфильтровать объединенный файл yaml - PullRequest
0 голосов
/ 16 октября 2018

Моя текущая настройка выглядит следующим образом:

ansible.cfg

[defaults]
retry_files_enabled = false
hash_behaviour = merge

hosts

[sample]
sampleserver

group_vars

содержимое group_vars / 1.yml:

tenants:
  1:
    name: name1
    ip: ip1

содержимое group_vars / 2.yml:

tenants:
  2:
    name: name2
    ip: ip2

содержимое group_vars/3.yml:

tenants:
  3:
    name: name3
    ip: ip3

playbook.yml

- hosts: sample

  tasks:
    - set_fact:
        mytenants: "{{ {customtenants: tenants[customtenants]} }}"
      when: customtenants is defined

    - name: Output tenantname
      debug:
        msg: "mytenant: {{ mytenant }} name: {{ mytenant.name }}"
      with_dict: "{{ mytenants|default(tenants) }}"
      loop_control:
        loop_var: mytenant

команда

запуск для всех арендаторов (отлично работает)

ansible-playbook playbook.yml -i inventory/hosts

работает только для одного определенного арендатора (работает нормально)

ansible-playbook tenants.yml -i inventory/hosts -e "customtenants=1"

работает для нескольких определенных арендаторов

ansible-playbook playbook.yml -i inventory/hosts -e '{"customtenants": ["1", "3"]}'

Кто-нибудь может мне помочь, чтобы он работал для нескольких арендаторов (последний пример команды)?

Или есть лучший способ для достижения таких динамических решений?

1 Ответ

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

То, что я сделал в прошлом, поместил эту переменную в строку hosts, например:

- hosts: "{{ customtenants | default( 'all' ) }}"

Затем вы можете удалить строки when и with_dict.

...