是否可以为 Ansible 剧本指定来自两个不同清单文件的组?
Is it possible to specify groups from two different inventory files for an Ansible playbook?
我的剧本(/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
.
中定义
是的,你可以写一个简单的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 中的动态清单来检索数据),而不是用户路径中的单个文件。
我的剧本(/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
.
是的,你可以写一个简单的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 中的动态清单来检索数据),而不是用户路径中的单个文件。