Возможно удалить элемент из списка - PullRequest
0 голосов
/ 14 июня 2019

на основе переменной Мне нужны две версии «одного и того же» списка, и я хотел бы избежать дублирования кода следующим образом:

- set_fact: 
     type1: false    (or true!)

- set_fact:
    mylist: 
    - "show command1"
    - "show command2.1"
    - "show command3"
    - "show command4"
  when: type1

- set_fact:
    mylist: 
    - "show command1"
    - "show command2.1"
    - "show command2.2"
    - "show command3"
    - "show command4"
  when: not type1        

Есть ли способ (Джинджа?), Чтобы избежать дублирования?

Риккардо Руссо

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Мое текущее решение:

mytemplate.j2

mycmd:
- "show command1"
- "show command2.1"
{% if not type1 %}
- "show command2.2"
{% endif %}
- "show command3"
- "show command4"

plb.yaml

- set_fact:
    myvar: "{{ lookup('template', './mytemplate.j2') | from_yaml }}" 

- debug:
    var: myvar["cmd"]
0 голосов
/ 14 июня 2019

Вы можете объединить списки в ansible:

- set_fact:
    mylist:
    - "show command1"
    - "show command2.1"
    - "show command3"
    - "show command4"

- set_fact:
    mylist: '{{ mylist | union([ "show command2.2" ]) }}'
  when: not type1

Если порядок имеет значение, вы можете отсортировать список.

mylist: '{{ mylist | union([ "show command2.2" ]) | sort }}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...