如何将值传递给 ansible 目标

问题描述 投票:0回答:1

我有这个库存文件

[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下的子项将被选择。为什么不是这样,我应该如何编码才能控制任务的运行位置?

ansible ansible-inventory ansible-template
1个回答
0
投票

文件

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']"

我应该如何编码才能控制任务的运行位置?

您可能会再看一下如何构建库存,尤其是库存基础知识:格式、主机和组

© www.soinside.com 2019 - 2024. All rights reserved.