Ist es möglich, Variablen für selektive Rollenspiele zuzuweisen?

Ist es möglich, Variablen für selektive Rollenspiele zuzuweisen?

Ich habe eine Rollenstruktur, die verschiedene Playbooks umfasst, und ich muss einigen davon gemeinsame Variablen zuweisen, um zu vermeiden, dass ich den Code für jede Aufgabe im Playbook neu schreiben muss. Ist das möglich?

Ich verstehe, dass wir die Variablen beim Aufrufen der Rolle zuweisen können, in diesem Fall muss es jedoch auf einige Playbooks in der Rolle anwendbar sein.

Antwort1

Ja, das ist möglich. Verwenden SieAnsible_Spielnameum die Variablen auszuwählen. Erstellen Sie beispielsweise Standardvariablen der Rolle

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

Weisen Sie eine Variable zu, die durch den Namen des Spiels ausgewählt wurde

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

Das Spielbuch

- name: pb1
  hosts: localhost
  roles:
    - test1

- name: pb2
  hosts: localhost
  roles:
    - test1

- name: pb9
  hosts: localhost
  roles:
    - test1

geben

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

verwandte Informationen