我正在使用 ansible-napalm 并尝试编写一个简单的剧本来从网络设备中提取事实。我想用 ansible-vault 加密密码,但是无论我尝试什么,我都会收到错误消息:Vault format unhexlify error: Odd-length string
我最初是在 Linux 的 Windows 子系统下的 bash 中尝试这个,我认为这可能是问题,所以我在 centos VM 上重新创建了所有内容,但仍然遇到同样的问题。
我尝试使用 encrypt-string 将加密的密码直接嵌入到剧本中。我也尝试过加密文件并调用变量。两种方法都给出相同的错误。
我发现了这个问题: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