使用 Ansible Vault 加密敏感資料

ansible vault 可以將資料加密,保護敏感資料。 可以參考官方: Encrypting content with Ansible Vault — Ansible Documentation 或是中文可以參考 Vault — ansible中文權威指南 1.0.1 documentation ansible vault 的指令集如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ ansible-vault usage: ansible-vault [-h] [--version] [-v] {create,decrypt,edit,view,encrypt,encrypt_string,rekey} ... encryption/decryption utility for Ansible data files positional arguments: {create,decrypt,edit,view,encrypt,encrypt_string,rekey} create Create new vault encrypted file decrypt Decrypt vault encrypted file edit Edit vault encrypted file view View vault encrypted file encrypt Encrypt YAML file encrypt_string Encrypt a string rekey Re-key a vault encrypted file 加密的方式可以選擇加密整個檔案或是特定變數,個人覺得使用方法很有彈性,可以搭配自己的情境做選擇。 ...

20 November 2022 · 2 min · nyo

使用標準的 HTTP 狀態碼(status code)做為 REST API 回應結果

REST API 回應結果設計 設計 REST API 時,要好好的處理錯誤狀況並回應清楚的結果可以是一門很深的學問。 基於 HTTP 設計的 REST API,想要 API 使用者掌握狀況,那正確的使用 HTTP 狀態碼做回應就是最正確的辦法。 ...

06 November 2022 · 3 min · nyo

Gitlab CI 推送 docker image 到 ECR 私有儲存庫

最近在尋找適合放 docker image 的私有 registry,因為平常有在用 AWS,所以就來試一下 AWS 的 registry 服務 ECR gitlab 版本: gitlab 15.3 gitlab runner 運作模式: Docker 準備動作 先確定 aws 帳號有 ECR 的使用權限,如果有需要微調權限設定可以參考官方文件: Pushing an image - Amazon ECR ...

29 October 2022 · 1 min · nyo

如何使用 CI/CD 減少部署成本

認識部署 「部署」是程式開發中相當重要的一項工作,甚至說是最重要的也不為過。完成「部署」,使用者才有辦法使用。可以使用的程式,才是一份有價值的程式。 我們來看一下從開發程式到交付給使用者的過程中,通常有哪些步驟 ...

22 October 2022 · 5 min · nyo

在 Debian 11 上執行多個 MySQL 實例

測試環境: 使用 vagrant 開 vm 來測試 vagrant box debian/bullseye64 安裝 MySQL 更新 APT 這個版本的 apt 沒有 MySQL server,所以我們要先更新 apt 套件庫。下載 mysql 官方提供的 mysql-apt-config 來安裝即可。 1 2 3 4 $ wget https://repo.mysql.com//mysql-apt-config_0.8.23-1_all.deb $ sudo apt update $ sudo apt install gnupg $ sudo dpkg -i mysql-apt-config_0.8.23-1_all.deb 安裝時會跳出一個 MySQL 的配置畫面,預設是 mysql-8.0,我們直接使用預設即可,按 Tab 選 OK,再按下 Enter。 ...

22 September 2022 · 2 min · nyo

為什麼 101 會是入門的代號

什麼是 101 常常看到「某某 101」的書本或是文章標題。 這些標題底下的內容通常是一些入門程度的基礎知識,又或是可以讓你對主題可以有快速又簡單的認識。 由來 101 這個數字,是來自美國大學的課程編號,通常是由 3 個數字組成,第一個數字代表大學年級,大一會是 1 開頭。 ...

20 September 2022 · 1 min · nyo

如何在 github 建立 ansible role

什麼是 ansible role ansible 的 role 讓我們可以封裝許多的 task 跟 handlers 等等 playbook 的工作。 怎麼開始寫 role 這次我們來寫一個 hello world ansible 有提供 ansible-galaxy 的指令,用來管理 role。可以使用這個指令來產生 role 的基本資料夾跟檔案。 ...

20 August 2022 · 2 min · nyo

開發 web service 的 main.go 需要寫什麼

想要用 go 開發一個 web service 很簡單,網路上有一大堆的範例, 但是通常你不太可能直接拿著範例就上戰場打仗。要應用在現實中的場景,通常還需要加一些程式。 這裡我以開發 web service 為例,整理一下目前我會在 main.go 寫什麼 ...

31 July 2022 · 3 min · nyo

Docker 的容器重啟政策

docker 本身有提供重啟政策(restart policy)讓你可以控制容器是否要自動重啟。 使用方式 在 docker run 加上 --restart flag 1 $ docker run -d --restart unless-stopped nginx 在 docker-compose.yml,設定 restart: xxx ...

28 July 2022 · 1 min · nyo

Vim 更新後缺少 Python 套件 pynvim neovim

久違的更新一下 vim 1 $ brew upgrade vim 打開 vim 馬上出現一堆錯誤訊息 1 2 3 [vim-hug-neovim-rpc] failed executing: pythonx import [pynvim|neovim] [vim-hug-neovim-rpc] Vim(pythonx):ModuleNotFoundError: No module named 'neovim' E605: Exception not caught: [vim-hug-neovim-rpc] requires one of `:pythonx import [pynvim|neovim]` command to work 這些錯誤好熟悉,似乎是 vim 又找不到 python 的套件了 ...

08 June 2022 · 1 min · nyo

團隊的估點(Story Point)經歷

我目前的團隊從正式開始使用 Story Point 到現在,有超過一年的時間了。平常工作時偶然的發現團隊內有一些不一樣的地方,於是想要寫篇文章來記錄一下。 其實大概半年前就想要寫的,拖著拖著居然又過了半年,拖延症真是個可怕的傢伙。 ...

31 May 2022 · 6 min · nyo

升級 go.mod 裡的 go version

1.18 都 release 才想要看看怎麼把 go version 改到 1.17 修改 go.mod 使用 go mod edit 修改 go.mod 檔案的 go version 1 $ go mod edit -go=1.17 go 1.17 的 go mod tidy 增加了 -go 參數,可以直接修改 go.mod 檔案中的 go version 1 $ go mod tidy -go=1.17 升級依賴套件 升級依賴套件 + 更新 go.mod ...

09 April 2022 · 1 min · nyo

Event Storming 的便利貼

Event Stroming 是一個可以用來讓團隊了解商業邏輯並設計軟體的工具,最終用大量的便利貼來呈現結果 The picture that explains everything (from Alberto Brandolini’s “Introducing Event Storming”) 這篇整理一下便利貼的用途說明 ...

07 April 2022 · 1 min · nyo

玩看看 go 的泛型函數 (Generics Function)

在 2022-03-22 這天 Go 正式發佈 1.18 版了! 這個版本其中一大特色就是增加了社群討論許久的泛型(Generics) 今天來玩看看 go 的泛型函數(Generics Function) 沒有泛型 我們來寫一個尋找 slice 資料索引的 function ...

29 March 2022 · 2 min · nyo

拿筆電安裝 Debian server

把以前的舊筆電翻了出來,發現還可以正常運作,所以打算重灌來拿當做測試用 Server,這篇簡單的記錄一下這次重灌做了什麼事 筆電:ThinkPad t420s ...

25 March 2022 · 1 min · nyo

在 Linux 終端機上查看電池狀態

在 /sys/class/power_supply/BAT0/ 資料夾裡,有一系列的檔案存放著電池的資訊 1 2 3 4 5 6 7 8 9 10 $ ls /sys/class/power_supply/BAT0/ alarm charge_stop_threshold serial_number capacity current_now status capacity_level cycle_count subsystem charge_control_end_threshold device technology charge_control_start_threshold hwmon1 type charge_full manufacturer uevent charge_full_design model_name voltage_min_design charge_now power voltage_now charge_start_threshold present 只要是檔案類型的,都可以直接 cat 查看資料 ...

22 March 2022 · 1 min · nyo

使用 brew 切換不同的 go 版本

使用 brew 安裝 go 可以很容易在不同的版本中切換。 Brew 目前我工作環境安裝的 brew 版本是 3.4.1,只要使用 link/unlink 指令就可以切換。 1 2 3 4 $ brew -v Homebrew 3.4.1-52-gf0f1eb6 Homebrew/homebrew-core (git revision 0192df1b390; last commit 2022-03-14) Homebrew/homebrew-cask (git revision 96b4f7dabd; last commit 2022-03-14) 安裝 go 安裝 go 最新版 (1.17) 跟 go 1.16 版 ...

15 March 2022 · 1 min · nyo

Grafana Loki 收集 Log

Grafana Loki 是一個輕量的 log 收集服務。 Loki 的標語 Like Prometheus,But For Logs 說明著這個服務靈感來自 Prometheus。跟其他的 log 收集服務比較下,Loki 有以下特性: 不對 log 進行全文索引。介由存儲壓縮的非結構化 log 和僅索引 metadata,Loki 操作更簡易而且執行成本更低 使用的相同於 Prometheus 的標籤對 logs 進行索引和分組,讓您能夠用相同標籤在 metrics 和 logs 之間無縫切換 有 Grafana 原生支援 Loki 的運作結構 ...

21 December 2021 · 2 min · nyo

Nyo 版本,懶人的每月記帳法

開始工作之後,總是會在意自己到底是不是所謂的「月光族」。 常見的工具像是各種的 APP、應用程式、試算表等,都有試過,但也都無法持續的使用。 在多次的放棄都重試之後,總算是找到比較適合自己的方法:「每月記帳」。 ...

26 November 2021 · 2 min · nyo

tcp_tw_recycle and tcp_tw_reuse

如果你遇過 linux server 上有著大量 TIME_WAIT 你一定在 google 上看過把 net.ipv4.tcp_tw_recycle 跟 net.ipv4.tcp_tw_reuse 設定為 1 的優化方法,想要介此來減少 TIME_WAIT 或是增加 server 可以處理的連線數量 但是這些做法可能是無效的,甚至是「有風險在」的 ...

08 August 2021 · 2 min · nyo