sonic-net / sonic-mgmt

Configuration management examples for SONiC
Other
196 stars 716 forks source link

ERROR! Invalid vault password was provided from file (/var/sonic/.password) #1289

Open gord1306 opened 4 years ago

gord1306 commented 4 years ago

Description I am trying to use the latest sonic-mgmt (update to ansible 2.8.7) to perform ansible testing. In the previous version, I can specify an empty file as the vault password file e.g. ./testbed-cli.sh add-topo 2-2_t0 ~/.password -e ptf_imagetag=201910

But for the latest version, it will report the error messages

sonic@5bc080718e5b:~/sonic-mgmt/ansible$ ./testbed-cli.sh add-topo 2-2_t0 ~/.password -e ptf_imagetag=201911
Deploying topology '2-2_t0'
reading
Found topology 2-2_t0
[WARNING]: Error in vault password file loading (default): Invalid vault password was provided from file (/var/sonic/.password)

ERROR! Invalid vault password was provided from file (/var/sonic/.password)

Describe the results you received:

ERROR! Invalid vault password was provided from file (/var/sonic/.password)

Describe the results you expected: Success to add topology without the vault error

Is anyone know what I miss to setup. Thanks

lguohan commented 4 years ago

you can put any string in the password.txt file. it looks like the ANSIble 2.8.7 do not accept empty password file for vault

gord1306 commented 4 years ago

Thanks @lguohan, the vault fille issue can pass. And there is a new issue. It looks like the miss python (or ansible?) modules shlex and cookiejar in the sonic-mgmt container.

First, I encounter this one ImportError: cannot import name shlex_quote

TASK [Read dut minigraph] ***************************************************************************************************************************************
task path: /var/sonic/sonic-mgmt/ansible/testbed_add_vm_topology.yml:70
Tuesday 17 December 2019  07:21:03 +0000 (0:00:00.091)       0:00:00.501 ******
Using module file /var/sonic/sonic-mgmt/ansible/library/conn_graph_facts.py
Pipelining is enabled.
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: sonic
<localhost> EXEC /bin/sh -c '/usr/bin/python && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 114, in <module>
  File "<stdin>", line 106, in _ansiballz_main
  File "<stdin>", line 45, in invoke_module
  File "/tmp/ansible_conn_graph_facts_payload_LrJNDY/ansible_conn_graph_facts_payload.zip/ansible/module_utils/basic.py", line 171, in <module>
ImportError: cannot import name shlex_quote

fatal: [STR-ACS-SERV-02-2 -> localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"<stdin>\", line 114, in <module>\n  File \"<stdin>\", line 106, in _ansiballz_main\n  File \"<stdin>\", line 45, in invoke_module\n  File \"/tmp/ansible_conn_graph_facts_payload_LrJNDY/ansible_conn_graph_facts_payload.zip/ansible/module_utils/basic.py\", line 171, in <module>\nImportError: cannot import name shlex_quote\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}
[STR-ACS-SERV-02-2] TASK: Read dut minigraph (debug)>
[STR-ACS-SERV-02-2] TASK: Read dut minigraph (debug)>

And then, I manully comment shlex_quote in /usr/local/lib/python2.7/dist-packages/ansible/module_utils/basic.py,

from ansible.module_utils.six.moves import map, reduce#, shlex_quote

The playbook can continue, but encounter another fail - No module named http_cookiejar

TASK [vm_set : Install necessary packages] **********************************************************************************************************************
task path: /var/sonic/sonic-mgmt/ansible/roles/vm_set/tasks/main.yml:57
Tuesday 17 December 2019  08:56:14 +0000 (0:00:00.054)       0:00:03.497 ******
Using module file /usr/local/lib/python2.7/dist-packages/ansible/modules/packaging/os/apt.py
Pipelining is enabled.
<10.250.2.44> ESTABLISH SSH CONNECTION FOR USER: sonic
<10.250.2.44> SSH: EXEC sshpass -d11 ssh -o ControlMaster=auto -o ControlPersist=120s -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=30 -o StrictHostKeyChecking=no -o 'User="sonic"' -o ConnectTimeout=10 -o ControlPath=/var/sonic/.ansible/cp/9b9ed4861b 10.250.2.44 '/bin/sh -c '"'"'sudo -H -S  -p "[sudo via ansible, key=dwtzudthxaxpkwpuhndiuxwgpvwjpyni] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-dwtzudthxaxpkwpuhndiuxwgpvwjpyni ; /usr/bin/python'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
<10.250.2.44> (1, '', 'Traceback (most recent call last):\n  File "<stdin>", line 114, in <module>\n  File "<stdin>", line 106, in _ansiballz_main\n  File "<stdin>", line 49, in invoke_module\n  File "/tmp/ansible_apt_payload_KfJfDq/__main__.py", line 281, in <module>\n  File "/tmp/ansible_apt_payload_KfJfDq/ansible_apt_payload.zip/ansible/module_utils/urls.py", line 53, in <module>\nImportError: No module named http_cookiejar\n')
<10.250.2.44> Failed to connect to the host via ssh: Traceback (most recent call last):
  File "<stdin>", line 114, in <module>
  File "<stdin>", line 106, in _ansiballz_main
  File "<stdin>", line 49, in invoke_module
  File "/tmp/ansible_apt_payload_KfJfDq/__main__.py", line 281, in <module>
  File "/tmp/ansible_apt_payload_KfJfDq/ansible_apt_payload.zip/ansible/module_utils/urls.py", line 53, in <module>
ImportError: No module named http_cookiejar
The full traceback is:
Traceback (most recent call last):
  File "<stdin>", line 114, in <module>
  File "<stdin>", line 106, in _ansiballz_main
  File "<stdin>", line 49, in invoke_module
  File "/tmp/ansible_apt_payload_KfJfDq/__main__.py", line 281, in <module>
  File "/tmp/ansible_apt_payload_KfJfDq/ansible_apt_payload.zip/ansible/module_utils/urls.py", line 53, in <module>
ImportError: No module named http_cookiejar

failed: [STR-ACS-SERV-02-2] (item=[u'qemu', u'openvswitch-switch', u'net-tools', u'bridge-utils', u'util-linux', u'iproute2', u'vlan', u'libvirt-bin', u'python-libvirt', u'python-pip', u'apt-transport-https', u'ca-certificates', u'curl', u'software-properties-common']) => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": [
        "qemu",
        "openvswitch-switch",
        "net-tools",
        "bridge-utils",
        "util-linux",
        "iproute2",
        "vlan",
        "libvirt-bin",
        "python-libvirt",
        "python-pip",
        "apt-transport-https",
        "ca-certificates",
        "curl",
        "software-properties-common"
    ],
    "module_stderr": "Traceback (most recent call last):\n  File \"<stdin>\", line 114, in <module>\n  File \"<stdin>\", line 106, in _ansiballz_main\n  File \"<stdin>\", line 49, in invoke_module\n  File \"/tmp/ansible_apt_payload_KfJfDq/__main__.py\", line 281, in <module>\n  File \"/tmp/ansible_apt_payload_KfJfDq/ansible_apt_payload.zip/ansible/module_utils/urls.py\", line 53, in <module>\nImportError: No module named http_cookiejar\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

Have you encountered this case? Thanks!

gord1306 commented 4 years ago

I manully comment import ookiejar in /usr/local/lib/python2.7/dist-packages/ansible/module_utils/urls.py , the add topo can continue

#import ansible.module_utils.six.moves.http_cookiejar as cookiejar