L oop подэлементы - это то, что вы ищете. Например, см. Нижеприведенную инструкцию, как ссылаться на нужные атрибуты
- hosts: localhost
vars:
my_pools:
- {pool: pool, host: [10.10.10.10, 10.10.10.11], port: 80}
- {pool: pool2, host: [10.10.10.10], port: 80}
tasks:
- debug:
msg: "pool:{{ item.0.pool }} port:{{ item.0.port }} host:{{ item.1 }}"
with_subelements:
- "{{ my_pools }}"
- host
дать
"msg": "pool:pool port:80 host:10.10.10.10"
"msg": "pool:pool port:80 host:10.10.10.11"
"msg": "pool:pool2 port:80 host:10.10.10.10"
Примечания
- Просто поместите ссылки на атрибуты в свой код.
- Будьте последовательны. Атрибут
host
должен быть списком, даже если список содержит только один элемент. - Используйте
loop
вместо with_subelements
loop: "{{lookup('subelements', my_pools, 'host', {'skip_missing': True})}}"
Ниже задача с минимальными изменениями, которые должны заставить ее работать
- name: Pool members
bigip_pool_member:
state: present
pool: "{{ item.0.pool }}"
partition: Common
host: "{{ item.1 }}"
port: "{{ item.0.port }}"
provider:
server: bigip.domain.com
user: admin
password: admin
validate_certs: no
delegate_to: localhost
with_subelements:
- - {pool: pool, host: [10.10.10.10, 10.10.10.11], port: 80}
- {pool: pool2, host: [10.10.10.10], port: 80}
- host
(не тестировалось)