¿Es posible asignar variables para jugadas selectivas en un rol?

¿Es posible asignar variables para jugadas selectivas en un rol?

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"
}

información relacionada