web-dev-qa-db-ja.com

Ansibleタスクで現在のロール名を取得する方法

Ansibleタスクのyamlファイルで現在のロール名を取得するにはどうすればよいですか?

このようなことをしたい

---
# role/some-role-name/tasks/main.yml

- name: Create a directory which is called like the current role name
  action: file
          path=/tmp/"{{ role_name }}"
          mode=0755
          state=directory

このタスクの結果は、ディレクトリ/tmp/some-role-nameサーバー上

26
czerasz

Ansible 2.2以降:

{{role_name}}

Ansible 2.1以降:

{{role_path|basename}}

古いバージョン:

現在のバージョンのAnsibleではこれを行う方法はありません。代わりに機能する可能性のあるいくつかのオプションを次に示します。

1)tasks_main.ymlファイルの最初のタスクとして、set_factを使用してrole_name varをロールの名前に設定します

- set_fact: role_name=some-role-name

2)名前を持つパラメータをロールに渡します

- roles:
  - role: some-role-name
    role_name: some-role-name
19
jarv

最も簡単な方法は、以下を使用することです

{{role_path|basename}}
27
krad

この投稿 を参照してください:

ロールディレクトリを取得するには:

role_dir: "{{ lookup('pipe', 'pwd') | dirname }}"

ロール名を取得するには:

role_name: "{{ lookup('pipe', 'pwd') | dirname | basename }}"
5
tersmitten