Ansible: Create a List from Comma Separated String

Ansible: Create a List from Comma Separated String

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

1 Answer

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Marcus Vance
Author

Marcus Vance

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.