- 前言
- Ansible 是什么?
- 怎么部署 Ansible 环境?
- 怎么用 Vagrant 练习 Ansible?
- 怎么用 Docker 练习 Ansible?
- 怎么操作 Ansible?
- 怎么用 Jupyter 操控 Ansible?(localhost)
- 怎么用 Jupyter 操控 Ansible?(Managed node)
- 怎么用 Docker Compose 练习 Ansible?
- Ansible 的开发工具有哪些?
- 怎么看 Ansible Modules 文件?
- 常用的 Ansible Module 有哪些?
- 怎么使用 setup 取得 Managed node 的 facts?
- 怎么使用 Ansible 的 Template 系统?
- 怎么在 Playbooks 里使用 Handlers?
- Ansible 如何发送 notification 到 Slack?
- Ansible 如何发送 notification 到 HipChat?
- 如何在 Playbooks 使用 loops?
- 如何维护大型的 Playbooks?
- Roles 是什么?
- 怎么使用 Roles?
- 怎么用 Roles 部署 LNMP 网页应用程式?(上)
- 怎么用 Roles 部署 LNMP 网页应用程式?(下)
- 怎么用 Roles 部署 TestLink?
- 怎么在 Ansible Galaxy 分享 Roles?(上)
- 怎么在 Ansible Galaxy 分享 Roles?(下)
- 怎么用 Travis CI 测试 Roles?
- 怎么混用 Ansible 建置 Docker image?
- 怎么在 Docker Hub 混用 Ansible 自动建置 Docker image?
- 怎么用 Vault 管理敏感资料?
- 总结
前言
現代 IT 人一定要知道的 Ansible 自動化組態技巧
01. 前言
凍仁在學時很喜愛《Unix 與 Linux 自動化管理》一書,並幻想著有朝一日也能達到自動化管理的境界。但對於 IT 維運者而言,有時間寫筆記就很難了,更別說是把安裝 (Setup)、部署 (Deploy)、安全性更新 (Security Upgrade) 等步驟寫成可以自動化的 Script!
凍仁從 2015 年末時開始接觸 Ansible,才知道有這麼個比 Shell Script 和 Python 還好用的組態管理工具 (Configuration management Tool) 1,相信透過 Ansible 的幫助一定可以讓我們大家都提早下班的!(笑)
本次將沿用凍仁先前的簡報,並藉由圖文並茂的方式彌補簡報不足的地方。
現代 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 之外,還得要會寫些自動化的工具來輔助自己,不然是難以在下一個世代生存的!
不管是從 Ops 跨到 Dev,還是從 Dev 跨到 Ops,到頭來都是一樣,就看哪邊投的技能點數比較多!
以下是凍仁很喜歡對照表,多年前的凍仁常常耗費不少的時間在安裝作業系統、架設公司業務所需的大大小小服務、寫寫工作日記提醒自己改了什麼設定;如今凍仁會藉由虛擬化技術、雲端運算和組態管理工具等,在相對快速的時間裡完成任務。
寫筆記不如寫工具!更何況還是可重複使用的工具!!
導入自動化組態技巧的好處是什麼?
在提好處之前,先來說說凍仁接觸「自動化組態技巧」後的壞處有哪些?
- 學了一套組態工具後就會想用它一統天下!
- 原先以為學好 Ansible 以後,就可以不用繼續看官方文件,但事實正好相反。(笑)
- 會不斷的想把重複的工作自動化,然後丟上 GitHub 和 Ansible Galaxy!
文中提到的組態,其實是從 Configuration management 翻譯過來的。
導入自動化組態工具,除了可以減少重複性的工作外,最重要的可以提升正式環境 (Production) 的穩定性和可靠性!
圖片來源:Ansible as Automation Glue
當每次的版本釋出 (release)、部署 (deployment) 都會出現不可預測的問題時,將會冒出許多例外工作,這將會大幅度拖累我們的工作進度。
養兵千日用在一時,當我們準備好,就可以在很短的時間內對正式環境進行部署和維護等變更工作,尤其是半夜 12 才要上線的那種 ...。
還記得那一年,開發者 (Developers) 透過 FTP 手動更新程式,發現臭蟲 (bug) 想退版卻無從下手的慘痛經驗!這不只拖累公司整體的業務,還引起了顧客的不滿。
但其實我們只需透過自動化組態工具管理這些變更,再搭配版本控制系統和測試,就能有效避免這類問題發生。
準備好了嗎?Ansible 的大門就在前面了!
相關連結
1. 組態管理工具 (Configuration management Tool) 一般我們會簡稱為 CM Tool,而在業界我們還會用 Infrastructure as Code (IaC) 的字眼來形容這些工具。 ↩
2. 隔壁棚的 Miles 有專門撰寫篇什麼是 DevOps?的文章,不妨也參考一下喔。 ↩
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论