我正在尝试找出最干净和/或最安全的方法来管理 AWX/Tower/Ansible 中的多服务器(linux)环境。
我已看过一些有关此主题的帖子,但似乎没有明确的答案说明哪种方法最安全。
假设我想针对 20 个不同的 Linux 服务器使用单个模板/剧本,所有服务器都有不同的用户和密码/ sudo 密码。
我可以想到几个选择;
在每个主机上创建一个专用的“ansible”用户,AWX 服务器或本地服务器拥有私钥信息。我认为这在大多数情况下都是可以的,但是如果尝试执行需要 root 权限的操作,除非“ansible”用户在每个服务器上的密码相同,否则 sudo 密码会出现问题。可以将其设置为具有 NOPASSWD sudo 访问权限,但这感觉不对。
保持当前每个主机具有不同的用户和密码组合的情况,但可能在加密(vault)vars 文件中指定凭据。
为每台主机设置单独的模板,每个模板都具有该主机的正确机器凭据集。这也感觉有点不对劲,而且非常麻烦/难以维护。
请告诉我是否遗漏了一些明显的内容。
答案1
ansible
我通过为用户提供用于登录的私钥并指定特定系统ansible_become_pass
来实现此功能host_vars/<host>/vault.yml
。
ansible
用户自然地属于该sudo
群组。
这样,用户帐户本身就有 SSH 密钥安全性,并且每个主机都有唯一的密码,由 Ansible 在首次配置系统时生成。
此外,还可以禁用用户的密码验证ansible
。