나는 다양한 플레이북을 포함하는 역할 구조를 갖고 있으며 플레이북의 모든 작업에 대한 코드를 다시 작성하지 않도록 이들 중 몇 가지에 공통 변수를 할당해야 합니다. 이것이 가능한가?
역할을 호출할 때 변수를 할당할 수 있다는 것을 이해합니다. 하지만 이 경우 역할의 몇 가지 플레이북에 적용 가능해야 합니다.
답변1
예. 있을 수있다. 사용ansible_play_name변수를 선택합니다. 예를 들어 역할의 기본 변수를 만듭니다.
shell> cat roles/test1/defaults/main.yml
my_vars:
pb1: 'var1'
pb2: 'var2'
default: 'default'
극명으로 선택한 변수를 할당
shell> cat roles/test1/tasks/main.yml
- set_fact:
myvar: "{{ my_vars[ansible_play_name]|default(my_vars.default) }}"
- debug:
var: myvar
플레이북
- name: pb1
hosts: localhost
roles:
- test1
- name: pb2
hosts: localhost
roles:
- test1
- name: pb9
hosts: localhost
roles:
- test1
주다
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"
}