Ansible通过单个定义的变量传递多个vaules

时间:2018-01-29 08:51:34

标签: ansible ansible-2.x ansible-inventory ansible-facts

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

任务

- 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_name1,server_port1 server_name2,server_port2 ...... 每次我添加服务器时我都需要在任务中更新:(

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

1 个答案:

答案 0 :(得分:2)

我希望server_group有一个列表的服务器,重构你的变量以获得一个服务器列表,而不是一堆独立的子项:

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

在你的任务中:

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