Ansible

Ansible Playbook 和變數的語法問題

  • November 3, 2018

我正在嘗試執行我編寫的以下劇本,但由於某些語法錯誤而失敗。

我從線上文件中嘗試了一些東西,但到目前為止沒有成功。這些變數的目的是生成一個隨機密碼,供角色中的使用者模組使用。

- 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') }}"

引用自:https://serverfault.com/questions/938475