我有很多系统有一个共同的用户名登录。大多数系统的密码也是相同的。我有 1 个包含所有系统的库存文件。对于具有不同密码的系统,我已将密码保存在主机名中,其余的则保存在 group_vars 文件中。
在库存文件中:
hostname1 ansible_ssh_pass=pass1
hostname2 ansible_ssh_pass=pass2
hostname3
hostname4
group_vars 文件:
ansible_user: someuser
ansible_ssh_pass: pass3
我没有更高的特权。从另一个线程我能够弄清楚如何只使用 passwd 来更改密码,而不使用其他实用程序。
shell: 'printf "%s\n" OldPass NewPass NewPass | passwd'
passwd 不支持“-p”选项。
我试图找出一种方法从 ansible 为每个主机选择它的地方获取 OldPass 值,这样我就不必运行这个剧本 n 次,并手动将 OldPass 放入 shell 命令中。
请就如何进行此操作提出建议。
谢谢。
您可以直接使用变量:
在此示例中,变量是
ansible
从命令行输入的,在您的示例中,它们将来自group_vars
.您甚至可以为特定系统定义默认值并覆盖它: