Ansible с использованием первого значения из массива

Моя последняя версия Ansible playbook предназначена для настройки новых пользователей в наших системах redhat. Каждая среда имеет свой собственный список пользователей, определенный следующим образом:

users:
  - loginid: "someuser"
    name: This_guy
    groups: []
    password: "{{ newuser_pass }}"
    ssh_public_key: []

и моя проблема здесь - это массив групп. Хотя здесь это пустой массив, его можно определить как

groups:
  - admins
  - dbas
  - managers

У меня есть задача с использованием пользовательского модуля Ansible, и я хочу установить для группы пользователя первое значение в этом массиве. Вот что я пробовал до сих пор:

group: "{{ item.groups.[0] if item.groups.[0] exists else 'users' }}"

Вы можете видеть здесь, что если никакие группы не определены, пользователь получает по умолчанию «пользователей» или общую группу. Но как взять «админов» как пользователя по умолчанию? очевидно, что указанная выше строка не работает.


person user2288360    schedule 15.03.2018    source источник


Ответы (1)


Попробуй это:

group: "{{ (item.groups | first) if (item.groups | count > 0) else 'users' }}"
person Konstantin Suvorov    schedule 16.03.2018
comment
Спасибо, Константин, я не знал, что первый действительный параметр. Работает отлично. - person user2288360; 16.03.2018