私はさまざまなプレイブックを含む役割構造を持っており、プレイブック内のすべてのタスクに対してコードを書き換える必要がないように、その一部にパブリック変数を割り当てる必要があります。可能ですか?
役割を呼び出すときに変数を割り当てることができることはわかっていますが、この場合、役割内の一部のプレイブックで機能するには変数が必要です。
答え1
はい。これは可能です。使用ansible_playname変数を選択します。たとえば、役割のデフォルト変数を作成します。
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"
}