Нередко возникает необходимость передать переменную из одной роли в другую во время выполнения play в Ansible. Это может быть важным для выполнения определенных задач или для настройки определенных параметров в процессе автоматизации. Однако, иногда требуется передать переменную, которая сама является переменной. Как это сделать? Для этого можно использовать include_role вместе с использованием блока vars_prompt, который позволяет указывать значения переменной при выполнении роли.
Include_role позволяет нам переиспользовать роли в Ansible. Он загружает и выполняет роль из указанного пути, передавая ей необходимые переменные. Для передачи переменной, которая сама является переменной, воспользуемся блоком vars_prompt. В нем мы можем указать название переменной, которая будет запрошена при выполнении роли, и присвоить ей значение.
Пример использования include_role с передачей переменной, которая сама является переменной:
— name: Include role with variable
include_role:
name: my_role
vars_prompt:
— name: variable_name
prompt: «Enter the value of the variable»
private: no
В данном примере мы используем include_role для выполнения роли my_role и передаем в нее переменную variable_name. При выполнении роли будет запрошено значение этой переменной с помощью prompt, и после ввода значения оно будет доступно в роли my_role для использования.
Как передать переменную через include_role в ansible роль?
Для передачи переменной через include_role
необходимо выполнить несколько шагов:
- Определить переменную, которая будет содержать в себе значения переменной.
- Добавить переменную в
vars
секцию в файлеrole/tasks/main.yml
роли вызывающей роль. - Внутри вызываемой роли получить переданное значение через переменную, в которой находится значение переменной.
Пример передачи переменной через include_role
:
- name: Include role and pass variable
include_role:
name: my_role
tasks_from: main.yml
vars:
my_variable: "value"
В вызываемой роли находится значение нужной переменной в переменной {{ my_variable }}
.
Таким образом, можно эффективно использовать переменную, которая сама по себе является переменной, при передаче через include_role
в ansible роль.