是否可以为Ansible playbook从两个不同的库存文件中指定组?

时间:2017-06-22 23:46:58

标签: ansible ansible-inventory

我的剧本(/home/user/Ansible/dist/playbooks/test.yml):

- hosts: regional_clients
  tasks:
    - shell: /export/home/user/ansible_scripts/test.sh
      register: shellout
    - debug: var=shellout
- hosts: web_clients
  tasks:
    - shell: /var/www/html/webstart/release/ansible_scripts/test.sh 
      register: shellout
    - debug: var=shellout
    - command: echo catalina.sh start
      register: output
    - debug: var=output

[regional_clients]中指定了/home/user/Ansible/webproj/hosts组,[web_clients]中指定了/home/user/Ansible/regions/hosts组。

有没有办法可以完成上述工作?目前,由于默认广告资源文件[regional_clients]中未定义[web_clients]/home/user/Ansible/dist/hosts,因此运行该剧本将失败。

1 个答案:

答案 0 :(得分:1)

是的,您可以编写一个简单的shell脚本:

#!/bin/sh
cat /home/user/Ansible/webproj/hosts /home/user/Ansible/regions/hosts

并在Ansible中将其称为dynamic inventory

ansible-playbook -i my_script test.yml

然而,这个问题在我看来与您的组织有关,而不是技术问题。如果您的环境如此复杂并由不同方维护,则使用某种配置数据库(以及Ansible中的动态库存来检索数据),而不是用户路径中的单个文件。 < / p>