Ansible 用于在单个组中为多台主机运行playbook的sudo密码

Ansible 用于在单个组中为多台主机运行playbook的sudo密码,ansible,Ansible,我们正在使用ansible,现在我们希望在服务器(远程主机)上进行一些配置更改。我们在清单中的单个组中添加了多个服务器,每个服务器都有不同的密码。当我们运行playbook时,它会询问sudo密码,但我们无法传递单个服务器的密码,因为其他服务器的密码将失败。我们使用的是数字海洋云,因此没有.pem关键文件选项 您能帮我解决一下如何传递多个主机的密码吗? 它应该是安全的 任何帮助或指导都将不胜感激。 提前感谢。在剧本中使用var_文件并将密码和serverIP存储在那里(如果安全,请使用py文件并

我们正在使用ansible,现在我们希望在服务器(远程主机)上进行一些配置更改。我们在清单中的单个组中添加了多个服务器,每个服务器都有不同的密码。当我们运行playbook时,它会询问sudo密码,但我们无法传递单个服务器的密码,因为其他服务器的密码将失败。我们使用的是数字海洋云,因此没有
.pem
关键文件选项

您能帮我解决一下如何传递多个主机的密码吗? 它应该是安全的

任何帮助或指导都将不胜感激。
提前感谢。

在剧本中使用var_文件并将密码和serverIP存储在那里(如果安全,请使用py文件并获取密码和serverIP),然后使用collect_事实检查ipv4并将密码映射到该映射。然后您可以在hosts、been等部分中声明

如果您需要为每个主机提供唯一的
sudo
密码,您需要在您的资源清册或
host\u vars
目录中的适当文件中设置
ansible\u been\u pass

显然,您不想将密码存储在明文中,因此我们可以使用来加密信息,以便运行时提供的单个密码允许Ansible读取密码


假设我们有一个包含三台主机的清单,
server
server2
server3
,我们首先要确保在我们的剧本旁边有一个
host\u vars
目录:

mkdir host_vars
接下来,我们使用以下命令创建一个加密文件,其中包含
ansible\u been\u pass
变量:

ansible-vault create host_vars/server1.yml
这将提示我们输入vault密码,然后在编辑器中打开该文件。我们添加了以下内容:

---
ansible_become_pass: secret1
server2
server3
执行相同的步骤,每次使用相同的vault密码(并将
ansible\u been\u pass
设置为每个主机的唯一
sudo
密码)。我们现在有以下文件:

$ find . -type f
./playbook.yml
./host_vars/server2.yml
./host_vars/server3.yml
./host_vars/server1.yml
现在,我们将这样运行我们的剧本:

ansible-playbook playbook.yml --ask-vault-pass
这将提示我们输入vault密码:

保险库密码:


现在Ansible将能够升级目标主机上的权限。

感谢您的帮助。它解决了我的问题