役割内の選択的なプレイに変数を割り当てることは可能ですか?

役割内の選択的なプレイに変数を割り当てることは可能ですか?

さまざまなプレイブックを含むロール構造があり、プレイブック内のすべてのタスクのコードを書き直すことを避けるために、これらのいくつかに共通の変数を割り当てる必要があります。これは可能ですか?

ロールを呼び出すときに変数を割り当てることができることは理解していますが、この場合は、ロール内のいくつかのプレイブックに適用できるようにする必要があります。

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

関連情報