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