我从一个加密的ansible-vault文件中读取了我的root密码。但是,当我在ansible_become_pass上使用它时,操作失败,因为密码包含特殊字符。在我的示例中,“ #”
这是我的yml:
- hosts: sirius
remote_user: ansusr
become: yes
vars_files:
- vault_vars.yml
become_pass: "{{ root_pass_sirius }}"
ansible-playbook check.yml --ask-vault-pass
fatal: FAILED! => {"msg": "{{ TesT#1234 }}: template error while templating string: unexpected char '#' at 6. String: {{ TesT#1234 }}"}
如何屏蔽#
字符?
在实际运行该加密命令之前使用set +H
。
这可能有用。
become_pass: "{{ root_pass_sirius | regex_escape() }}"
尝试使用单引号而不是双引号:
become_pass: '{{ root_pass_sirius }}'
您可以尝试的另一件事是引号过滤器:
become_pass: "{{ root_pass_sirius | quote }}"
尝试此"'"{{ }}"'"
或此$'{{ }}'
其Jinja模板