如何调整Ansible Playbook,实现交互式输入新root密码?
Ansible批量更新root密码的交互式Playbook修改方案
需求说明
我有一个包含多台服务器与虚拟机的家庭实验室,需要用Ansible批量更新所有设备的root密码。要求Playbook能交互式询问三个密码:用户登录密码、sudo密码以及新root密码,并用新root密码完成更新。当前Playbook仅能询问前两个密码,新root密码为硬编码状态,需要修改实现第三个密码的交互式输入与更新。已知该方案存在安全问题,但场景限制无法使用SSH密钥认证。
原Playbook(changepasswd.yml)
--- - hosts: rootpass become: yes become_user: root gather_facts: False tasks: - name: Change root password user: name: root password: "{{ 'PaSsWoRd1' | password_hash('sha512') }}"
修改后的Playbook
--- - hosts: rootpass become: yes become_user: root gather_facts: False vars_prompt: - name: "new_root_password" prompt: "请输入新的root密码" private: yes confirm: yes tasks: - name: 更新root密码 user: name: root password: "{{ new_root_password | password_hash('sha512') }}"
修改说明
- 添加
vars_prompt模块:用于交互式获取新root密码,private: yes确保输入时不显示明文,confirm: yes要求用户重复输入密码以避免拼写错误。 - 替换硬编码密码:将原来的固定字符串
'PaSsWoRd1'替换为变量new_root_password,通过密码哈希过滤器生成系统可识别的加密密码。
使用命令
保持原命令不变,执行时会依次提示输入登录密码(-k参数触发)、sudo密码(-K参数触发)、新root密码(Playbook的vars_prompt触发):
ansible-playbook ./changepasswd.yml -k -K -v
主机文件(inventory)
[rootpass] server1 server2 server3
内容的提问来源于stack exchange,提问作者Patrickw99
相关产品推荐
相关产品推荐

