如何在ansible任务中获取当前角色名称

cze*_*asz 26 global-variables ansible ansible-playbook

如何在ansible task 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
Run Code Online (Sandbox Code Playgroud)

此任务的结果应该是/tmp/some-role-name服务器上的目录

kra*_*rad 27

最简单的方法是使用以下内容

{{role_path|basename}}
Run Code Online (Sandbox Code Playgroud)


jar*_*arv 20

从Ansible 2.2开始:

{{role_name}}

截至Ansible 2.1:

{{role_path|basename}}

旧版本:

在当前版本的Ansible中无法执行此操作,以下是一些可能适合您的选项:

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

- set_fact: role_name=some-role-name
Run Code Online (Sandbox Code Playgroud)

2)将参数传递给具有名称的角色

- roles:
  - role: some-role-name
    role_name: some-role-name
Run Code Online (Sandbox Code Playgroud)


ter*_*ten 5

看这篇文章:

要获取角色目录:

role_dir: "{{ lookup('pipe', 'pwd') | dirname }}"
Run Code Online (Sandbox Code Playgroud)

要获取角色名称:

role_name: "{{ lookup('pipe', 'pwd') | dirname | basename }}"
Run Code Online (Sandbox Code Playgroud)

  • 在Ansible 2.2中,role_name和role_path是事实 (3认同)