Red Hat Ansible Tower 常見使用案例: 用 RESTful API 與第三方產品結合

有些長官看完 Red Hat Ansible Tower 常見使用案例: 跨多平台設備管理 後說:
Ansible Tower 看起來好棒棒,但自家已經有自有的 Service Catalog,而我就是不想用 Ansible Tower 當作我的第一層服務,那怎麼辦?

eanylin 哥剛好也分享出一系列影片: 用 Service Catalog 系統戳 Ansible Tower 內建的 RESTful API

Q1: 具體 RESTful API 有哪些功能可以使用?

Red Hat 秉持著專門撰寫鉅細彌遺地巨擘等級文件的精神,請參考這邊 Ansible Tower API Guide v3.4.3

而具體對技術來講,這份 Tower API Reference Guide 是最重要的,裡面完全遵循標準 OpenAPI 的 Swagger 2.0 格式,讓其他平台要接入的時候,有充分的資訊可以使用

我知道你內心想問 OpenAPI 是蝦米哇歌,傳送門: 進擊的 OpenAPI!!! - Phil Huang

Q2: 好吧 那我用 RESTful API 具體上到底是控制什麼?

以 Ansible Tower 為核心,分為南北向的資訊流的話,北向就是 RESTful API,而南向就是 Ad-hoc / Playbook / Workflow 等等具體跟其他設備對接的腳本

Tower API Reference Guide 有列舉所有你可能會用到的 RESTful API,但其實真正可以讓你去執行 Ad-hoc / Playbook / Workflow 能操作其他系統的只需了解三大項:

  1. Ad Hoc Commands => 操作 Ad-hoc
  2. Job Template => 操作 Playbook
  3. Workflow Job Templates =>操作 Workflow

Q3: 哎呦 那看起來很簡單啊 那可不可以硬刻?

技術上當然可以,但你最少要了解以下幾個東西

  • OpenAPI Specification
  • Ansible module integration
  • Fronend Service Implementation / Design
  • Backend Service Implementation / Design
  • System Administrator and Management knowledge / integration
  • Integration Testing/QA
  • 所有前後端網頁常識
  • Maintainance / Update process
  • Project Roadmap
  • <會寫 js 這語言的各位大大…真的太偉大了>
  • <我真心不了解前端的世界>
  • <抱歉我天生不是前端的料,我是來騙行數的>

有沒有發現你在做一個全新大專案出來

Q4: 疑…這樣 Ansible Tower 是不是可以被 Jenkins 戳?

是的,這當然是沒什麼問題,在那個不能說的客戶們跟這個也不能說的客戶們有些是以 Jenkins + Ansible Tower 當作整個 CICD 核心引擎進行驅動

寫這麼多不如來看個演講 Red Hat Summit Demo CI/CD deployment (但我知道你不想看,所以可以看下圖 XD)

Q5: 阿不通通用 Jenkins call Ansible 就好了? 幹嘛還多一個 Ansible Tower 的角色?

因為 Ansible Tower 不是單單只會被開發團隊的 Jenkins 拿來寫在 Jenkinsfile 裡面做使用,同時之間還可以搭配 Workflow 同時進行其他的事情,類似下圖

如果論工程差異的話,除了角色上有差異,功能性也會差異點,Ansible Tower 相比 Jenkins

  • 自帶能做定期排程工作
  • RBAC 權限細粒度佳
  • 可依據不同環境分配和管理不同的 serects 和 credentials
  • 多了個 Workflow 可以用
  • 能委派工作給特定的機器使用 (防火牆內)
  • 集中化控管
  • 版本控制
  • 新手上手容易

額外閱讀: Integrating Ansible with Jenkins in a CI/CD process - Red Hat Blog

Summary

所有服務皆 API 化 這個想法讓系統整合廠商多了無限整合可能,若能好好地善用 RESTful API + Ansible Workflow 可以讓你節省掉很多的系統整合風險和持續保有優秀的架構解隅性,但又不會失去可控性

References