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