как использовать ansible with_subelements - PullRequest
1 голос
/ 23 марта 2020

Вот мой файл базы данных yaml:

apn_operation:
    action: create
    epg_version: 4G
    apn_name: internet_jack
    access-restrictions selection-mode: public
    routing-instance: sgi_nat
    pgw-enabled: yes
    uplink-dscp-map: test
    allow-rule-space:
      - RS_Mobile
      - RS_Mobile_OCC
    name-server:
      - ip_address: 10.0.0.1
        priority: 10
      - ip_address: 10.0.0.2
        priority: 20

Вот моя книга игр:

- hosts: all
  gather_facts: no
  vars_files:
    - apn_operation.yaml

  tasks:
  - name: show content
    debug:
       msg: "{{item}}"
    with_subelements:
    - "{{apn_operation}}"
    - name-server

, когда я запустил книгу игр. Я получил следующую ошибку:

ЗАДАЧА [показать содержимое] ****************************** ************************************************** ************************************************** ************************************************** ****** фатально: [11RRvEPG01]: СБОЙ! => {"msg": "поиск подэлементов ожидает словарь, получил 'OPTUS-QCIDSCP'"}

Я не знаю, в чем проблема. кто-нибудь может помочь?

1 Ответ

2 голосов
/ 23 марта 2020

apn_operation - словарь. Итерация словаря невозможна. Можно использовать dict2items , но это не то, что вы ищете.

with_subelements может выполнять итерацию списка, где каждый элемент представляет собой словарь, содержащий другой список. Например,

apn_operation:
  - action: create
    name-server:
      - ip_address: 10.0.0.1
        priority: 10
      - ip_address: 10.0.0.2
        priority: 20

работает как положено и дает

    "msg": [
        {
            "action": "create"
        }, 
        {
            "ip_address": "10.0.0.1", 
            "priority": 10
        }
    ]

    "msg": [
        {
            "action": "create"
        }, 
        {
            "ip_address": "10.0.0.2", 
            "priority": 20
        }
    ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...