0

我的 host_var 的第一个键有一个:. 像这样,

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

但是,我似乎找不到逃避它的方法,所以我可以在vlan.

剧本

---
- 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'] }}"}

有任何想法吗?谢谢,

4

1 回答 1

1

问:“我的 host_var 的第一个键有一个 :。就像这样,”

openconfig-vlan:vlans:

A: 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"
        }
    ]
}
于 2019-10-06T13:58:08.513 回答