Есть ли способ уничтожить переменную в 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: ''