Summary
在這篇文章中,我們探討了 10 個能有效提升 DevOps 效率的小技巧,幫助你每週節省數小時的工作時間。我自身也曾深受其益,希望透過這些實用的方法讓更多人享受到工作的便利與樂趣。 Key Points:
- 善用 SSH Config 的多重跳板機制,提升安全性並簡化內部伺服器的管理。
- 將 SSH Config 結合程式碼管理,自動化配置過程,有效避免錯誤及加速雲端部署。
- 利用 SSH Agent Forwarding,提高連線效率,輕鬆在多台伺服器間進行操作,省下大量時間。
設定常用任務的命令別名
作為一名DevOps工程師,你的時間非常寶貴。透過一些小幅度的工作流程改進,可以累積出顯著的時間節省。以下是十個簡單但強大的技巧,無論你是剛入門還是擁有多年經驗,都能讓你的工作變得更加高效。
## 1. 為常用任務設置命令別名
**問題:** 你重複輸入相同的長命令,實在浪費時間。
**解決方案:** 為最常用的命令創建簡短別名。
**操作步驟:**
1. 打開你的 shell 配置文件(比如 `.bashrc` 或 `.zshrc`)。
2. 添加類似以下內容的行: `alias k='kubectl'` 或 `alias tf='terraform'`。
3. 保存文件並使用 `source ~/.bashrc` 重載它。
**範例:**
現在只需輸入 `k get pods` 就能執行 `kubectl get pods`,這樣每次執行命令時都能節省不少打字時間!
此外,在設定這些別名時,可考慮一些增強措施,比如選擇易於記憶且簡短的字母組合,甚至可以設計多層次的別名以便快速切換不同情境。另外,不妨編輯相應配置檔案來持久化這些別名,同時建立一份使用說明文檔,以方便團隊成員更快上手和共享最佳實踐。如此一來,你將會發現工作效率有了顯著提升。
## 1. 為常用任務設置命令別名
**問題:** 你重複輸入相同的長命令,實在浪費時間。
**解決方案:** 為最常用的命令創建簡短別名。
**操作步驟:**
1. 打開你的 shell 配置文件(比如 `.bashrc` 或 `.zshrc`)。
2. 添加類似以下內容的行: `alias k='kubectl'` 或 `alias tf='terraform'`。
3. 保存文件並使用 `source ~/.bashrc` 重載它。
**範例:**
# 將這些添加到你的 .bashrc 或 .zshrc 文件中
alias k='kubectl'
alias tf='terraform'
alias g='git'
alias dc='docker-compose'
現在只需輸入 `k get pods` 就能執行 `kubectl get pods`,這樣每次執行命令時都能節省不少打字時間!
此外,在設定這些別名時,可考慮一些增強措施,比如選擇易於記憶且簡短的字母組合,甚至可以設計多層次的別名以便快速切換不同情境。另外,不妨編輯相應配置檔案來持久化這些別名,同時建立一份使用說明文檔,以方便團隊成員更快上手和共享最佳實踐。如此一來,你將會發現工作效率有了顯著提升。
使用 SSH 配置簡化伺服器訪問
**使用 SSH 配置簡化伺服器訪問**
**問題:** 當需要連接不同伺服器時,記住各種 IP 位址、用戶名和金鑰檔案會變得相當麻煩。
**解決方案:** 設定 SSH 配置檔來創建快捷方式。
**操作步驟:**
1. 編輯(或創建)`~/.ssh/config` 檔案
2. 為每個常用的伺服器添加條目
**範例:**
現在你只需輸入 `ssh prod-web` 就能直接連接,而不必再去記那麼多細節!這樣的配置不僅能提升安全性,因為可以透過 SSH 金鑰認證取代密碼登入,還能讓管理多台伺服器變得更加方便與高效。另外,你也可以考慮啟用 SSH 轉發功能,以便安全地連接到其他伺服器,進一步增強整體的便利性與安全性。
**問題:** 當需要連接不同伺服器時,記住各種 IP 位址、用戶名和金鑰檔案會變得相當麻煩。
**解決方案:** 設定 SSH 配置檔來創建快捷方式。
**操作步驟:**
1. 編輯(或創建)`~/.ssh/config` 檔案
2. 為每個常用的伺服器添加條目
**範例:**
Host prod-web
HostName 203.0.113.10
User admin
IdentityFile ~/.ssh/prod_key
Host stage-db
HostName 198.51.100.20
User dbadmin
IdentityFile ~/.ssh/stage_key
現在你只需輸入 `ssh prod-web` 就能直接連接,而不必再去記那麼多細節!這樣的配置不僅能提升安全性,因為可以透過 SSH 金鑰認證取代密碼登入,還能讓管理多台伺服器變得更加方便與高效。另外,你也可以考慮啟用 SSH 轉發功能,以便安全地連接到其他伺服器,進一步增強整體的便利性與安全性。
Extended Perspectives Comparison:
技巧 | 問題 | 解決方案 | 操作步驟 | 範例 | |
---|---|---|---|---|---|
為常用任務設置命令別名 | 重複輸入長命令浪費時間 | 創建簡短別名以節省打字時間 | 編輯 shell 配置文件,添加 alias 行,保存並重載配置 | alias k=`kubectl`; alias tf=`terraform` | |
使用 SSH 配置簡化伺服器訪問 | 記住多台伺服器的IP和金鑰麻煩 | 設定 SSH config 創建快捷方式 | 編輯 ~/.ssh/config,為伺服器添加條目 | Host prod-web; HostName 203.0.113.10 | |
專案特定的 Shell 腳本創建指南 | 重複執行多條命令繁瑣 | 編寫 Shell 腳本整合命令 | 在專案中創建 scripts 資料夾,撰寫腳本並使其可執行 | #!/bin/bash; git pull; npm install | |
設置 Git 鉤子進行質量檢查 | 代碼質量問題在提交後才發現 | 利用 Git 鉤子自動運行測試和代碼檢查 | 創建 .git/hooks/pre-commit 文件,添加測試命令 | #!/bin/bash; npm test | |
使用 Docker 建立開發環境 | 新機器上設置開發環境耗時費力 | 利用 Docker 創建一致的環境 | 編寫 Dockerfile 和 docker-compose.yml 檔案來容器化應用 | version: `3`; services: app: | |
為專案命令創建 Makefile | 不同專案有不同指令難以記憶 | 使用 Makefile 標準化和記錄任務指令 | 在專案根目錄中創建 Makefile 定義各種目標,如 setup, test, build | setup: # 安裝依賴 | |
設定 CLI 工具的 Tab 鍵自動補全 | 輸入選項和參數慢且容易出錯 | 啟用 Tab 鍵自動補全功能提升效率 | 找到工具相應的補全腳本並加入到 shell 配置中 | source <(kubectl completion bash) | |
使用多游標編輯 | 在多個地方做相同修改繁瑣 | 學會在代碼編輯器中使用多游標編輯功能 | 按住 Alt 鍵點擊或選擇文本後按 Ctrl+D 來選擇匹配文本 | ||
建立個人知識庫 | 解決棘手問題後易忘記解法 | 保持一個簡單的知識庫紀錄解決方案及片段 | 創建私人 Git 倉庫或使用 Notion 記錄解法 |
創建專案特定的 Shell 腳本
**專案特定的 Shell 腳本創建指南**
**問題:** 在專案中,某些任務往往需要按照特定順序執行多條命令。
**解決方案:** 可以編寫簡單的 Shell 腳本來將這些命令整合在一起。
**具體步驟:**
1. 在你的專案中創建一個 `scripts` 或 `bin` 資料夾。
2. 為常見的任務編寫腳本,例如設置、部署和測試等。
3. 使用 `chmod +x scriptname.sh` 命令使其可執行。
**範例:**
你可以通過運行 `./scripts/deploy.sh` 來執行這個腳本,省去手動輸入每一步的麻煩。
此外,在創建這類腳本時,可以考慮加入一些參數化設計,以提升彈性。例如,利用環境變數設定路徑或參數,使得在不同環境下只需調整變數即可使用。同時,可以將重複邏輯封裝成函式,增強代碼的可讀性與維護性。不要忘了加入錯誤處理機制,以提高穩定性。最後,加上適當的註解和文檔說明,有助於團隊成員更好地理解和使用這些腳本。
**問題:** 在專案中,某些任務往往需要按照特定順序執行多條命令。
**解決方案:** 可以編寫簡單的 Shell 腳本來將這些命令整合在一起。
**具體步驟:**
1. 在你的專案中創建一個 `scripts` 或 `bin` 資料夾。
2. 為常見的任務編寫腳本,例如設置、部署和測試等。
3. 使用 `chmod +x scriptname.sh` 命令使其可執行。
**範例:**
#!/bin/bash
# deploy.sh - 簡單的部署腳本
echo "開始部署..."
git pull
npm install
npm run build
pm2 restart app
echo "部署完成!"
你可以通過運行 `./scripts/deploy.sh` 來執行這個腳本,省去手動輸入每一步的麻煩。
此外,在創建這類腳本時,可以考慮加入一些參數化設計,以提升彈性。例如,利用環境變數設定路徑或參數,使得在不同環境下只需調整變數即可使用。同時,可以將重複邏輯封裝成函式,增強代碼的可讀性與維護性。不要忘了加入錯誤處理機制,以提高穩定性。最後,加上適當的註解和文檔說明,有助於團隊成員更好地理解和使用這些腳本。
設置 Git 鉤子進行質量檢查
**4. 設置 Git 鉤子進行質量檢查**
**問題:** 代碼質量問題通常在提交後才會被發現。
**解決方案:** 利用 Git 鉤子,在提交之前自動運行測試和代碼檢查工具,以確保代碼的品質。
**具體步驟:**
1. 創建一個名為 `.git/hooks/pre-commit` 的文件。
2. 在文件中添加執行測試或代碼檢查的命令。
3. 使用 `chmod +x .git/hooks/pre-commit` 命令使其可執行。
**範例:**
這樣可以防止將可能會破壞構建的代碼提交上去。
此外,你還可以考慮根據不同工作流程選擇合適的鉤子類型,例如 pre-commit 或 post-merge,以進一步加強質量檢查。同時,自訂檢查規則,比如使用 ESLint 檢查 JavaScript 代碼或 Prettier 進行格式化,可以幫助確保代碼的一致性。此外,集成像 Jest 或 Mocha 的自動測試工具,可以提前捕捉錯誤,提高整體開發效率和代碼品質。
**問題:** 代碼質量問題通常在提交後才會被發現。
**解決方案:** 利用 Git 鉤子,在提交之前自動運行測試和代碼檢查工具,以確保代碼的品質。
**具體步驟:**
1. 創建一個名為 `.git/hooks/pre-commit` 的文件。
2. 在文件中添加執行測試或代碼檢查的命令。
3. 使用 `chmod +x .git/hooks/pre-commit` 命令使其可執行。
**範例:**
#!/bin/bash
# pre-commit 鉤子,負責運行測試
echo "正在運行測試..."
npm test
# 如果測試失敗,則阻止提交
if [ $? -ne 0 ]; then
echo "測試失敗。提交已中止!"
exit 1
fi
這樣可以防止將可能會破壞構建的代碼提交上去。
此外,你還可以考慮根據不同工作流程選擇合適的鉤子類型,例如 pre-commit 或 post-merge,以進一步加強質量檢查。同時,自訂檢查規則,比如使用 ESLint 檢查 JavaScript 代碼或 Prettier 進行格式化,可以幫助確保代碼的一致性。此外,集成像 Jest 或 Mocha 的自動測試工具,可以提前捕捉錯誤,提高整體開發效率和代碼品質。

利用 Docker 建立開發環境
**使用 Docker 建立開發環境**
**問題:** 在新機器上設置開發環境往往耗時費力。
**解決方案:** 利用 Docker 創建一個在所有環境中都能一致運行的設置。
**如何操作:**
1. 為你的專案編寫 Dockerfile 和 docker-compose.yml 檔案。
2. 將所有依賴和服務納入其中。
這樣,透過容器化技術,你可以避免「在我電腦上能運行」的困擾,因為無論是在本地還是伺服器上,Docker 都能保持相同的執行環境。此外,根據不同專案需求,你可以自訂基礎映像、安裝特定的依賴項,以及配置必要的環境變數等,使得整體流程更加靈活與高效。這樣不僅提升了開發效率,也確保了團隊成員間的一致性,讓每個人都能輕鬆啟動開發工作,而無需重複繁瑣的設置步驟。
**問題:** 在新機器上設置開發環境往往耗時費力。
**解決方案:** 利用 Docker 創建一個在所有環境中都能一致運行的設置。
**如何操作:**
1. 為你的專案編寫 Dockerfile 和 docker-compose.yml 檔案。
2. 將所有依賴和服務納入其中。
這樣,透過容器化技術,你可以避免「在我電腦上能運行」的困擾,因為無論是在本地還是伺服器上,Docker 都能保持相同的執行環境。此外,根據不同專案需求,你可以自訂基礎映像、安裝特定的依賴項,以及配置必要的環境變數等,使得整體流程更加靈活與高效。這樣不僅提升了開發效率,也確保了團隊成員間的一致性,讓每個人都能輕鬆啟動開發工作,而無需重複繁瑣的設置步驟。
使用 Makefile 統一專案命令
要與團隊分享這些檔案,以下是一個範例的 docker-compose.yml 檔案:
版本: '3'服務: app: 建置: . 埠: - "3000:3000" 卷: - ./:/app 資料庫: 圖像: postgres:13 環境變數: POSTGRES_PASSWORD: devpassword POSTGRES_USER: devuser POSTGRES_DB: myapp
這樣一來,團隊中的任何人都可以透過簡單地執行 `docker-compose up` 來啟動整個環境!啟用 CLI 工具的 Tab 完成功能
**第六章:為專案命令創建 Makefile**
**問題:** 不同的專案有不同的指令來執行常見任務。
**解決方案:** 使用 Makefile 來標準化和記錄這些命令。
**如何操作:**
1. 在專案根目錄中創建一個 `Makefile`
2. 為常見任務定義目標,例如 build、test 和 deploy
3. 用註解來說明每個命令的作用
**範例 Makefile:**
現在,任何人都可以輕鬆地運行 `make test` 或 `make deploy`,而不必記住具體的命令!
**問題:** 不同的專案有不同的指令來執行常見任務。
**解決方案:** 使用 Makefile 來標準化和記錄這些命令。
**如何操作:**
1. 在專案根目錄中創建一個 `Makefile`
2. 為常見任務定義目標,例如 build、test 和 deploy
3. 用註解來說明每個命令的作用
**範例 Makefile:**
.PHONY: setup test build deploy
setup: # 安裝依賴並準備專案
npm install
test: # 執行所有測試
npm test
build: # 編譯應用程式
npm run build
deploy: # 部署到生產環境
./scripts/deploy.sh
現在,任何人都可以輕鬆地運行 `make test` 或 `make deploy`,而不必記住具體的命令!
學會多光標編輯提高效率
**7. 設定 CLI 工具的 Tab 鍵自動補全**
**問題所在:** 輸入命令選項和參數既慢又容易出錯。
**解決方案:** 為你常用的工具啟用 Tab 鍵自動補全功能。
**操作方法:**
1. 找到你的工具相應的補全腳本(許多工具都提供此功能)
2. 將其添加到你的 shell 配置中
**以 kubectl 為例:**
# 添加到 .bashrc 或 .zshrc
source <(kubectl completion bash) # 對於 bash 用戶
source <(kubectl completion zsh) # 對於 zsh 用戶
這樣一來,你就可以按下 Tab 鍵來完成命令,甚至能看到可用的選項了!這不僅能提升輸入效率,也能大幅減少錯誤率,讓使用過程變得更加順暢。若你是像我一樣經常使用命令行的人,這個設定簡直是必不可少!有了它,你可以輕鬆探索更多命令,而不必記住所有的細節。
建立個人知識庫保存解決方案
## 8. 使用多游標編輯
**問題:** 在多個地方做相同的修改非常繁瑣。
**解決方案:** 學會在代碼編輯器中使用多游標編輯功能。
**在 VS Code 中如何操作:**
1. 按住 Alt 鍵(Windows/Linux)或 Option 鍵(Mac),然後點擊多個位置以創建游標;
2. 或者選擇文本,按 Ctrl+D(Windows/Linux)或 Cmd+D(Mac)來選擇下一個匹配的文本;
3. 同時編輯所有選中的位置!這對於重命名變數或在文件間進行類似的更改特別有用。
## 9. 建立個人知識庫
**問題:** 當你解決了一個棘手的問題,但幾個月後卻忘記了該解法。
**解決方案:** 保持一個簡單的知識庫來記錄你的解決方案和代碼片段。
**如何進行:**
1. 創建一個私人的 Git 倉庫,或者使用 Notion 或 Obsidian 等工具;
2. 在解決問題時,詳細紀錄你的解決方法和思路。在建立知識庫過程中,可以考慮一些增益,例如選擇合適的工具以便資料整理與檢索,設計明確的分類系統,如依主題、技術堆疊或問題類型劃分,以及定期更新與回顧內容,以保持資訊的新鮮度。此外,加入標籤與搜索功能也能提升查詢效率。這些措施將有效提高你知識庫的實用性與易用性。
創建模板倉庫加速新專案啟動
在使用 Docker 時,Node.js 的記憶體問題可能會導致容器不斷崩潰並出現內存不足的錯誤。解決這個問題的方法是為 Node 添加記憶體標誌:
另外,在啟動新專案時,經常需要重複創建相同的基礎設置檔案。為了解決這個困擾,可以建立模板倉庫來保存你的常用配置。以下是一些設定模板倉庫的步驟:
1. 設定一個包含理想起始配置的倉庫。
2. 包含 CI/CD 設定、Dockerfile、README 等文件。
3. 在 GitHub 上將其標記為模板倉庫(前往設定 > “Template repository”)。
4. 若使用 GitLab,可利用“實例模板”功能或只是記錄其作為模板的用法。
可以考慮納入以下內容:
— 基本資料夾結構
— 測試設置
— 代碼檢查和格式化配置
— Docker/開發環境
— CI/CD 管道配置
— 文檔範本
— 安全掃描工具
— 相依管理配置
例如在 GitHub 上使用你的模板:
這些小技巧看似簡單,但綜合起來可以每週節省你數小時的工作時間。而且,大多數只需幾分鐘就能設置完成。不妨先從解決你最大的痛點的一兩項開始,然後逐步增加更多,以便形成習慣。在 DevOps 的世界裡,不斷改進是關鍵,而這也應該適用於你自己的工作流程。
="--max-old-space-size=2048" npm startTags: #docker #nodejs #memory #troubleshooting
另外,在啟動新專案時,經常需要重複創建相同的基礎設置檔案。為了解決這個困擾,可以建立模板倉庫來保存你的常用配置。以下是一些設定模板倉庫的步驟:
1. 設定一個包含理想起始配置的倉庫。
2. 包含 CI/CD 設定、Dockerfile、README 等文件。
3. 在 GitHub 上將其標記為模板倉庫(前往設定 > “Template repository”)。
4. 若使用 GitLab,可利用“實例模板”功能或只是記錄其作為模板的用法。
可以考慮納入以下內容:
— 基本資料夾結構
— 測試設置
— 代碼檢查和格式化配置
— Docker/開發環境
— CI/CD 管道配置
— 文檔範本
— 安全掃描工具
— 相依管理配置
例如在 GitHub 上使用你的模板:
# 無需從頭開始,可以直接使用你的範本:gh repo create new-project --template=your-username/template-repo# 或者點擊“使用此範本”來基於該範本創建新倉庫。
這些小技巧看似簡單,但綜合起來可以每週節省你數小時的工作時間。而且,大多數只需幾分鐘就能設置完成。不妨先從解決你最大的痛點的一兩項開始,然後逐步增加更多,以便形成習慣。在 DevOps 的世界裡,不斷改進是關鍵,而這也應該適用於你自己的工作流程。
Reference Articles
DevOps 工程師的20 個生活小技巧
對於DevOps 工程師來說,腳本編寫就像一把瑞士軍刀,因為它可以自動執行重複性任務,在流程之間提供必要的黏合劑,並確保跨環境的一致性。學習和練習腳本編寫 ...
Source: CodeLove 愛寫扣論壇5种让冲刺速度更快的方法 - 阿里云开发者社区
迭代式开发:提升软件项目管理效率的关键路径. 迭代式开发将软件项目划分为多个短周期,每个周期结束时交付一个可运行的版本,便于快速获取用户反馈并进行 ...
Source: 阿里云开发者社区极客时间-DevOps实战笔记
课程名称:DevOps实战笔记主讲人:石雪峰,京东商城工程效率专家课程内容:. 一套完整的DevOps 知识体系; 搭建DevOps 平台的最佳实践; 成功转型案例的深入剖析 ...
Source: GitHub【測試】相關文章與討論
給Web 開發人員靈感的10 個網站 · 如果您是一位網頁開發者,您可能會對尋找能節省您大量時間的網站感到著迷。 以下是我個人使用的網站,至少能節省每週25 小時的時間。
Source: CodeLove 愛寫扣論壇实践DevOps 时,可能面临的六大挑战原创
实践DevOps 时,可能面临的六大挑战 原创 ; 1. 没有正确的文化理念 ; 2. 重技术忽视软技能 ; 3. 自动化工具过多成为累赘 ; 4. 变更决策进展缓慢 ; 5. 方向错误.
Source: CSDN Blog
Related Discussions