Как назначить значение по умолчанию для переменной ANRAY ARRAY - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть массив user_names, как показано ниже:

Примечание. Массив "user_names" может содержать ноль или более записей в зависимости от задачи "Register username"

Incase, "user_names" isпусто Я хочу назначить и напечатать сообщение «Не применимо», иначе я хочу напечатать массив.

Для этой цели я использую переменную «listusers» и метод default (). Однако при печати listusers.results, listusers.stdout выдается ошибка для переменной «listusers», и я не уверен, как это сделать.

tasks:    
- name: Set default values
  tags: always
  set_fact:
    user_names: []

- name: Register username
 tags: stop,start
  set_fact:
    user_names: "{{ user_names + [item.stdout] | unique }}"
  when: item.rc == 0
  with_items:
    - "{{ curr_user_ids.results }}"

- name: Status 
  tags: always,status
  set_fact:
    listusers: "{{ user_names | default('Not Applicable') }}

Это работает для переменных, не входящих в массив, но для переменной массива IЯ не уверен в решении.

Можете ли вы предложить?

1 Ответ

0 голосов
/ 08 ноября 2019

Это работает для переменных, не относящихся к массиву, но для переменной массива я не уверен в решении.

Вам нужно найти user_names | union([item.stdout])

- name: Register username
 tags: stop,start
  set_fact:
    user_names: "{{ user_names | union([item.stdout]) }}"

Как видите, приятным побочным эффектом union является то, что он также автоматически делает результирующий list уникальным, поскольку это set операция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...