Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ansible: create a list from comma separated string

Tags:

ansible

I want to create a list from comma separated string to pass to loop in ansible, sometime variable can have only one value also

var1=test1,test2 and it can be var1=test1 also

here is my code

- 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 }}" 

this doesn't work, how can i achieve my requirement

like image 403
Jack Avatar asked Oct 25 '19 13:10

Jack


1 Answers

your filter is correct, you do get a list variable. please see below PB and output:

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

result:

[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]$ 
like image 55
ilias-sp Avatar answered Nov 01 '22 01:11

ilias-sp