現代 IT 人一定要知道的 Ansible 自動化組態技巧

01. 前言

凍仁在學時很喜愛《Unix 與 Linux 自動化管理》一書,並幻想著有朝一日也能達到自動化管理的境界。但對於 IT 維運者而言,有時間寫筆記就很難了,更別說是把安裝 (Setup)、部署 (Deploy)、安全性更新 (Security Upgrade) 等步驟寫成可以自動化的 Script!

凍仁從 2015 年末時開始接觸 Ansible,才知道有這麼個比 Shell Script 和 Python 還好用的組態管理工具 (Configuration management Tool) 1,相信透過 Ansible 的幫助一定可以讓我們大家都提早下班的!(笑)

automate_with_ansible_basic-01.jpg 本次將沿用凍仁先前的簡報,並藉由圖文並茂的方式彌補簡報不足的地方。

現代 IT 人是什麼?

對於凍仁而言,現代的 IT 人得具備十八般武藝,從系統規劃、部署 (Deployment)、開發 (Development)、測試 (QA)、維運 (Operations)、監控 (Monitoring) 到效能優化 (Performance Optimisation) 等樣樣都要融匯貫通。

在現代,有個叫「DevOps」的名詞概括了不少技能和工具,如 Ansible, Chef, Docker container, Git, Jenkins CI, Vagrant, Zabbix monitoring server … 等,凍仁在此就不多述。(若想深入了解 DevOps 是什麼?2 歡迎加入 DevOps Taiwan 社團)

簡而言之,現在的資訊人員 (IT Engineer) 除了要會管機器、管網路、on-call 之外,還得要會寫些自動化的工具來輔助自己,不然是難以在下一個世代生存的!

automate_with_ansible_basic-02.jpg 不管是從 Ops 跨到 Dev,還是從 Dev 跨到 Ops,到頭來都是一樣,就看哪邊投的技能點數比較多!

以下是凍仁很喜歡對照表,多年前的凍仁常常耗費不少的時間在安裝作業系統、架設公司業務所需的大大小小服務、寫寫工作日記提醒自己改了什麼設定;如今凍仁會藉由虛擬化技術、雲端運算和組態管理工具等,在相對快速的時間裡完成任務。

automate_with_ansible_basic-03.jpg 寫筆記不如寫工具!更何況還是可重複使用的工具!!

導入自動化組態技巧的好處是什麼?

在提好處之前,先來說說凍仁接觸「自動化組態技巧」後的壞處有哪些?

  1. 學了一套組態工具後就會想用它一統天下!
  2. 原先以為學好 Ansible 以後,就可以不用繼續看官方文件,但事實正好相反。(笑)
  3. 會不斷的想把重複的工作自動化,然後丟上 GitHub 和 Ansible Galaxy!

automate_with_ansible_basic-04.jpg 文中提到的組態,其實是從 Configuration management 翻譯過來的。

導入自動化組態工具,除了可以減少重複性的工作外,最重要的可以提升正式環境 (Production) 的穩定性和可靠性!

automate_with_ansible_basic-05.jpg 圖片來源:Ansible as Automation Glue

當每次的版本釋出 (release)、部署 (deployment) 都會出現不可預測的問題時,將會冒出許多例外工作,這將會大幅度拖累我們的工作進度。

automate_with_ansible_basic-06.jpg 養兵千日用在一時,當我們準備好,就可以在很短的時間內對正式環境進行部署和維護等變更工作,尤其是半夜 12 才要上線的那種 ...。

還記得那一年,開發者 (Developers) 透過 FTP 手動更新程式,發現臭蟲 (bug) 想退版卻無從下手的慘痛經驗!這不只拖累公司整體的業務,還引起了顧客的不滿。

但其實我們只需透過自動化組態工具管理這些變更,再搭配版本控制系統和測試,就能有效避免這類問題發生。

準備好了嗎?Ansible 的大門就在前面了!

相關連結

1. 組態管理工具 (Configuration management Tool) 一般我們會簡稱為 CM Tool,而在業界我們還會用 Infrastructure as Code (IaC) 的字眼來形容這些工具。 ↩
2. 隔壁棚的 Miles 有專門撰寫篇什麼是 DevOps?的文章,不妨也參考一下喔。 ↩

results matching ""

    No results matching ""