Цикл в hostvars - PullRequest
       27

Цикл в hostvars

0 голосов
/ 21 ноября 2018

Мне интересно, возможно ли выполнить цикл в папке hostvars при использовании Ansible?

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

---

list_pool: 'list ltm pool {{ items }}'
with_items:
    - 'abc123'
    - 'def456'

Я бы потом использовал переменную list_pool в пьесе:

  - name: List pool
    bigip_command:
      server: "{{ some_server }}"
      user: "{{ some_user }}"
      password: "{{ some_password }}"
      commands: 
        - "{{ list_pool }}"
      validate_certs: no
    delegate_to: localhost

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Я получил это, работая со следующим решением:

файл hostvars будет выглядеть так:

---    
pre_checks:
    checks:
        pool:
            - name: "pool_123"
            - name: "pool_456"
...

И игра будет выглядеть так:

--output truncated---

      - name: Fetch device host_vars
        set_fact:
          device_config: "{{ ((lookup('file','{{playbook_dir}}/host_vars/{{inventory_hostname}}.yml')) | from_yaml) }}"

      - name: Check pool
        bigip_command:
          server: "{{ inventory_hostname }}"
          user: "{{ remote_username }}"
          password: "{{ remote_passwd }}"
          commands:
            - "list ltm pool {{ item }}"       
          validate_certs: no
        with_items:
            - "{{ device_config.pre_checks | json_query('checks.pool[*].name') }}"
        delegate_to: localhost
        when: "'active' in Active_LTM['stdout'][0]"
        register: Pre_Checks

      - name: Verify pool 
        debug: var=item
        with_items: "{{ Pre_Checks.results | map(attribute='stdout_lines') | list }}"
0 голосов
/ 21 ноября 2018

Не уверен, что вы имеете в виду, когда говорите, что хотите перебрать папку hostvars.То, что я могу интерпретировать из ваших задач: «Вам нужно выполнить команду big-ip list ltm <pool-name> для нескольких пулов в списке list_pool»

Если это то, что вам нужно, это должно сработать:

- name: Set list_pool fact
  set_fact:
    list_pool: "{{ list_pool | default([]) + [item] }}"
  with_items:
     - 'abc123'
     - 'def456'

- name: List pool
  bigip_command:
    server: "{{ some_server }}"
    user: "{{ some_user }}"
    password: "{{ some_password }}"
    commands: 
      - "list ltm {{ item }}"
    validate_certs: no
  delegate_to: localhost
  with_items: "{{ list_pool }}"
...