You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:37:10