Модуль Ansible Arista eos_l2_interface: TypeError не поддерживает сериализацию в формате JSON - PullRequest
0 голосов
/ 19 октября 2018

Версии:

  • Ansible / Python 2.7
  • Arista EOS 4.16.8M (7050SX)
  • CentOS 7.5

Iиметь книгу, которая просматривает словарь интерфейсов и применяет изменения по мере необходимости.В пьесе используются циклы, и хотя первое изменение неизменно будет успешным, следующее изменение не будет выполнено.

Плейбук:

- hosts: devswitches
  gather_facts: false
  tasks:
  - name: Configure layer 2 access interfaces
    eos_l2_interface:
      name: "{{ item.name }}"
      mode: access
      access_vlan: "{{ item.vlan }}"
    loop: "{{ interfaces }}"
    when: 
      - item.vlan is defined

Файл Vars:

interfaces:
  - name: Ethernet10
    description: I am et10 a trunk port 
    trunk: true
    trunknative: 399
    trunkallowed: 399
  - name: Ethernet11
    description: I am et11 an access port
    vlan: 399
  - name: Ethernet12
    description: I am et12 an access port too
    vlan: 399

Вещиначать с - Ethernet10 пропущен, а Ethernet11 изменен.Затем происходят плохие вещи.

TASK [Configure layer 2 access interfaces] ********************************************************************************************
skipping: [lt-ts.mitre.org] => (item={u'trunknative': 399, u'trunkallowed': 399, u'description': u'I am et10 a trunk port', u'name': u'Ethernet10', u'trunk': True}) 
changed: [lt-ts.mitre.org] => (item={u'vlan': 399, u'name': u'Ethernet11', u'description': u'I am et11 an access port'})
fatal: [lt-ts.mitre.org]: FAILED! => {"msg": "Traceback (most recent call last):\n  File \"/usr/bin/ansible-connection\", line 321, in <module>\n    main()\n  File \"/usr/bin/ansible-connection\", line 287, in main\n    conn.set_options(var_options=variables)\n  File \"/usr/lib/python2.7/site-packages/ansible/module_utils/connection.py\", line 167, in __rpc__\n    response = self._exec_jsonrpc(name, *args, **kwargs)\n  File \"/usr/lib/python2.7/site-packages/ansible/module_utils/connection.py\", line 144, in _exec_jsonrpc\n    data = json.dumps(req)\n  File \"/usr/lib64/python2.7/json/__init__.py\", line 243, in dumps\n    return _default_encoder.encode(obj)\n  File \"/usr/lib64/python2.7/json/encoder.py\", line 207, in encode\n    chunks = self.iterencode(o, _one_shot=True)\n  File \"/usr/lib64/python2.7/json/encoder.py\", line 270, in iterencode\n    return _iterencode(o, 0)\n  File \"/usr/lib64/python2.7/json/encoder.py\", line 184, in default\n    raise TypeError(repr(o) + \" is not JSON serializable\")\nTypeError: u'XXXXXXXXXXXXXX' is not JSON serializable\n"}

Объект, на который ссылается TypeError, является паролем учетной записи для локальной учетной записи администратора, которая содержится в зашифрованной переменной хранилища.Механизм транспорта - https (httpapi):

ansible_connection: httpapi
ansible_httpapi_use_ssl: true
ansible_network_os: eos
ansible_user: admin
ansible_ssh_pass: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66656138626139623035333864343431323337313338383965326430313631666666333764303339
          6539623236316239393235363XXXXXXXXXXXXXXXXXXXXXXXXXXX3732326561346633656539333062
          66663866323033386537376661623464613133333834316561306330613439313132373662626430
          6662653936356334660a323035373332653165376439386438373832653030363234623634313339
          6334
ansible_become: yes
ansible_become_method: enable
ansible_become_pass: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          61336334343933373063623932356534643633646166643132353935303062376663386532316538
          306135643835373265366534326XXXXXXXXXXXXXXXXXX8640a303164396434643862333930623562
          33313738316630396265346438343366643164616464303161383364663532363232643836636130
          6139623734653637320a386434633434366338373036393730333530623764643036613836373232
          3231

Я пробовал with_items: вместо loop:, тот же результат.Это похоже на ошибку, у кого-нибудь есть понимание?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...