Tengo una estructura de roles que involucra varios libros de jugadas y necesito asignar variables comunes a algunos de ellos para evitar reescribir el código para cada tarea en el libro de jugadas. es posible?
Entiendo que podemos asignar las variables al llamar al rol, sin embargo, en este caso necesito que sea aplicable a algunos manuales del rol.
Respuesta1
Sí. Es posible. Usaransible_play_namepara seleccionar las variables. Por ejemplo, cree variables predeterminadas del rol.
shell> cat roles/test1/defaults/main.yml
my_vars:
pb1: 'var1'
pb2: 'var2'
default: 'default'
Asignar una variable seleccionada por el nombre de la obra
shell> cat roles/test1/tasks/main.yml
- set_fact:
myvar: "{{ my_vars[ansible_play_name]|default(my_vars.default) }}"
- debug:
var: myvar
el libro de jugadas
- name: pb1
hosts: localhost
roles:
- test1
- name: pb2
hosts: localhost
roles:
- test1
- name: pb9
hosts: localhost
roles:
- test1
dar
PLAY [pb1] **************************************************************************************
TASK [test1 : set_fact] *************************************************************************
ok: [localhost]
TASK [test1 : debug] ****************************************************************************
ok: [localhost] => {
"myvar": "var1"
}
PLAY [pb2] **************************************************************************************
TASK [test1 : set_fact] *************************************************************************
ok: [localhost]
TASK [test1 : debug] ****************************************************************************
ok: [localhost] => {
"myvar": "var2"
}
PLAY [pb9] **************************************************************************************
TASK [test1 : set_fact] *************************************************************************
ok: [localhost]
TASK [test1 : debug] ****************************************************************************
ok: [localhost] => {
"myvar": "default"
}