lookup - password

lookup 是很方便的查詢函式,第一個參數是 ‘password’ 的時候,可以用來產生密碼。

第二個參數是一個字串,可以填這些:

  • 檔案路徑:檔案不存在時,會產生密碼,然後把密碼存到這檔案。如果檔案已經存在,那麼就會從這檔案讀取密碼出來。要確保每次都產生不同的密碼,可以用 /dev/null

  • “chars=":用來定義密碼裡的字元,例如 chars=ascii_letters 就表示密碼只會用英文字母產生。除了 ascii_lettters 之外,還可以放

    • digits
    • capwords
    • digits
    • ascii_lowercase
    • ascii_uppercase
    • hexdigits
    • octdigits
    • printable
    • punctuation

    這些也可以混合使用,例如:chars=ascii_letters,digits。也可以不填,不填的話,字元會包含大小寫字母、數字跟 “.,:-_”

  • “encrypt=":產生密碼以後,要使用哪種加密法來加密,例如 encrypt=md5_crypt 。除了 md5_crypt 外,還可以用

    • bcrypt
    • sha256_crypt
    • sha512_crypt

    不填的話,就是不加密。

  • “length=":產出的密碼長度,預設長度是 20

下面就來看看怎麼使用。

- name: 產生密碼並存到 new_password 變數
  set_fact:
    new_password: "{{ lookup('password', '/dev/null length=10 chars=ascii_leters,digits') }}"

- name: 印出產出的密碼
  debug:
    msg: "new_password={{ new_password }}"

執行結果

PLAY [Generate new password for 'Ansible' Credential] ***************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************
ok: [localhost]

TASK [Generate new password and store in variable] ******************************************************************************************************************************
ok: [localhost]

TASK [debug] ********************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "new_password=it7_9ac9ei"
}

PLAY RECAP **********************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

由於可以指定使用哪些字元,其實也可以用來產生亂數字串,不一定要當做密碼,這真的是很方便。

參考資料:ansible.builtin.password – retrieve or generate a random password, stored in a file — Ansible Documentation