首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用清单中定义的变量

如何使用清单中定义的变量
EN

Stack Overflow用户
提问于 2019-05-29 21:40:50
回答 1查看 27关注 0票数 0

我有多台服务器,每台服务器上的库存中都有多个容器。一些服务器可能在一个组中,一些在另一个组中,我想为每个容器指定url变量。我的清单:

我可以像with_dict一样遍历这些URL吗?如果是,又是如何实现的?

我的清单:

代码语言:javascript
复制
all:
  hosts:
    <1st-server-ip>:
      ansible_host: <IP>
    <2nd-server-ip>:
      ansible_host: <IP>
    <3rd-server-ip>:
      ansible_host: <IP>
  children:
    <1st-GROUP>:
      hosts:
        <1st-server-ip>:
          <containers>:
            <app-1>:
              url: '<URL>'
            <app-2>:
              url: '<URL>'
            <app-3>:
              url: '<URL>'
    <2nd-GROUP>:
      hosts:
        <2nd-server-ip>:
          <containers>:
            <app-4>:
              url: '<URL>'
            <app-5>:
              url: '<URL>'
    <3rd-GROUP>:
      hosts:
        <3rd-server-ip>:
          <containers>:
            <app-6>:
              url: '<URL>'
            <app-7>:
              url: '<URL>'
            <app-8>:
              url: '<URL>'
EN

回答 1

Stack Overflow用户

发布于 2019-05-30 07:56:12

json_query能够将结构简化为可以用include_tasks迭代的列表列表。

下面的剧本

代码语言:javascript
复制
- include_tasks: loop-url.yml
  loop: "{{ all.children|json_query('*.hosts.*.containers[]') }}"
  loop_control:
    loop_var: outer_item

使用包含的任务

代码语言:javascript
复制
> cat loop-url.yml
- debug:
    msg: "key: {{ item.key }} value: {{ item.value.url }}"
  loop: "{{ outer_item|dict2items }}"

提供(grep msg):

代码语言:javascript
复制
"msg": "key: app-7 value: URL"
"msg": "key: app-6 value: URL"
"msg": "key: app-8 value: URL"
"msg": "key: app-5 value: URL"
"msg": "key: app-4 value: URL"
"msg": "key: app-3 value: URL"
"msg": "key: app-2 value: URL"
"msg": "key: app-1 value: URL"

(标签标记<>已从数据中删除)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56362011

复制
相关文章

相似问题

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