我希望在初始化实例时在我的操作系统上使用Ansible te create user。为此,我有一个剧本,我在其中定义了一个角色。在这个角色中,我有以下内容:
name:将用户添加到本地系统
用户:
名称:" {{item.username}}"
密码:" {{item.password}}"
uid:" {{item.uid}}"
group:" {{item.group}}"
with_items:" {{Ansible_Vault_SecretsFile}}"
这样我就可以在不同环境的不同秘密文件中指定用户的详细信息(用户名,密码,uid和组)。秘密文件中的密码是纯文本。由于它被写入/ etc / shadow,因此需要进行哈希处理。有没有办法在这个角色中自动散列密码变量?
编辑: 为了进一步说明,我知道秘密文件是加密的,但是在这种情况下,用户名和密码的内容在存储到/ etc / shadow文件之前被解密。
我的秘密文件如下:
Ansible_Vault_SecretsFile:
用户名:user1
密码:MyPassword
uid:100
组:用户
用户名:user2
密码:MyPassword2
uid:101
组:用户
角色遍历秘密文件,在这种情况下创建两个用户。在/ etc / shadow文件中,密码存储为MyPassword和Mypassword2,但为了登录这些明文密码需要进行哈希处理。我正在寻找一种自动执行此操作的方法。
答案 0 :(得分:1)
以下是创建密码的documentation,这对您有所帮助!
1。在大多数Linux系统上可用的mkpasswd实用程序是一个很好的选择
mkpasswd --method = sha-512
2。如果您的系统上未安装此实用程序(例如,您使用的是OS X),那么您仍然可以使用Python轻松生成这些密码。首先,确保已安装Passlib密码哈希库
pip install passlib
python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.using(rounds=5000).hash(getpass.getpass())"
答案 1 :(得分:0)
如果使用ansible-vault创建/加密机密文件,则它不是纯文本。
答案 2 :(得分:-1)
gile是正确的当你在ansible上创建一个秘密文件时,默认的密码是AES。