Table of Contents

Ansible - List Variable

About

List variable

Initialization

a_list: []
packages: ['mapr-compat-suse', 'mapr-core', 'mapr-core-internal']
another_list:
  - 1
  - 2
  - 3

or from two_sources

unixodbc_cfg_sources:
  - source_name: source 1
    driver_file: /file/1
    driver_properties:
      property_1: value_1
  - source_name: source 2
    driver_file: /file/2
    driver_properties:
      property_2_1: value_2_1
      property_2_2: value_2_2

Default

{{ mylist|default([]) }}

Management

Min

{{ list1 | min }}

Max

{{ [3, 4, 2] | max }}

List

{{ __java_packages | list }}

Flatten

{{ [3, [4, 2] ] | flatten }}
{{ [3, [4, [2]] ] | flatten(levels=1) }}

Add an element

{{ list }} + [ 'element' ] 
{{ list }} + [ 'element', 'element2' ] 
[ 'configure' ] + {{ list_arguments }} + ['--add-module=../{{ my_var }}']

Concatenate two lists

{{ list1 + list2 }}

In

'webserver' in group_names

Join

{{ my_list | join(' ') }}
{{ my_list | join('\n') }}

Loop

Ansible - Loop

- name: Install mapr-core
  vars:
    packages_Suse: ['mapr-compat-suse', 'mapr-core', 'mapr-core-internal']
    packages_RedHat: ['mapr-core', 'mapr-core-internal']
    packages_Debian: ['mapr-core', 'mapr-core-internal']
  package: name={{ item }} state=present
  with_items: "{{ vars['packages_' + ansible_os_family] }}"
  register: core_result

Condition Is a non-empty list

- name: Ensure sshd_config contains AllowUsers directive
  when:
    - sshd_allowed_users is defined
    # is a list condition as specified here: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_tests.html#type-tests
    - sshd_allowed_users is not string
    - sshd_allowed_users is not mapping
    - sshd_allowed_users is iterable
    # not empty
    - sshd_allowed_users | length > 0

Ref

https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html