ansible - 在使用库存信息的同时在本地运行 ansible playbook
问题描述
我有一套配置 7 台服务器的剧本,设置相当复杂。这些剧本由主剧本运行,并大量使用存储在库存文件中的信息,尤其groups
是group_vars
.
这些剧本在我有一个能够通过 ssh 连接到 7 个远程服务器的中央服务器的设置中运行良好。不幸的是,我工作的公司在一个特殊的安全解决方案后面运行他们的服务器,该解决方案积极阻止 Ansible 创建 SSH 连接。通常我们创建单个简单的 playbook,通过 ssh 手动登录到目标服务器并以这种方式运行 playbook:
ansible-playbook -i "localhost," -c local someplaybook.yml
如果我要登录所有 7 台服务器并仅在相关服务器上运行一些剧本,这可以正常工作,但会涉及太多工作。
我想要实现的是这样的:
ssh server1
cd /tmp
git clone https://gitserver/RepoWithPlaybooks
cd playbooks
ansible-playbook -i .... ../inventories/inventory-nameofstage masterplaybook.yml
(简化的)库存如下所示:
[function1]
server1.domain
server2.domain
[function2]
server1.domain
server3.domain
[function3]
server2.domain
server4.domain
server5.domain
[function4]
server2.domain
server4.domain
server6.domain
server7.domain
这些剧本都包含以下条目:
- name Install function1
hosts: function1
所有需要的文件都通过git clone
. 当我运行主 playbook 时,Ansible 应该检测(例如)它是否运行server1
并仅运行为该服务器定义的那些 playbook。
解决方案
推荐阅读
- asynchronous - 我是否需要重新编写代码以使所有数据库操作异步?
- c++ - 我们不能在 C++ 中不使用指向对象的指针来创建节点吗?
- reactjs - 在 axios 发布后使用什么反应生命周期组件来更新状态
- c# - 左联接/合并具有非唯一列的数据表 c#
- swift - NFCTagReaderSession 的“缺少必需的权利”
- reactjs - 在表单提交时恢复表单值取消
- reactjs - 在 React Native 的 const 中插入 if/else 语句的正确方法?
- django - 在项目中使用 django 时以随机间隔注销会话
- python - Matplotlib 正在运行,但图像非常小
- gremlin - 获取路径上的年龄差距产品