Назад | Перейти на главную страницу

Как уничтожить / удалить / сбросить значение переменной в Ansible?

Есть ли способ уничтожить переменную в Ansible?

На самом деле, у меня есть переменная {{version}}, которая используется во всех моих ролях для соответствующих пакетов. Когда я запускаю несколько ролей, значение версии одной роли передается другой - это связано с тем, что для какой-то роли я не указываю значение версии, чтобы она могла установить версию этого пакета по умолчанию, доступную для соответствующего m / c, например ubuntu / redhat и т. д.

Вот шаблон моей роли. Значение {{version}} из mysql передается в rabbitmq.

    roles:
- { role: mysql }
- { role: rabbitmq}

Я считаю, что если я могу уничтожить / удалить значение версии в каждой роли, это должно решить проблему.

Как уже указывалось, в Ansible невозможно отключить переменную.

Избегайте этой ситуации, добавляя префикс к именам переменных, например rabbitmq_version и так далее. ИМХО это лучшая практика.

Помимо того, что вы избежите ситуации, в которой вы столкнулись, это добавит ясности вашему host_vars и group_vars.

Чтобы отключить переменную, попробуйте запустить задачу set_fact, установив для переменной значение null, например:

- name: Unset variables
  set_fact:
    version:
    other_var:

Если у вас есть полный словарь, который можно просто переопределить dict с помощью null, лайк:

- name: Set dict
  set_fact:
    dict:
      rabbitmq_version: 1
      other_version: 2

- name: override dict to null
  set_fact:
    dict:

Что-то вроде other_var: просто "other_var": null в JSON. Вот как вы можете отключить переменные в Ansible. Хорошего дня.

Нет, в Ansible нет возможности отключить переменную (верхний уровень).

Единственное, что вы можете сделать, - это создать словарь и сохранить переменную в качестве ключа в этом словаре. Очистка "родительского" словаря по существу сделает dictionary.key is defined условное выражение работа.

вместо этого вы должны использовать переменную для каждой роли:

  roles:
    - role: mysql
      version: mysql_version
    - role: rabbitmq
      version: rabbitmq_version

или

  roles:
    - { role: mysql, version: mysql_version }
    - { role: rabbitmq, version: rabbitmq_version }

Вы можете ничего не установить. Сейчас использую вот так:

variable_name: ''