"Maintenance"
- 多台主機維護清單的實作紀錄:在容器上安裝 ansible-core 與 Terraform、由 Terraform 產生 inventory、用 Ansible 的範本部署每台的清單、以 sudo 與 systemd-run 執行檢查腳本,以及清理
要照著部署多台主機的維護清單並執行檢查腳本,或要讀跨主機執行時 ansible 的 exit code 與每台的 rc、門檻造成的 WARN、清單格式錯與連不上的主機各自印出什麼時,或要確認 Terraform 寫出的 inventory 的檔案權限、`--check` 預覽與實際部署結果不同的情形時,查在可拋棄的容器上實際跑過的指令、輸出與遇到的錯誤
- 長期上線主機的維護項目:會累積的資料、定期讀的 log、對外入口的盤點、安全更新、會到期的設定與檢查間隔的推算
單台 Linux 主機(VPS、雲端主機)長期上線時,沒有人操作也會改變的狀態與維護對它們做的事:log 與資料的寫入者和清理機制(logrotate、journald、容器 log)、磁碟寫滿時各元件的反應、每份 log 要讀的欄位、入口在主機與雲端各層的盤點(ss)、各條更新管道的安全更新與重開機(dnf-automatic、unattended-upgrades、needs-restarting)、會到期與會改變的設定、檢查間隔的推算,以及接手一台已上線的主機時先處理哪幾項
- 只讀檢查腳本 host-check.py 的原始碼與逐段說明:選項的切分與各工具的白名單規則、清單的載入與驗證、指令的執行、各項檢查、路徑與時間的量測、結果檔與命令列,以及這一版的已知限制
要讀主機維護清單的只讀檢查腳本實際怎麼切分各工具的選項、怎麼驗證清單、怎麼判定 PASS、WARN 與 MANUAL、怎麼寫結果檔,或要照它的做法寫自己的檢查腳本時,查完整的 Python 原始碼與每一段這樣寫的理由
- 服務暫停與恢復上線:只停服務、停止主機、終止主機到全部刪除各自保留的資源,暫停期間仍計費與仍被指向的資源,恢復前要查的漂移與恢復的順序
一台主機上的服務要暫停一段時間再恢復:只停服務、停止主機、終止主機保留設定、全部刪除靠 repo 重建各自保留什麼與付出什麼,怎麼依保留的月費、重建的成本與漂移量選擇,暫停期間仍在計費的資源(含在作業系統裡 shutdown 不停止計費),仍被 DNS 與 CDN 指向的結果(Cloudflare 521、522,釋放 IP 之後的懸空 DNS),恢復前要重新確認的漂移,以及依元件依賴排出的恢復順序與驗證
- 主機維護清單寫成 TOML:JSON、YAML、TOML 的取捨、TOML 1.0 與 1.1 的版本差異、清單的欄位設計與只讀檢查腳本
把一台主機的維護、暫停與恢復上線項目寫成一份資料檔:這份清單對格式的需求、JSON、YAML、TOML 逐項比對(YAML 把 no 讀成 false、010 讀成 8 的實測,以及 TOML 照樣把 1.10 讀成 1.1)、TOML 的表格與表格陣列寫法、1.0 與 1.1 的解析器差異(Python tomllib 的 TOMLDecodeError)、欄位怎麼依檢查腳本與人的需要設計,以及只讀檢查腳本的白名單條件、輸出與 exit code
- 多台主機的維護清單:值的分層與合併的位置、用 Ansible 的 inventory 與範本產生每台的清單、由 Terraform 的輸出產生 inventory、跨主機執行的 exit code,以及單台清單的適用範圍
把單台的主機維護清單擴充到多台主機:每台相同、依角色不同、每台不同的值怎麼分層,合併放在部署時產生每台一份、由檢查腳本讀多份、依角色過濾還是執行時覆寫,用 Ansible 的 inventory、群組變數與範本產生 TOML 清單時的變數合併、兼任角色、型別、語法撞名、跳脫與產生時的驗證,由 Terraform 的輸出產生 inventory、terraform plan 能取代哪些主控台上的確認,對多台執行檢查腳本時 exit code 的讀法與執行身分的代價,以及單台清單夠用的條件
- Oracle Cloud 主機的暫停與恢復上線實測紀錄:暫停前的基準、收窄入口、停止主機、停止期間的計費與 Cloudflare 的回應、恢復上線的每一步與耗時,以及收尾時 DNS 紀錄與主機的刪除順序
要讓 Oracle Cloud 上一台放在 Cloudflare 後面的主機停機一段時間再恢復上線、想知道停止之後公開 IP 留不留、停止期間 A1 與開機磁碟怎麼計費、Cloudflare 回什麼錯誤、恢復時每一步要多久,或服務要收掉時 DNS 紀錄與主機的刪除順序時,查實際跑過的指令、輸出與量到的時間
- SQL.20 關鍵字的宣告與引擎的行為:宣告落空的形態與查證
LEFT JOIN、CROSS JOIN、DISTINCT、COALESCE 與表的別名各自對讀的人宣告了什麼、宣告落空時下一個修改的人付出什麼代價,以及把關鍵字換成最弱的版本再跑一次的查證動作