我有这个库存文件
[app:children]
CL
#BA
#EA
#EB
#EI
[BA]
TEST-cl1 ansible_user=ec2-user modulename=BA
[CL]
TEST-cl1 ansible_user=ec2-user modulename=CL
TEST-cl1 ansible_user=ec2-user modulename=CL
TEST-cl1 ansible_user=ec2-user modulename=CL
[EA]
TEST-cl1 ansible_user=ec2-user modulename=EA
[EB]
TEST-cl1 ansible_user=ec2-user modulename=EB
[EI]
TEST-cl1 ansible_user=ec2-user modulename=EI
假设我的剧本是这样的:
---
- name: RUNNING DEPLOYMENT TASKS
hosts: app
connection: ssh
gather_facts: no
remote_user: ec2-user
tasks:
- name: print visit particulars
shell: echo {{ modulename }} >> f
文件“f”包含什么?
我希望看到“CL”,因为除 CL 之外的所有内容都在该应用程序组中被注释掉。然而我看到EI,我觉得很令人失望(你明白为什么吗?)
由于我在我的剧本中指定了hosts:app,我认为app下的子项将被选择。为什么不是这样,我应该如何编码才能控制任务的运行位置?
文件
将包含什么?f
debug
模块进行测试 – 在执行期间打印语句。
由于我在剧本中指定了
,我认为hosts: app
下的孩子将被选择。app
对了,是这样的。
库存文件为
example.com
的最小示例
[BA]
ba.example.com modulename=BA
[CL]
cl.example.com modulename=CL
[app:children]
CL
和一本剧本
modulename.yml
---
- hosts: app
become: false
gather_facts: false
tasks:
- debug:
msg: |
"modulename: {{ modulename }}"
"group_names: {{ group_names }}"
通过
调用ansible-playbook --inventory example.com modulename.yml
将产生
的输出TASK [debug] *********************
ok: [cl.example.com] =>
msg: |-
"modulename: CL"
"group_names: [u'CL', u'app']"
我应该如何编码才能控制任务的运行位置?
您可能会再看一下如何构建库存,尤其是库存基础知识:格式、主机和组。