цикл с with_subelements ansible - PullRequest
0 голосов
/ 05 июня 2018

Привет, есть следующие переменные:

couchbase:
 - name: incre1
   ipaddress:
    - 10.16.9.177
    - 10.16.9.178
   buckets:
    - AA1
    - aa1

И у моего плаката есть следующее:

 - debug:
    msg: "Running backup as {{CBBACKUPMGR}} backup -r {{ item.1 }} --cluster couchbase://{{ item.0.ipaddress }}"
   register: example
   with_subelements:
     - "{{ couchbase }}"
     -  buckets

И я хочу перебрать ipaddress, а затем с ведрами, так что в основном я хочу видеть:

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

Тем не менее, при запуске playbook я вижу следующее:

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

1 Ответ

0 голосов
/ 05 июня 2018

это не то, что делает with_subelements.Если вы используете этот цикл «debug» для печати {{item}}, вы увидите, что на каждой итерации он создает список:

  1. родительского элемента из списка couchbase, которыйсодержит указанный вами субэлемент, БЕЗ хэша этого субэлемента и
  2. значение субэлемента этой итерации.

здесь вывод:

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

Как вы пояснили, вы намереваетесь создать все возможные комбинации между ipaddress и buckets.

, чтобы достичь этого, попробуйте выполнить следующее задание:

  - 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 только с одним элементом, как в вашем примере.

результат:

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

надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...