在使用库存信息时在本地运行Ansible剧本

时间:2019-01-18 19:53:08

标签: ansible

我有一组剧本,用相当复杂的设置配置了7台服务器。这些剧本由主剧本运行,并大量使用存储在清单文件中的信息,尤其是groupsgroup_vars

剧本在设置好的情况下运行良好,在该设置中,我有一个可以将SSH转换为7个远程服务器的中央服务器。 不幸的是,我工作的公司在特殊的安全解决方案后面运行其服务器,该解决方案主动阻止Ansible创建SSH连接。 通常,我们创建单个和简单的剧本,通过ssh手动登录到目标服务器,然后通过以下方式运行剧本:

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放入服务器。当我运行主剧本时,Ansible应该检测(例如)它在server1上运行,并且仅运行为此服务器定义的那些剧本。

0 个答案:

没有答案