Двойной двоеточие Ansible в with_items - PullRequest
0 голосов
/ 06 октября 2019

Первый ключ моего host_var имеет :. Точно так же,

---
openconfig-vlan:vlans:
  vlan:
  - vlan-id: '1001'
    config:
      vlan-id: 1001
      name: test22
      status: ACTIVE

Однако я не могу найти способ избежать этого, поэтому я могу перебрать список в vlan.

Playbook

---
- name: Configure Devices via Native
  hosts: ios
  gather_facts: no

  tasks:
    - name: Create VLAN
      ios_vlan:
         vlan_id: "{{ item.config.vlan-id }}"
         name: "{{ item.config.name }}"
         state: present
      with_items: "{{ openconfig-vlan:vlans['vlan'] }}"

Ошибка

TASK [Create VLAN] ********************************************************************************************************************************************************************
fatal: [ios1]: FAILED! => {"msg": "template error while templating string: expected token 'end of print statement', got ':'. String: {{ openconfig-vlan:vlans['vlan'] }}"}

Есть идеи? Спасибо,

1 Ответ

1 голос
/ 06 октября 2019

Q: "Первый ключ моего host_var имеет:. Примерно так:"

openconfig-vlan:vlans:

A: Есть переменных in in host_var no keys . Цитирование из Создание допустимых имен переменных :

"Имена переменных должны быть буквами, цифрами и подчеркиванием. Переменные всегда должны начинаться с буквы."

Доступна только одна идея. Исправьте синтаксис.


FWIW. Например, включите ошибочные host_vars и поместите его в допустимую переменную. Воспроизведение ниже
- hosts: localhost
  tasks:
    - include_vars:
        file: vars-1-data.yml
        name: test_var
    - debug:
        var: test_var['openconfig-vlan:vlans']

с данными

$ cat vars-1-data.yml
openconfig-vlan:vlans:
  vlan:
  - vlan-id: '1001'
    config:
      vlan-id: 1001
      name: test22
      status: ACTIVE

работает как ожидалось

"test_var['openconfig-vlan:vlans']": {
    "vlan": [
        {
            "config": {
                "name": "test22", 
                "status": "ACTIVE", 
                "vlan-id": 1001
            }, 
            "vlan-id": "1001"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...