Ansible 2.6:有没有办法在角色任务中引用剧本的名字?

问题描述 投票:2回答:3

鉴于这样的剧本:

- name: "Tasks for service XYZ"
  hosts: apiservers
  roles:
    - { role: common }

有没有办法参考剧本的名称(“服务XYZ的任务”)? (即一个变量)


编辑:

我的目的是能够在角色任务中引用该剧本的名称,即通过松弛发送一个msg

- name: "Send Slack notification indicating deploy has started"
  slack:
    channel: '#project-deploy'
    token: '{{ slack_token }}'
    msg: '*Deploy started* to _{{ inventory_hostname }}_ of `{{ PLAYBOOK_NAME }}` version *{{ service_version }}*'
  delegate_to: localhost
  tags: deploy
ansible ansible-2.x
3个回答
3
投票

它被添加到2.8

ansible_play_name 当前执行的游戏的名称。在2.8中添加。


2
投票

不,Ansible的特殊变量记录为here,你可以看到没有变量可以返回剧本名称。

但是,正如评论中所提到的,您始终可以这样做:

---
- name: "{{ task_name }}"
  hosts: localhost
  vars:
    task_name: "Tasks for service XYZ"
  tasks:
    - debug:
        msg: "{{ task_name }}"

0
投票

从您的情况看,您似乎只想将其用于审计/通知目的?在那种情况下(并假设unixy客户端),使用

lookup('file', '/proc/self/cmdline') | regex_replace('\u0000',' ')

将为您提供调用ansible-playbook的整个命令行,参数和所有,其中包括playbook名称。根据您的具体情况,这可能是一个有用的权衡。

© www.soinside.com 2019 - 2024. All rights reserved.