Ansible приоритет переменной - сброс значения переопределенной переменной обратно в значение group_vars - PullRequest
0 голосов
/ 22 апреля 2020

Как я могу сбросить переопределенную переменную в книге воспроизведения обратно на значение, которое определено в group_vars для этой переменной

Так, например, если у меня есть переменная name: "Hello from group_vars" определено в групповых изменениях, но во время выполнения книги воспроизведения я переопределяю его, основываясь на некотором условии с установленным фактом

  • set_fact: name: "Переопределить где-нибудь в книге воспроизведения только для следующего задания", когда : << некоторое условие, которое является действительным >>

  • name: отладка следующей задачи: msg: "Name is {{name}}" # Это покажет значение из set_fact

, но для следующей задачи я хотел бы изменить имя на значение, на которое был установлен beeen-адрес в group_vars, пока он все еще в том же исполнении playbook

  • set_fact: name: << Как сбросить его до значения group_vars logi c >>

  • Имя: показать значение debug: msg: "Nanme is {{namne}} "# Теперь это должно показать значение, установленное в group_vars" Hello from group vars "* 1 025 *

Любые идеи о том, как этого добиться. Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

Как правило, как только вы set_fact для хоста, вы не можете go вернуться назад, если не сохраните копию исходного значения и set_fact позже или повторно соберете слой фактов (используя например, различные игры в вашей книге игр.

Если можете, используйте специальный факт (и, возможно, значения по умолчанию) для достижения аналогичной цели.

Например:

- name: conditionally set fact
  set_fact: 
     special_name: "overridden value"
  when: my_condition 
- name: use fact or default
  debug: 
     msg: "Name is {{ special_name | default(name)}}"

Если вы хотите использовать переопределенное значение чаще, вы можете использовать вторую переменную для обработки присваивания:

- name: conditionally set fact
  set_fact: 
     special_name: "overridden value"
  when: my_condition 
- name: use default globally
  set_fact:
     special_name: "{{ special_name | default(name) }}"
- name: use fact or default
  debug: 
     msg: "Name is {{ special_name }}"

Это немного длиннее, но дает вам значение, на которое вы можете рассчитывать в нескольких местах без необходимости установки значения по умолчанию в нескольких местах.

...