使用 Ansible 任务名称作为变量

使用 Ansible 任务名称作为变量

我在剧本中有一些任务。我需要为每个任务发送一条消息。

- name: Upload kubernetes config
  template:
    src=kubernetes-config.j2
    dest=/etc/kubernetes/config backup=yes
    group=root
    owner=root
    mode="u=rw,g=r,o=r"
  notify: Send notification message via Slack

我使用 slack 通知模块。

- name: Send notification message via Slack
  local_action:
    module: slack
    domain: hsap.slack.com
    token: yourtoken
    msg: "{{ansible_nodename}} - {{ansible_distribution}}"

我想使用一个处理程序(“通过 Slack 发送通知消息”)。我不知道如何将任务名称作为变量传递给处理程序。

我如何将任务名称作为变量传递?

答案1

您可能不想为此使用处理程序。处理程序用于诸如服务管理之类的事情,您不希望它们在游戏结束前运行。它们不打算接受参数。

在你的情况下,我假设你想在任务运行时立即通过 slack 发送通知,为此,你可以在“上传到 kerbenetes 配置”任务下添加 slack 通知任务,或者你可以使用一项任务包括带有参数。

例子:

主要.yml:

- 名称:上传 kubernetes 配置
  模板:
    src=kubernetes-config.j2
    目标=/etc/kubernetes/config 备份=是
    组=root
    所有者=root
    模式="u=rw,g=r,o=r"
- 包含:send_slack.yml msg="kurbenetes 已更新!"
发送_slack.yml:

- 名称:通过 Slack 发送通知消息
  本地操作:
    模块:松弛
    域名:hsap.slack.com
    token:你的 token
    消息:“{{ansible_nodename}} - {{ansible_distribution}} - {{ msg }}”

相关内容