鉴于这样的剧本:
- 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
它被添加到2.8:
ansible_play_name 当前执行的游戏的名称。在
2.8
中添加。
不,Ansible的特殊变量记录为here,你可以看到没有变量可以返回剧本名称。
但是,正如评论中所提到的,您始终可以这样做:
---
- name: "{{ task_name }}"
hosts: localhost
vars:
task_name: "Tasks for service XYZ"
tasks:
- debug:
msg: "{{ task_name }}"
从您的情况看,您似乎只想将其用于审计/通知目的?在那种情况下(并假设unixy客户端),使用
lookup('file', '/proc/self/cmdline') | regex_replace('\u0000',' ')
将为您提供调用ansible-playbook
的整个命令行,参数和所有,其中包括playbook名称。根据您的具体情况,这可能是一个有用的权衡。