Linux中國

將你的日曆與 Ansible 集成,以避免與日程衝突

「隨時」是執行自動化工作流的好時機嗎?出於不同的原因,答案可能是否定的。

如果要避免同時進行更改,以最大限度地減少對關鍵業務流程的影響,並降低意外服務中斷的風險,則在你的自動化運行的同時,其他任何人都不應該試圖進行更改。

在某些情況下,可能存在一個正在進行的計劃維護窗口。或者,可能有大型事件即將來臨、一個關鍵的業務時間、或者假期(你或許不想在星期五晚上進行更改)。

![Street scene with a large calendar and people walking](/data/attachment/album/202010/18/221143fw24mm4e174z1wlp.jpg "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](/data/attachment/album/202010/18/221150jupznzhuu5fk5k9a.png "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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國