将你的日历与 Ansible 集成,以避免与日程冲突
创始人
2024-03-02 05:58:23
0

通过将日历应用集成到 Ansible 中,确保你的自动化工作流计划不会与其他东西冲突。

“随时”是执行自动化工作流的好时机吗?出于不同的原因,答案可能是否定的。

如果要避免同时进行更改,以最大限度地减少对关键业务流程的影响,并降低意外服务中断的风险,则在你的自动化运行的同时,其他任何人都不应该试图进行更改。

在某些情况下,可能存在一个正在进行的计划维护窗口。或者,可能有大型事件即将来临、一个关键的业务时间、或者假期(你或许不想在星期五晚上进行更改)。

Street scene with a large calendar and people walking

无论出于什么原因,你都希望将此信息发送到你的自动化平台,以防止在特定时间段内执行周期性或临时任务。用变更管理的行话,我说的是当变更活动不应该发生时,指定封锁窗口。

Ansible 中的日历集成

如何在 Ansible 中实现这个功能?虽然它本身没有日历功能,但 Ansible 的可扩展性将允许它与任何具有 API 的日历应用集成。

目标是这样的:在执行任何自动化或变更活动之前,你要执行一个 pre-task ,它会检查日历中是否已经安排了某些事情(目前或最近),并确认你没有在一个阻塞的时间段中。

想象一下,你有一个名为 calendar 的虚构模块,它可以连接到一个远程日历,比如 Google 日历,以确定你指定的时间是否已经以其他方式被标记为繁忙。你可以写一个类似这样的剧本:

- name: Check if timeslot is taken
  calendar:
    time: "{{ ansible_date_time.iso8601 }}"
  register: output

Ansible 实际会给出 ansible_date_time,将其传递给 calendar 模块,以验证时间的可用性,以便它可以注册响应 (output),用于后续任务。

如果你的日历是这样的:

Google Calendar screenshot

那么这个任务的输出就会指明这个时间段被占用的事实 (busy: true):

ok: [localhost] => {
   "output": {
       "busy": true,
       "changed": false,
       "failed": false,
       "msg": "The timeslot 2020-09-02T17:53:43Z is busy: true"
   }
}

阻止任务运行

接下来,Ansible Conditionals 将帮助阻止所有之后任务的执行。一个简单的例子,你可以在下一个任务上使用 when 语句来强制它只有当上一个输出中的 busy 字段不是 true 时,它才会运行:

tasks:
  - shell: echo "Run this only when not busy!"
    when: not output.busy

总结

上一篇文章中,我说过 Ansible 是一个将事物连接在一起的框架,将不同的组成部分相互连接,以协调端到端自动化工作流。

这篇文章探讨了 Ansible 剧本如何与日历应用集成以检查可用性。然而,我只做了一些表面工作!例如,你的任务也可以阻止日历中的一个时间段,这里的发挥空间很大。

在我的下一篇文章中,我将深入 calendar 模块是如何构建的,以及其他编程语言如何与 Ansible 一起使用。如果你和我一样是 Go 的粉丝,请继续关注!


这篇文章最初发表在 Medium 上,名为 Ansible and Google Calendar integration for change management,采用 CC BY-SA 4.0 许可,经许可后转载。


via: https://opensource.com/article/20/10/calendar-ansible

作者:Nicolas Leiva 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

飞书 CLI 开源:AI ...
钛媒体App 3月28日消息,飞书官方在 GitHub 开源了命令...
2026-03-28 19:53:17
AI海报丨新春辟谣日历:滑...
⇧点蓝色字关注“互联网联合辟谣平台” 大年初三 滑雪、玩冰 滑雪...
2026-02-19 11:21:26
AI海报丨新春辟谣日历:饺...
⇧点蓝色字关注“互联网联合辟谣平台” 大年初一 福启新岁 饺香迎...
2026-02-17 15:50:19
AI海报丨新春辟谣日历:春...
⇧点蓝色字关注“互联网联合辟谣平台” 今天是除夕 灯火万家 喜气...
2026-02-16 18:48:53
AI海报|新春倒计时日历:...
旧时,人们在腊月二十八这天发好面,准备初一到初五的主食,如今仍有一...
2026-02-15 13:49:25
AI海报|新春倒计时日历:...
“二十五,磨豆腐”,意指腊月二十五推磨制豆腐、食用豆腐,以祈愿来年...
2026-02-13 11:20:36

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...