2017-05-16 40 views
0

我想在實例初始化時在我的操作系統上使用Ansible te創建用戶。要做到這一點,我有一個劇本,我在其中定義了一個角色。在這個崗位上,我有以下:Ansible:如何在ansible_vault文件中創建密碼的pw散列?

 名稱:將用戶添加到本地系統
 用戶:
   名稱: 「{{item.username}}」
   密碼:「{{項目。密碼}}」
    UID: 「{{item.uid}}」
   組: 「{{item.group}}」
  with_items: 「{{Ansible_Vault_SecretsFile}}」

這樣我就可以在不同的環境下爲不同的密文文件指定用戶的詳細信息(用戶名,密碼,uid和組)。祕密文件中的密碼是純文本的。由於它寫入/ etc/shadow,因此需要進行散列處理。有沒有辦法自動散列密碼變量在這個角色?爲了進一步說明,我知道祕密文件是加密的,但是當這些內容在用戶名和密碼被存儲在/ etc/shadow文件之前被解密時。

我的祕密文件是這樣的:

Ansible_Vault_SecretsFile:
 用戶名:user1的
 密碼:MYPASSWORD
  UID:100
 組:用戶

 用戶名:用戶2
 密碼:MyPas sword2
  UID:101
 組:用戶

通過祕密文件,在這種情況下,角色迭代創建兩個用戶。在/ etc/shadow文件中,密碼存儲爲MyPassword和Mypassword2,但爲了登錄這些明文密碼需要進行散列處理。我正在尋找一種方法來自動執行此操作。

回答

0

如果使用ansible-vault創建/加密祕密文件,它不是純文本。

+0

編輯我的主要帖子,我知道祕密文件是加密的,但內容解密當你以這種方式使用它們。 – Tinuva

0

這是用於創建密碼的documentation,這會幫助你!

1。該mkpasswd實用程序,可在大多數Linux系統是一個很好的選擇

mkpasswd --method = SHA-512

2。如果您的系統上沒有安裝此實用程序(例如,您正在使用OS X),那麼您仍然可以使用Python輕鬆生成這些密碼。首先,確保Passlib密碼哈希庫安裝

PIP安裝passlib

python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.using(rounds=5000).hash(getpass.getpass())" 
+0

感謝您的回答,我正在尋找一種方法將此融入我的角色。因此,我的角色創建了幾個用戶,並使用您的某個方法對從祕密文件恢復的密碼進行哈希處理。 – Tinuva

0

gile是正確的默認密碼是AES當你創建一個祕密的文件ansible。