我正在尝试执行我编写的下面的剧本,但是由于一些语法错误而失败。
我尝试了在线文档中的一些方法,但目前还没有成功。这些变量的目的是生成一个随机密码,供角色中的用户模块使用。
- hosts: all
remote_user: root
become : no
vars:
salt: "{{ lookup('password', '/dev/null length=10' chars=ascii_letters) }}"
pasw: "{{ lookup('password', '/dev/null length=15') }}"
hash: "{{ pasw }} | password_hash('sha512', {{ salt }}) "
roles:
- ansiuser
ansible-playbook 执行时出错(角色执行失败,所以我猜我的变量没有做我想要的事情:生成字符串)
TASK [ansiuser : Set the password fact for this host] ******************************************************************************************************************
fatal: [192.168.11.100]: FAILED! => {"msg": "An unhandled exception occurred while templating '{{ pasw }} | password_hash('sha512', {{ salt }}) '.
Error was a <class 'ansible.errors.AnsibleError'>, original message: An unhandled exception occurred while templating '{{ lookup('password', '/dev/null length=10' chars=ascii_letters) }}'.
Error was a <class 'ansible.errors.AnsibleError'>, original message: template error while templating string: expected token ',', got 'chars'. String: {{ lookup('password', '/dev/null length=10' chars=ascii_letters) }}"}
答案1
是的,这是一个简单的打字错误。
salt: "{{ lookup('password', '/dev/null length=10' chars=ascii_letters) }}"
您可以看到错误抱怨文字文本chars
意外出现。那是因为您过早关闭了引文,它应该包含所有选项,即:
salt: "{{ lookup('password', '/dev/null length=10 chars=ascii_letters') }}"