書接上回,覺得昨天有件事沒說得清楚,
所謂的 底層邏輯 應該只能用一句話總結,
那軟體自動化的底層邏輯,
就是「等待某個事件觸發,然後完成一系列指定的工作」,
Ansible 本身可以很好的完成指定的工作,
而 Ansible AWX 則是做好等待觸發這件事
不過說到這,
我理想中的 CI server for GitOps,
應該要是以 webhook 為核心元件,
dashboard 應該以 ListView 呈現所有 webhook 的狀態,
active/inactive、上次觸發時間、觸發條件…etc,
然後同樣一支 webhook 可以掛一個或多個 playbook,
就我用過的 CI server portal 中,
- 老爺爺 Jenkins :原生沒有 webhook,需要 plugin,plugin 裝起來又需要特別注意與主程式的版號需相容
- Gitlab CI:這種要 commit code 才能執行 yaml 的 CI,真的對 Infra as Code 的測試很不友善…
- Ansible AWX:原生有支援 Github、Gitlab 的 webhook,但不是以 webhook 為核心,而是以 template 為核心
這部分後面細說
簡單說一下各個部件在幹嘛用的,
當然是從 RD 視角,
最大的差別就是我們最多只處理到 staging,
至於上 production,
不是技術上做不到,
而且那通常會有專職 DevOps 處理,
畢竟 production 環境通常是需要 on-call 的…不在其位不謀其政
- PC/laptop:主要都裝一些有 GUI 的軟體,或是最重要的謀生工具:M$ Power Point
- Bunker 跳板機:通常 IT 都會規劃 vlan 做 network layer 的隔離,至於具體在什麼環境要隔幾層,要看團隊
- Dev machine:通常就是 Linux Cluster,有資源的團隊就給你自己一個獨立 VM
抱歉我待的團隊好像都沒啥資源
- SCM:Source Code Managment,就 Git 及其 web portal,列一些用過的,Gerrit、Gitlab、Github、BitBucket、Gitea、Phabricator...
- CI web portal:Jenkins、Ansible AWX
大概醬紫,明天應該可以進入套件安裝(?)