Ansible 使用单个定义的变量传递多个值

Ansible Pass multiple vaules with single defined Variable

每次使用以下任务创建新服务器时,我都需要将服务器添加到服务组。

任务

- name: Create a service group
  a10_service_group_v3:
    validate_certs: no
    host: "{{ item.0.a10_host }}"
    state: "{{ item.1.service_state }}"
    username: "{{ item.0.user }}"
    password: "{{ item.0.pass }}"
    service_group: "{{ item.1.group_name }}"
    reset_on_server_selection_fail: yes
    servers:
      - name: "{{ item.1.server_name1 }}"
        port: "{{ item.1.server_port1 }}"
    overwrite: yes
    write_config: yes
    ignore_errors: yes
    with_nested:
      - "{{ a10 }}"
      - "{{ service_group }}"

变量:

service_group:
  - group_name: bif_sg
    service_state: present
    server_name1: bif01
    server_port1: 80

我需要帮助来传递 server_name 和 server_port 的变量,假设我有 3 个服务器要添加到任务中的服务组,我需要添加 3 次 server_name 1, server_port1 个 server_name2个,server_port2个...... 每次我添加服务器时,我也需要更新任务:(

有没有办法在任务中使用单个定义值多次传递 sever_name 和 serer_port。

我希望 server_group 有一个 列表 服务器,重构你的变量以包含服务器列表而不是一堆单独的子键:

service_group:
  - group_name: bif_sg
    service_state: present
    servers:
      - name: bif01
        port: 80
      - name: bif02
        port: 8080

在你的任务中:

...
servers: "{{ item.1.servers }}"
...