首页 > 解决方案 > 在使用库存信息的同时在本地运行 ansible playbook

问题描述

我有一套配置 7 台服务器的剧本,设置相当复杂。这些剧本由主剧本运行,并大量使用存储在库存文件中的信息,尤其groupsgroup_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。

标签: ansible

解决方案


推荐阅读