从Ansible Playbook创建用户密码

我确定这里有人可以解决我的问题。我正在Ansible主机文件中定义的主机上创建用户。但是,当用户希望登录时,root用户需要定义用户密码。我需要自动创建用户密码。


要使用剧本创建用户密码,我们无法以明文形式指定密码,我们只能通过提供哈希值来做到这一点:


 - name: Add Users + Assign to Group

   user:

      name: "{{ item }}"

      password: $6$ul4TACYvHI.kmGUK$j32lU8fNbX.eW0DZOqnnDlP8i0...

要创建哈希,第一步是通过以root用户身份登录到目标服务器来定义密码,然后使用python-crypt创建哈希。运行命令后,终端将提供哈希值,并将其粘贴到剧本中。(在下面的示例中,密码为“ ansible”)


python -c 'import crypt; print crypt.crypt("ansible")'

当我在目标服务器上运行该剧本时,我可以以使用python-crypt定义的密码创建剧本的用户身份登录(在这种情况下,我以user2身份登录,密码为“ ansible”)


login as: user2


user1@10.65.8.50's password: "ansible"



[user1@hostname ~]$

这意味着我必须在要创建用户的服务器的终端中创建哈希,然后将哈希复制并粘贴到剧本中。如果我有一台服务器,这不是什么大麻烦,但是如果我要对100台服务器运行剧本,那么我需要以root用户身份登录到100台服务器并创建100个哈希,然后在剧本中定义所有这些哈希,这不是很自动化!


因此,需要的是能够从剧本执行python-crypt,grep创建的哈希并将其放入剧本的功能。您对如何执行此操作有任何想法吗?甚至在Ansible中也不是,我不希望你们为我写剧本。也许考虑如何在您选择的工具(例如PowerShell)中执行此操作。一旦了解了该过程,便可以将其翻译成剧本。


ABOUTYOU
浏览 699回答 1
1回答

HUH函数

在FAP之类的变量中设置密码,然后将其添加到脚本中以创建用户:  - name: "Encrypt password for target system"    command: "python -c 'import crypt; print crypt.crypt(\"{{ FAP }}\")'"    register: EFAP  - name: "Add user USER1"    user: name="USER1" state="present" password="{{ EFAP.stdout }}"我已经使用复杂的密码对此进行了测试,并且可以正常工作
打开App,查看更多内容
随时随地看视频慕课网APP