ansible:使用逗号分隔的字符串创建列表

时间:2019-10-25 13:03:18

标签: ansible

我想用逗号分隔的字符串创建一个列表,以传递给ansible循环,有时变量也只能有一个值

var1 = test1,test2,也可以是var1 = test1

这是我的代码

- name: Separate facts
  set_fact: groups="{{ var1.split(',') }}"

- name: delete 
  gcp_compute_instance_group:
    name: "{{  item  }}"
    zone: xxx
    project: xxx
    auth_kind: serviceaccount
    service_account_file: xxx
    state: absent
  loop: "{{ groups }}" 

这不起作用,我怎么能达到我的要求

1 个答案:

答案 0 :(得分:1)

您的过滤器是正确的,您确实获得了一个列表变量。请参见下面的PB和输出:

---
- hosts: localhost
  gather_facts: false
  vars:
    var1: test1,test2
    var2: test3

  tasks:

  - name: Create the list
    set_fact: 
      list_var1: "{{ var1.split(',') }}"
      list_var2: "{{ var2.split(',') }}"

  - debug:
      var: list_var1

  - debug:
      var: list_var2

结果:

[is@orangehat-29 temp]$ ansible-playbook test.yml 
 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'


PLAY [localhost] ***********************************************************************************************************************************************************************************************************************

TASK [Create the list] *****************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] ***************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "list_var1": [
        "test1",
        "test2"
    ]
}

TASK [debug] ***************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "list_var2": [
        "test3"
    ]
}

PLAY RECAP *****************************************************************************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[is@orangehat-29 temp]$