The List manipulation doesnt work

227 views
Skip to first unread message

Rakesh Parida

unread,
Jan 22, 2020, 4:19:28 PM1/22/20
to Ansible Project
Hi Ansible Gurus,

I have created a list and from that list i want to prepare some customise list as per my need.
But when i execute my playbook i get at last step when i want to see my customised list i get an error  .
Can someone guide me where i am doing wrong.


TASK [Display Lists] ************************************************************************************************************************************************************************
ok: [localhost] => (item={ best_fav  }}) => {
    "msg": "{ best_fav  }}"
}
ok: [localhost] => (item=[AnsibleUndefined]) => {
    "msg": "[AnsibleUndefined]"
}
ok: [localhost] => (item=[AnsibleUndefined]) => {
    "msg": "[AnsibleUndefined]"
}


My playbook is as follows

---
- hosts: localhost
  tasks:
    - name: Create a list
      set_fact:
         some_value:
            - avenger
            - mk11
            - witcher
            - gow
            - saintsrow

    - debug:
        msg: "{{ some_value }}"

    - name: Print avenger
      set_fact:
        avenger_record: "{{ item }}"
      when: item is defined and item  == 'avenger'
      with_items: "{{ somevalue }}"

    - name: Print mk11
      set_fact:
        mk11_record: "{{ item }}"
      when: item is defined and item  == 'mk11'
      with_items: "{{ somevalue }}"

    - name: Print witcher
      set_fact:
        witcher_record: "{{ item }}"
      when: item is defined and item  == 'witcher'
      with_items: "{{ somevalue }}"

    - name: Print GOW
      set_fact:
        gow_record: "{{ item }}"
      when: item is defined and item  == 'gow'
      with_items: "{{ somevalue }}"

    - name: Print Saintsrow
      set_fact:
        saintsrow_record: "{{ item }}"
      when: item is defined and item  == 'saintsrow'
      with_items: "{{ somevalue }}"

    - name: Create an empty list variable
      set_fact:
        best_fav: []
        good_fav: []
        better_fav: []

    - name: Append string to list
      set_fact:
        best_fav: "{{ best_fav + [ avenger_record ] + [ mk11_record ] + [ witcher_record ] }}"
        good_fav: "{{ good_fav + [ gow_record ] }}"
        better_fav: "{{ better_fav + [ saintsrow_record ] }}"

    - name: Display Lists
      debug:
        msg: "{{ item }}"
      with_items:
         - "{ best_fav  }}"
         - "{{ good_fav }}"
         - "{{ better_fav }}"
      when: item != None

Rakesh Parida

unread,
Jan 23, 2020, 12:58:14 AM1/23/20
to Ansible Project
Kindly Help me on this as i am stuck

Vladimir Botka

unread,
Jan 23, 2020, 3:17:01 AM1/23/20
to Rakesh Parida, ansible...@googlegroups.com
On Wed, 22 Jan 2020 21:58:14 -0800 (PST)
Rakesh Parida <rakeshp...@gmail.com> wrote:

> > - hosts: localhost
> > tasks:
> > - name: Create a list
> > set_fact:
> > some_value:
> > - avenger
> > - mk11
> > - witcher
> > - gow
> > - saintsrow
> >
> > - debug:
> > msg: "{{ some_value }}"
> >
> > - name: Print avenger
> > set_fact:
> > avenger_record: "{{ item }}"
> > when: item is defined and item == 'avenger'
> > with_items: "{{ somevalue }}"

The name of the variable is 'some_value'. Correct other references as well

with_items: "{{ some_value }}"

> > [...]
> > - name: Display Lists
> > debug:
> > msg: "{{ item }}"
> > with_items:
> > - "{ best_fav }}"
> > - "{{ good_fav }}"
> > - "{{ better_fav }}"
> > when: item != None

Balance the braces. Correct

with_items:
- "{{ best_fav }}"

Notes:

* Use 'loop' instead of 'with_items'. See
https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.5.html#migrating-from-with-x-to-loop
* The variable 'item' is always defined in a loop (when not explicitly
renamed). The condition 'when: item is defined ...' is redundant. It is
enough to test e.g. 'when: item == "avenger"'
* The condition 'when: item != None' in the last task is also redundant. An
iteration will be skipped if the list is empty.
* Give a try to 'ansible-lint' and 'yamllint'

HTH,

-vlado
Reply all
Reply to author
Forward
0 new messages