0

我想在实例初始化时在我的操作系统上使用 Ansible te create user。为此,我有一个剧本,我在其中定义了一个角色。在这个角色中,我有以下内容:

  名称:将用户添加到本地系统
  用户:
   名称:“{{ item.username }}”
   密码:“{{ item.password }}”
   uid:“{{ item.uid }}”
   组:“{{ 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,但为了登录这些明文密码,需要对这些密码进行哈希处理。我正在寻找一种自动执行此操作的方法。

4

2 回答 2

1

这是创建密码的文档,这将对您有所帮助!

1. 大多数 Linux 系统上可用的 mkpasswd 实用程序是一个不错的选择

mkpasswd --method=sha-512

2. 如果您的系统上未安装此实用程序(例如,您使用的是 OS X),那么您仍然可以使用 Python 轻松生成这些密码。首先,确保已安装 Passlib 密码哈希库

点安装 passlib

python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.using(rounds=5000).hash(getpass.getpass())"
于 2017-05-16T20:15:27.040 回答
0

如果您使用ansible-vault创建/加密机密文件,则它不是纯文本。

于 2017-05-16T16:55:34.200 回答