问题描述
我目前正在尝试设置一个“自动化服务器”,以便每天在我们的内部部署基础架构中使用它。
我的需求是在与不同用户共享的 Debian 10 虚拟机上使用 Ansible 2.10 + AWX,所以人们应该在他们自己的配置文件下使用 Ansible 和 CLI,以及网络上的 AWX。
(我在使用 pywinrm 库和 kerberos 客户端时遇到问题,所以我想尽可能多地使用 Debian 10 + Ansible 2.10)
经过多次试验,我对如何正确处理 Ansible 以在我的 VM 上进行协作使用感到困惑。
第一次尝试 - 使用 pip3 进行 Ansible:
Ansible 官方文档强烈建议不要使用 pip3 全局安装 Ansible,因此我们必须使用 pip3 install ansible --user
这样做,这意味着 bin/
文件夹链接到我的个人资料,也就是如果我删除我的个人资料,没有人可以再使用 ansible。
第二次尝试 - 在 virtualenv 中运行 Ansible :
应该是隔离它的最好的解决方案(使用 python 库等等...),所以我在 /home/ansible_venv/
中创建了我的虚拟环境,与必须访问 ansible 的人共享,然后链接 ansible bin文件夹到 $PATH 以设置它对每个用户可用。
这似乎是协作使用的完美解决方案,因为每个用户都可以管理他的剧本、图书馆......
...直到我安装需要 ansible-playbook
cli 的 AWX。
这是我需要的一些建议:
- 你们如何管理与不同用户共享的单个 VM 上的协作使用?不共享 Ansible 环境会更好吗?
- 为服务器中的每个用户安装 Ansible 2.10 的最佳方式是什么?
- 我该如何处理其中的 AWX 安装?
非常感谢!
解决方法
看到你的问题陈述,我能想到的最快的补救方法是使用容器。
- 在容器中运行 Ansible AWX; https://hub.docker.com/r/ansible/awx
- 要求用户使用 Ansible docker 镜像来运行 playbook;类似于 https://github.com/initanmol/ansible 的东西。
- 轻松管理主机 m/c 上的 Ansible 安装。
- 用户可以运行
docker run
命令从他们的帐户执行他们的剧本。您只需将它们添加到docker
组。