首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模板中Ansible中的通配符

模板中Ansible中的通配符
EN

Stack Overflow用户
提问于 2015-09-02 13:11:37
回答 1查看 2K关注 0票数 1

是否有人尝试在模板或攻略中使用通配符?

通配符在清单和列表主机中有效,但在模板或攻略中不起作用。

以下命令有效:

代码语言:javascript
复制
ansible -i inventory/ec2.py tag_Name_Hbase*  --list-host`

但同样的事情在playbook中是行不通的。

示例(不起作用):

代码语言:javascript
复制
Node: `{{ {{ ":2181,".join(groups["tag_Name_Zookeeper*"]) }}:2181 }}`

示例(工作中):

代码语言:javascript
复制
Node: `{{ {{ ":2181,".join(groups["tag_Name_Zookeeper_Kafka01"]) }}:2181 }}`
EN

回答 1

Stack Overflow用户

发布于 2015-09-03 02:40:31

dict key的通配符不起作用。您需要遍历group.keys()

playbook.yml:

代码语言:javascript
复制
---
- hosts: all
  gather_facts: no
  vars:
    Node: |
      {% set o = [] %}
      {%- for i in groups.keys() %}
        {%- if i.startswith("tag_Name_Zookeeper") %}
          {%- for j in groups[i] %}
            {%- if o.append(j+":2181") %}
            {%- endif %}
          {%- endfor %}
        {%- endif %}
      {% endfor %}
      {{ ",".join(o) }}
  tasks:
    - debug:
        var: Node
      run_once: yes
      delegate_to: localhost

主机:

代码语言:javascript
复制
[tag_Name_Zookeeper_1]
a
b
[tag_Name_Zookeeper_2]
c
d
[tag_Name_Zookeeper_3]
e
f
[others]
localhost

示例会话:

代码语言:javascript
复制
$ ansible-playbook -i hosts playbook.yml 

PLAY [all] ******************************************************************** 

TASK: [debug ] **************************************************************** 
ok: [a -> localhost] => {
    "var": {
        "Node": "a:2181,b:2181,c:2181,d:2181,e:2181,f:2181"
    }
}

PLAY RECAP ******************************************************************** 
a                          : ok=1    changed=0    unreachable=0    failed=0   
b                          : ok=1    changed=0    unreachable=0    failed=0   
c                          : ok=1    changed=0    unreachable=0    failed=0   
d                          : ok=1    changed=0    unreachable=0    failed=0   
e                          : ok=1    changed=0    unreachable=0    failed=0   
f                          : ok=1    changed=0    unreachable=0    failed=0   
localhost                  : ok=1    changed=0    unreachable=0    failed=0   
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32345046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档