首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在with_subelements ansible上循环

在with_subelements ansible上循环
EN

Stack Overflow用户
提问于 2018-06-05 06:23:49
回答 1查看 1.7K关注 0票数 1

您好,这里有以下变量:

代码语言:javascript
复制
couchbase:
 - name: incre1
   ipaddress:
    - 10.16.9.177
    - 10.16.9.178
   buckets:
    - AA1
    - aa1

我的plabook有以下几点:

代码语言:javascript
复制
 - debug:
    msg: "Running backup as {{CBBACKUPMGR}} backup -r {{ item.1 }} --cluster couchbase://{{ item.0.ipaddress }}"
   register: example
   with_subelements:
     - "{{ couchbase }}"
     -  buckets

我想遍历ipaddress,然后使用bucket,所以基本上我想看看:

代码语言:javascript
复制
Running backup as /opt/ouchbase backup -r AA1 --cluster couchbase://10.16.9.177
Running backup as /opt/ouchbase backup -r aa1 --cluster couchbase://10.16.9.177
Running backup as /opt/ouchbase backup -r AA1 --cluster couchbase://10.16.9.178
Running backup as /opt/ouchbase backup -r aa1 --cluster couchbase://10.16.9.178

然而,在运行攻略时,我看到了以下内容:

代码语言:javascript
复制
Running backup as /opt/ouchbase backup -r AA1 --cluster couchbase://[u'10.16.9.177', u'10.16.9.178']
Running backup as /opt/ouchbase backup -r aa1 --cluster couchbase://[u'10.16.9.177', u'10.16.9.178']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 06:57:15

这不是with_subelements所做的。如果您使用这个"debug“循环来打印{{ item }},您将看到在每次迭代中,它都会创建一个列表:

  1. 包含您指定的子元素的couchbase列表中的父元素,不带该子元素的哈希,
  2. 该迭代的子元素的值。

下面是输出:

代码语言:javascript
复制
TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [localhost] => (item=None) => {
    "msg": [
        {
            "ipaddress": [
                "10.16.9.177", 
                "10.16.9.178"
            ], 
            "name": "incre1"
        }, 
        "AA1"
    ]
}
ok: [localhost] => (item=None) => {
    "msg": [
        {
            "ipaddress": [
                "10.16.9.177", 
                "10.16.9.178"
            ], 
            "name": "incre1"
        }, 
        "aa1"
    ]
}

PLAY RECAP

正如您所阐明的,您的意图是在ipaddressbuckets之间生成所有可能的组合。

要实现这一点,请尝试以下任务:

代码语言:javascript
复制
  - debug:
      msg: "Running backup as {{CBBACKUPMGR}} backup -r {{ item[0] }} --cluster couchbase://{{ item[1] }}"
    register: example
    with_items:
      - "{{ lookup('nested', couchbase[0].ipaddress, couchbase[0].buckets) }}"

这里假设您的couchbase列表变量只有一个元素,就像在您的示例中一样。

结果:

代码语言:javascript
复制
TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [localhost] => (item=None) => {
    "msg": "Running backup as /opt/ouchbase backup -r 10.16.9.177 --cluster couchbase://AA1"
}
ok: [localhost] => (item=None) => {
    "msg": "Running backup as /opt/ouchbase backup -r 10.16.9.177 --cluster couchbase://aa1"
}
ok: [localhost] => (item=None) => {
    "msg": "Running backup as /opt/ouchbase backup -r 10.16.9.178 --cluster couchbase://AA1"
}
ok: [localhost] => (item=None) => {
    "msg": "Running backup as /opt/ouchbase backup -r 10.16.9.178 --cluster couchbase://aa1"
}

PLAY RECAP

希望能有所帮助。

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

https://stackoverflow.com/questions/50689572

复制
相关文章

相似问题

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