首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可能的访问同一组变量不同的子主机组

可能的访问同一组变量不同的子主机组
EN

Stack Overflow用户
提问于 2019-06-09 16:10:32
回答 1查看 1.4K关注 0票数 0

我正在尝试运行一个基于父组(或父组的父组)循环的角色,该组具有两个或多个具有一定数量主机的子组。这两个子组具有相同的group_vars,因此我尝试分别为每个子组定义group_vars,但是执行该角色只会从任何一个子组继承group_vars。我理解Ansible变量合并,但我的特定用例(希望在主机组的不同层次上运行相同的角色)在尝试基于父组或父组的父组在循环中运行角色时,需要为每个子组加载group_vars。请在这方面提供帮助。

库存档案:

代码语言:javascript
复制
    [test1]
    server1
    server2

    [test2]
    server3
    server4

    [test:children]
    test1
    test2

    [test0:children]
    test

/group_vars/test1.yml:

代码语言:javascript
复制
   param1: 1234
   param2: 3456

/group_vars/test2.yml:

代码语言:javascript
复制
   param1: 7867
   param2: 0987

角色/任务/main.yml:

代码语言:javascript
复制
- uri:
    url: http://{{ item }}:{{ hostvars[groups['test'][0]]['param1'] }}/{{ hostvars[groups['test'][0]]['param2'] }}/
    return_content: yes 
  register: response
  ignore_errors: true
  loop: "{{ groups['test'] }}"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-09 19:34:08

变化

代码语言:javascript
复制
hostvars[groups['test'][0]]['param1']

代码语言:javascript
复制
hostvars[item].param1

使用下面问题中的清单文件和group_vars

代码语言:javascript
复制
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}: {{ hostvars[item].param1 }} {{ hostvars[item].param2 }}"
      loop: "{{ groups['test'] }}"

提供:

代码语言:javascript
复制
PLAY [localhost] *****************************************************

TASK [debug] *********************************************************
ok: [localhost] => (item=server1) => {
    "msg": "server1: 1234 3456"
}
ok: [localhost] => (item=server2) => {
    "msg": "server2: 1234 3456"
}
ok: [localhost] => (item=server3) => {
    "msg": "server3: 7867 0987"
}
ok: [localhost] => (item=server4) => {
    "msg": "server4: 7867 0987"
}

PLAY RECAP *************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0   

下一个选项是下面的play,它打印相同的消息。

代码语言:javascript
复制
- hosts: test
  tasks:
    - debug:
        msg: "{{ inventory_hostname }}: {{ param1 }} {{ param2 }}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56512970

复制
相关文章

相似问题

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