É possível atribuir variáveis ​​para jogadas seletivas em um papel?

É possível atribuir variáveis ​​para jogadas seletivas em um papel?

Tenho uma estrutura de funções que envolve vários manuais e preciso atribuir variáveis ​​comuns a alguns deles para evitar reescrever o código para cada tarefa do manual. Isso é possível?

Entendo que podemos atribuir as variáveis ​​ao chamar a função, porém, neste caso, preciso que seja aplicável a alguns playbooks da função.

Responder1

Sim. é possível. Usaransible_play_namepara selecionar as variáveis. Por exemplo, crie variáveis ​​padrão da função

shell> cat roles/test1/defaults/main.yml
my_vars:
  pb1: 'var1'
  pb2: 'var2'
  default: 'default'

Atribuir uma variável selecionada pelo nome da peça

shell> cat roles/test1/tasks/main.yml
- set_fact:
    myvar: "{{ my_vars[ansible_play_name]|default(my_vars.default) }}"
- debug:
    var: myvar

O manual

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

informação relacionada