我正在使用ansible-napalm并试图编写一个简单的剧本来从网络设备中提取事实。 我想使用ansible-vault加密密码,但是无论尝试什么,我都会不断收到错误消息: 保管箱格式无法显示错误:奇数长度的字符串
最初,我是在Windows子系统下的Linux中以bash进行尝试的,我认为这可能是问题所在,因此我在centos VM上重新创建了所有内容,但仍然遇到相同的问题。
我尝试使用加密字符串将加密后的pw直接嵌入到剧本中。 我也尝试过加密文件并调用变量。两种方法都给出相同的错误。
我发现了这个问题:Ansible-vault errors with "Odd-length string" 而且我认为问题与CRLF行终止符有关,因此我对它进行了排序,并确保所有文件均为ASCII文本,但这仍然给出相同的错误。
下面是我的代码,由于我正在拔头发,所以任何帮助将不胜感激!
---
- name: napalm_facts
hosts: all
connection: local
gather_facts: no
tasks:
- name: get facts from device
napalm_get_facts:
hostname: "{{ ansible_host }}"
username: 'admin'
password: "{{ napalm_password }}"
dev_os: 'ios'
register: result
- name: print results
debug: msg="{{ result }}"
我尝试了以下方法,以供参考。
ansible-vault encrypt vars/vaultpw.yml
ansible-vault encrypt_string password123 --ask-vault-pass
答案 0 :(得分:0)
我设法通过从以下线程中获取建议来对此进行排序:Inline encrypted variable not JSON serializable 首先感谢您的答复,这使我能够正确地进行排序。