我正在尝试创建将在其中创建用户列表的剧本。
但是,我还想为每个用户生成随机密码。生成密码后,我希望在playbook文件旁边有一个文本文件,其中包含用户名:new_generated_password键值。是否可以在不开发新模块的情况下执行此操作?
答案 0 :(得分:12)
password
lookup可以为您生成密码,并将生成的密码放在控制计算机上(即播放手册正在运行的位置)。创建用户并设置其密码的示例任务可能如下所示:
- name: Create users with auto generated password
user:
name: "{{ item.name }}"
password: "{{ lookup('password', 'credentials/' + item.name + '/password.txt encrypt=md5_crypt') }}"
with_items: users
然后,这将在控制计算机上创建名为~/credentials/$username/password.txt
的文本文件。如果您要重新运行Ansible游戏,那么Ansible会将该文件路径识别为密码,并确保将用户密码设置为相同的值 - 使其成为幂等的。
这并不能让你得到你想要的东西,但是你可以获得所需的所有信息到Ansible控制主机上,这样你就可以进一步操作它来获得你想要的最终输出。