Global variables 如何获取ansible任务中的当前角色名称

Global variables 如何获取ansible任务中的当前角色名称,global-variables,ansible,ansible-playbook,Global Variables,Ansible,Ansible Playbook,如何在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 此任

如何在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/某个角色名
,从Ansible 2.2开始:

{{role\u name}}

自Ansible 2.1起:

{{role_path | basename}}

旧版本:

在当前版本的Ansible中无法做到这一点,以下是一些可能适合您的选项:

1) 使用set_fact将role_name var设置为tasks/main.yml文件中第一个任务的角色名称

- set_fact: role_name=some-role-name
2) 将参数传递给具有名称的角色

- roles:
  - role: some-role-name
    role_name: some-role-name
见:

要获取角色目录,请执行以下操作:

role_dir: "{{ lookup('pipe', 'pwd') | dirname }}"
要获取角色名称,请执行以下操作:

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

最简单的方法是只使用以下命令

{{role_path|basename}}

从Ansible 2.8开始,有
Ansible_play_name
,其中包含当前执行的播放的名称


在ansible 2.1中,它为我提供了剧本目录,而不是ansible 2.2中的角色目录。角色名称和角色路径都是事实。这已经过时了,现在只需像原始帖子一样使用即可