さまざまなプレイブックを含むロール構造があり、プレイブック内のすべてのタスクのコードを書き直すことを避けるために、これらのいくつかに共通の変数を割り当てる必要があります。これは可能ですか?
ロールを呼び出すときに変数を割り当てることができることは理解していますが、この場合は、ロール内のいくつかのプレイブックに適用できるようにする必要があります。
答え1
はい、可能です。ansible_プレイ名変数を選択します。たとえば、ロールのデフォルト変数を作成します
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"
}