Ansible
Ansible Playbook 和變數的語法問題
我正在嘗試執行我編寫的以下劇本,但由於某些語法錯誤而失敗。
我從線上文件中嘗試了一些東西,但到目前為止沒有成功。這些變數的目的是生成一個隨機密碼,供角色中的使用者模組使用。
- 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) }}"}
是的,這是一個簡單的錯字。
salt: "{{ lookup('password', '/dev/null length=10' chars=ascii_letters) }}"
您可以看到錯誤抱怨文字
chars
意外出現。那是因為您提前關閉了報價,它應該包含所有選項,即:salt: "{{ lookup('password', '/dev/null length=10 chars=ascii_letters') }}"