Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting ansible中2个列表的所有组合_Sorting_Ansible - Fatal编程技术网

Sorting ansible中2个列表的所有组合

Sorting ansible中2个列表的所有组合,sorting,ansible,Sorting,Ansible,我在ansible中有两个变量作为列表 host_list: - 1.1.1.1 - 2.2.2.2 port_list: - 443 - 80 我想得到第三个变量作为列表: all_comb = [[1.1.1.1, 443], [1.1.1.1, 80], [2.2.2.2, 443], [2.2.2.2, 80]] 如何在Ansible中获取它?您可以将与_nested或查询('nested',listA,listB)循环一起使用,请参见以下两种实现:

我在ansible中有两个变量作为列表

host_list:
    - 1.1.1.1
    - 2.2.2.2

port_list:
    - 443
    - 80
我想得到第三个变量作为列表:

all_comb = [[1.1.1.1, 443], [1.1.1.1, 80], [2.2.2.2, 443], [2.2.2.2, 80]]

如何在Ansible中获取它?

您可以将
与_nested
查询('nested',listA,listB)
循环一起使用,请参见以下两种实现:

带有嵌套的\u:

- name: merge lists
  set_fact:
    merged_list: "{{ merged_list|default([]) + [item] }}"
  with_nested:
  - "{{ host_list }}"
  - "{{ port_list }}"

- name: display result
  debug:
    var: merged_list
- name: merge lists
  set_fact:
    merged_list: "{{ merged_list|default([]) + [item] }}"
  loop: "{{ query('nested', host_list, port_list) }}"

- name: display result
  debug:
    var: merged_list
PLAY [localhost] ******************************************************************************************************************************************************************************************************

TASK [merge lists] ****************************************************************************************************************************************************************************************************
ok: [localhost] => (item=[u'1.1.1.1', 443])
ok: [localhost] => (item=[u'1.1.1.1', 80])
ok: [localhost] => (item=[u'2.2.2.2', 443])
ok: [localhost] => (item=[u'2.2.2.2', 80])

TASK [display result] *************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "merged_list": [
        [
            "1.1.1.1", 
            443
        ], 
        [
            "1.1.1.1", 
            80
        ], 
        [
            "2.2.2.2", 
            443
        ], 
        [
            "2.2.2.2", 
            80
        ]
    ]
}
带查询:

- name: merge lists
  set_fact:
    merged_list: "{{ merged_list|default([]) + [item] }}"
  with_nested:
  - "{{ host_list }}"
  - "{{ port_list }}"

- name: display result
  debug:
    var: merged_list
- name: merge lists
  set_fact:
    merged_list: "{{ merged_list|default([]) + [item] }}"
  loop: "{{ query('nested', host_list, port_list) }}"

- name: display result
  debug:
    var: merged_list
PLAY [localhost] ******************************************************************************************************************************************************************************************************

TASK [merge lists] ****************************************************************************************************************************************************************************************************
ok: [localhost] => (item=[u'1.1.1.1', 443])
ok: [localhost] => (item=[u'1.1.1.1', 80])
ok: [localhost] => (item=[u'2.2.2.2', 443])
ok: [localhost] => (item=[u'2.2.2.2', 80])

TASK [display result] *************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "merged_list": [
        [
            "1.1.1.1", 
            443
        ], 
        [
            "1.1.1.1", 
            80
        ], 
        [
            "2.2.2.2", 
            443
        ], 
        [
            "2.2.2.2", 
            80
        ]
    ]
}
后者的结果:

- name: merge lists
  set_fact:
    merged_list: "{{ merged_list|default([]) + [item] }}"
  with_nested:
  - "{{ host_list }}"
  - "{{ port_list }}"

- name: display result
  debug:
    var: merged_list
- name: merge lists
  set_fact:
    merged_list: "{{ merged_list|default([]) + [item] }}"
  loop: "{{ query('nested', host_list, port_list) }}"

- name: display result
  debug:
    var: merged_list
PLAY [localhost] ******************************************************************************************************************************************************************************************************

TASK [merge lists] ****************************************************************************************************************************************************************************************************
ok: [localhost] => (item=[u'1.1.1.1', 443])
ok: [localhost] => (item=[u'1.1.1.1', 80])
ok: [localhost] => (item=[u'2.2.2.2', 443])
ok: [localhost] => (item=[u'2.2.2.2', 80])

TASK [display result] *************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "merged_list": [
        [
            "1.1.1.1", 
            443
        ], 
        [
            "1.1.1.1", 
            80
        ], 
        [
            "2.2.2.2", 
            443
        ], 
        [
            "2.2.2.2", 
            80
        ]
    ]
}
干杯

使用过滤器

-设置事实:
所有目录:{{主机列表}产品(端口列表)}

很高兴听到这个消息:)