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

  • 来源:https://linux.cn/article-12733-1.html
  • 作者:Nicolas Leiva
  • 译者:geekpi

(本文字数:1966,阅读时长大约:2 分钟)

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

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

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

Street scene with a large calendar and people walking

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

Ansible 中的日历集成

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

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

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

- name: Check if timeslot is takencalendar: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 许可,经许可后转载。


工作日历计划javaweb_将你的日历与 Ansible 集成,以避免与日程冲突 | Linux 中国...相关推荐

  1. 工作日历计划javaweb_故宫日历介绍:1935年故宫日历

    今天我们聊一下1935年的故宫日历(民国24年). 现在发行故宫日历的封面集字就是采用的1935年故宫日历的版本,也可以说从1935年开始故宫日历的封面就基本固定下来了(台版1974年故宫日历除外). ...

  2. project之制定计划(设置不同的日历)

    1. 设置项目信息 操作:项目->项目信息       作用:设置项目开始时间.使用的日历 2. 日历设置 项目->更改工作时间->新建日历 - 标准日历基础上增加特定假日     ...

  3. 调用Android自带日历功能(日历列表单、添加一个日历事件)

    调用Android自带日历功能  觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...

  4. java怎么写桌面日历_基于java的桌面日历系统的设计与实现毕业设计论文最终版.doc...

    基于java的桌面日历系统的设计与实现毕业设计论文最终版 分类号_______________ 密级________________ UDC _______________ 学号_ ___ 毕业设计( ...

  5. android 人生日历,人生日历Android版 安卓版人生日历功能初体验

    千呼万唤始出来,人生日历终于发布手机Android版本了.下面跟随小编一起体验一下它的各个功能吧. 在手机屏幕上打开人生日历,进入程序之后,就会出现如下界面.进入界面简单美观,淡蓝色底色调,延续了人生 ...

  6. icalendar_家庭日历管理-在Outlook和Web日历之间共享生活以及iCalendar的魔力

    icalendar Recently while talking to a friend I said something like "Oh, yes, my wife send me a ...

  7. caldav选择导入日历_如何用安全的日历协议替换CalDAV

    caldav选择导入日历 日历技术默认情况下未加密. 这意味着您与您的日历通知之间的任何个人或提供者都可以读取并可能存储该信息. 用户应该通过使用与端到端加密配对的开源软件来拥有和保护数据. 许多人都 ...

  8. java outlook 日历_使用Outlook中的“日历”功能管理日程的方法

    经常在外奔波的销售经理小黄,需要时刻掌控自己的日程.小黄通常使用Outlook中的"日历"功能来统一组织和管理自己的日程信息.当他外出办公,或者在差旅途中时,如若手边没有计算机,他 ...

  9. js html css淘宝足迹日历效果,js实现简单的日历显示效果函数示例

    本文实例讲述了js实现简单的日历显示效果函数.分享给大家供大家参考,具体如下: 用一个函数简单的实现一个月份的日历,效果如下: 这个日历效果有高亮显示,我实现的思维比较简单. 我把上面的日历效果用表格 ...

最新文章

  1. 干净架构在 Web 服务开发中的实践
  2. pybind11 入门
  3. learnpython_LearnPython_week1
  4. VTK:结构化网格之GetLinearPointId
  5. python seek tell_PYTHON学习14.09:Python seek()和tell()函数详解
  6. 《PWA实战:面向下一代的Progressive Web APP》读书笔记
  7. 基于OGG Datahub插件将Oracle数据同步上云
  8. sql算术运算符_SQL中的算术运算符
  9. iOS底层探索之多线程(五)—GCD不同队列源码分析
  10. CMOS图像传感器工作原理
  11. python计算图像灰度共生矩阵_灰度共生矩阵-python
  12. 信息安全保障体系规划方案
  13. Python 以正弦信号绘制信号
  14. [转载]分布式双活数据中心
  15. Lambert (兰伯特)光照模型
  16. SpringBoot2尚硅谷笔记
  17. Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进
  18. Highly Efficient Salient Object Detection with 100K Parameters论文解读
  19. 这可能是目前世界上最全的流媒体知识科普文章
  20. VSCode—配置代码发光效果

热门文章

  1. 用 Python 分析上网记录,发现了很多不可思议的事
  2. MAC/PHY与MII(GMII/SGMII/RGMII)(一)
  3. Mysql数据类型TINYINT(1)与BOOLEAN踩坑记
  4. sqlserverdatasouce控件如何让添加删除修改自动化
  5. 如何为属性是disabled的表单绑定js事件
  6. Behavior Designer知识点
  7. java-通过JDBC操作数据库
  8. LeetCode 20 Valid Parentheses (C++)
  9. httperf ---linux web站点压力测试
  10. 【普通の随笔】3.26