役割のオプションプレイに変数を割り当てることはできますか?

役割のオプションプレイに変数を割り当てることはできますか?

私はさまざまなプレイブックを含む役割構造を持っており、プレイブック内のすべてのタスクに対してコードを書き換える必要がないように、その一部にパブリック変数を割り当てる必要があります。可能ですか?

役割を呼び出すときに変数を割り当てることができることはわかっていますが、この場合、役割内の一部のプレイブックで機能するには変数が必要です。

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

関連情報