DevOps第一級:個人級,人人都要裝備的DevOps工具箱
做為一名DevOps人士,或者您正在成為一名DevOps人士,不管是工程師、產品經理、領導還是任何其他角色的相關人員。本文中即將談的的軟件都應該在你的電腦上存在,廢話不多說,即使是你不編寫代碼,也應該對這些程序混個臉熟才對。
本文的目標是開啟DevOps的第一個階段- Level 1 個人級別的DevOps,除了要具備DevOps的思想之外,還要按照DevOps的原則和工具處理自己的工作。分享各種工具的效用和體驗也是改進,不僅自己可以收益,還可以為DevOps的下個級別-團隊級別的DevOps做好準備。
本文描述的軟件不區分操作系統類型,所談到的工具一般都支持Win,MacOS,Linux等平臺。注意本文提到的工具,不是說建議安裝,而是建議全部安裝和正常使用。
1. 環境準備類 - JDK 8
如果要編譯Java項目的話,則會用到JDK,而且它還是運行其它很多Java類型DevOps工具的依賴。
下載和安裝地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
校驗方法,打開命令行工具,運行 java --version
- martin@mbp:dev/bin $ java -version
- java version "1.8.0_111"
- Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
- Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
2. 環境準備類 - Git客戶端
碼農必備工具,如果你需要與版本控制系統GitHub、GitLab等打交道的話。Git客戶端是必須安裝的。
下載安裝網址: https://git-scm.com/downloads
校驗方法,打開命令行工具,運行 git --version
- martin@mbp:dev/bin $ git --version
- git version 2.13.1
- 建議熟練掌握這篇 “Git作弊小抄”里的命令。https://github.com/arslanbilal/git-cheat-sheet/blob/master/other-sheets/git-cheat-sheet-zh.md
- 如果想學習到更全面的Git知識,請參考這份指引:https://web.archive.org/web/20161121145226/http://rypress.com:80/tutorials/git/index
校驗方法,能在GitHub上完整的操作一次GitHub Flow流程。
如果你是Windows操作系統的話可以嘗試 http://cmder.net/ 這個終端模擬器,它能運行linux命令,融合了git和ssh的客戶端,可以在Windows下面找到類似Unix的體驗。
3. 容器管理 - Docker
在本機使用Docker快速體驗相關的軟件應該是目前很流行的做法,Docker也是軟件工程師(本文中不區分Dev還是Ops,統稱工程師-engineer)在筆記本或者工作站上運行開發和測試環境的絕佳方法。容器化應用,快速的測試Dockerfile等等也都是DevOps工程師必備的技能,為了保證持續的可用性,建議安裝最新的社區CE穩定版,這樣既可以用到最新的feature,又可以避免新版本的毛病。
下載安裝網址: https://docs.docker.com/engine/installation/
校驗方法,打開命令行工具,運行下列命令:
- martin@mbp:dev/bin $ docker version
- Client:
- Version: 17.06.1-ce
- API version: 1.30
- Go version: go1.8.3
- Git commit: 874a737
- Built: Thu Aug 17 22:53:38 2017
- OS/Arch: darwin/amd64
- Server:
- Version: 17.06.1-ce
- API version: 1.30 (minimum version 1.12)
- Go version: go1.8.3
- Git commit: 874a737
- Built: Thu Aug 17 22:54:55 2017
- OS/Arch: linux/amd64
- Experimental: true
- martin@mbp:dev/bin $ docker-machine version
- docker-machine version 0.12.0, build 45c69ad
- martin@mbp:dev/bin $ docker-compose version
- docker-compose version 1.14.0, build c7bdf9e
- docker-py version: 2.3.0
- CPython version: 2.7.12
- OpenSSL version: OpenSSL 1.0.2j 26 Sep 2016
熟悉掌握Docker相關命令的小抄在這里:
https://github.com/wsargent/docker-cheat-sheet/tree/master/zh-cn
要能參考小抄熟練地在本地管理和構建鏡像,管理容器的生命周期,訪問容器里的服務,運行docker compose文件。
校驗方法,能在本機運行一個web服務器容器,并訪問到web服務器的網頁。
4. 代碼版本管理工具
注冊GitHub的賬戶,它的功能太多了,要熟練使用GitHub里的所有主要功能,能熟練地管理自己的項目,克隆和學習別人的項目。盡可能的通過GitHub和同事或者朋友協作一些感興趣的東西。
Git Flow 是團隊協作不可缺少的分支策略模式,需要熟練掌握這個小抄上的知識:
https://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
GitHub Flow的分支策略模式是Git FLow的簡化版,它的操作方式在這里:
https://guides.github.com/introduction/flow/

分支管理的圖形工具包括GitHub Desktop版和Atlassian的SourceTree,下載和安裝網址如下:
https://desktop.github.com/
https://www.sourcetreeapp.com/
校驗方法,能在本機運行運行git命令行、GitHub DeskTop和SourceTree,能完成一次GitHub Flow流程。
5. 編碼工具
Visual Studio Code 這是不僅是一個編輯代碼的IDE環境,還是一個Git客戶的,用起來很方便。
下載和安裝網址 :https://code.visualstudio.com/
校驗方法,能在本機編輯并提交一個自己的GitHub項目的源代碼。能安裝Jenkinsfile、Ansible和Dockerfile等插件。
Atom是一個我用了很久的文本文件編輯工具,吸引人之處也是大量的擴展插件,變化無窮。
下載和安裝網址 :https://atom.io/
校驗方法,能在本機編輯一個GitHub項目的目錄,嘗試全局替換關鍵字功能。
STS - spring-tool-suite
Spring項目的開發工具,是Eclipse的一個變體。校驗方法,能在本機打開和編輯更新一個GitHub里的Spring示例項目。
6. 構建工具 Maven
Apache Maven它可能是最流行的Java項目構建工具。不做過多解釋。注意和本機Java的依賴關系。
下載安裝網址:http://maven.apache.org/download.cgi
校驗方法,打開命令行工具,運行 mvn --version
- martin@mbp:dev/bin $ mvn --version
- Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T21:51:42+08:00)
- Maven home: /Users/martin/Documents/apache-maven-3.2.2
- Java version: 1.8.0_111, vendor: Oracle Corporation
- Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre
- Default locale: en_US, platform encoding: UTF-8
- OS name: "mac os x", version: "10.13.1", arch: "x86_64", family: "mac"
7 測試運行環境 Tomcat
是運行和測試Java項目的服務器端的最簡單的運行環境。注意和本機Java的依賴關系。
下載安裝網址:http://tomcat.apache.org/download-70.cgi 下載二進制壓縮包的版本,不要用服務安裝版本。這樣的好處是,可以復制這個文件夾在本機運行多個實例。
校驗方法,打開命令行工具,運行 Tomcat服務器端bin目錄里的啟動腳本,服務器可以正常啟動,可以通過網頁瀏覽到Tomcat的默認網頁 http://localhost:8080
8. 制品庫 Artifactory OSS 版本
Artifactory OSS是Frog的免費開源版本是一個不需要申請License,可以在本機長期使用的工具,是非常好的本地制品庫緩存服務器。如果你在本地編譯的Java項目都是訪問的這個制品庫的話,那么你離線了也基本上是能正常工作的,即使在飛機上,在沒有互聯網的條件下,Java項目還是可以照常編譯的,不會遇到下載不了依賴包的尷尬情況。建議嘗試專業版。
下載安裝網址:https://www.jfrog.com/open-source/ 下載ZIP包的版本,可以一條命令啟停服務器,使用非常方便。
校驗方法,打開命令行工具,運行 Artifactory服務器端bin目錄里的啟動腳本,服務器可以正常啟動,可以通過網頁瀏覽到Artifactory的默認網頁 http://localhost 第一次啟動接受所有默認選項即可
9. 代碼持續檢查 SonarQube
它是一個支持多種語言的代碼靜態掃碼工具。在不需要你做很多配置的情況下,就可以掃碼代碼庫,這里假設你的本地有幾乎所有的項目文件夾。用這個工具提高代碼質量,消除技術債務和安全隱患。該軟件也有大量的插件。
下載安裝網址:https://www.sonarqube.org/downloads/ 下載ZIP包的版本,可以一條命令啟停服務器,使用非常方便。
校驗方法,打開命令行工具,運行 SonarQube服務器端bin目錄里的啟動腳本,服務器可以正常啟動,可以通過網頁瀏覽到Tomcat的默認網頁 http://localhost:9000/sessions/new 第一次啟動接受所有默認選項即可,默認密碼是 admin / admin
- martin@mbp:bin/macosx-universal-64 $ pwd
- /Users/martin/Downloads/devops/sonarqube-6.7/bin/macosx-universal-64
- martin@mbp:bin/macosx-universal-64 $ ./sonar.sh console
- Running SonarQube...
- wrapper | --> Wrapper Started as Console
- wrapper | Launching a JVM...
- jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
- jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
- jvm 1 |
- jvm 1 | 2017.12.05 23:58:35 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /Users/martin/Downloads/devops/sonarqube-6.7/temp
- jvm 1 | 2017.12.05 23:58:35 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
- jvm 1 | 2017.12.05 23:58:35 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/Users/martin/Downloads/devops/sonarqube-6.7/elasticsearch]: /Users/martin/Downloads/devops/sonarqube-6.7/elasticsearch/bin/elasticsearch -Epath.conf=/Users/martin/Downloads/devops/sonarqube-6.7/temp/conf/es
10. 流水線工具 Jenkins
Jenkins或許是應該第一個介紹的工具,不過它的價值卻是把以上的單點工具都串聯起來。DevOps工程師可以盡可能地,把所有工作都變成自動化的腳本和程序代碼,用git版本控制系統管理起來,管理在內部或外部的代碼倉庫里(你GitHub里項目的質量就是你的簡歷),對這些代碼的執行和處理應該完全交給Jenkins做,特別是需要重復執行的動作,都可以交給Jenkins完成。
下載安裝網址:https://jenkins.io/download/ 下載war包的版本,可以一條命令啟停服務器,使用非常方便。在MacOS上也用過后臺服務的版本,不過這會新建一個jenkins用戶,權限問題也很麻煩,現在只用命令行版本,感覺更易于使用。
校驗方法,打開命令行工具,進入 jenkins.war 文件所在目錄,運行Jenkins服務器端的啟動命令 java -jar jenkins.war ,服務器可以正常啟動,可以通過網頁瀏覽到Jenkins的默認網頁 http://localhost:8080 第一次啟動接受所有默認選項即可,記住新建的第一個管理員用戶的用戶名和密碼。
11. 配置管理工具 Ansible
Ansible是一種學習成本較低的配置管理工具,由于它有能很好地和IaaS資源池對接的插件,所以能夠方便地調度AWS,Azure的虛擬機,也可以配置F5的負載均衡器。是實現基礎架構即代碼的很好的工具。使用它可以完成部署環境的搭建過程,用它保證環境搭建的一致性和自動化程度。
下載安裝網址: http://docs.ansible.com/ansible/latest/intro_installation.html
在MacOS下面推薦用 brew 安裝:brew install ansible
- martin@mbp:~ $ brew install ansible
- Updating Homebrew...
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
- ==> Auto-updated Homebrew!
- Updated 2 taps (homebrew/core, caskroom/cask).
- ==> New Formulae
- dnsdist
- ==> Updated Formulae
- armadillo folly librdkafka pandoc rtv
- ats2-postiats fwup libvirt payara scamper
- byobu fzf lua pdftoedn sql-translator
- cabal-install gitbucket lua@5.3 pdftoipe syncthing
- diff-pdf gopass mpg123 pdnsrec urh
- emscripten haproxy ndpi poppler vowpal-wabbit
- faas-cli jenkins ntopng re2 weechat
- firebase-cli lbdb paket redis you-get
- ==> Deleted Formulae
- geogit
- Error: ansible 2.3.2.0_1 is already installed
- To upgrade to 2.4.2.0, run `brew upgrade ansible`
在Windows下建議使用虛擬(如Virtual Box的CentOS7)安裝,安裝方法見上面的文檔鏈接。
校驗方法,打開命令行工具,進入運行:
- martin@mbp:~ $ ansible --version
- ansible 2.3.2.0
- config file = /usr/local/etc/ansible/ansible.cfg
- configured module search path = Default w/o overrides
- python version = 2.7.13 (default, Jul 18 2017, 09:17:00) [GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]
12. 監控工具 ELK系列
ELK是很好的日志匯聚和分析工具,在本機安裝這個堆棧的好處是,研究起來比較方便,可以輕松地啟動這套工具,分析相關的日志文件,開發可視化的儀表盤和展示圖表。
下載安裝網址: https://www.elastic.co/downloads/past-releases 下載tar/ZIP包的版本,可以一條命令啟停服務器,使用非常方便。
校驗方法,打開命令行工具,運行 bin目錄里的啟動腳本,服務器可以正常啟動 ;主要默認的情況下只能看到沒有數據的 Kibana界面 http://localhost:5601/ 由于ELK的配置文件都需要修改才能看到數據,才能分析。請參考網上的攻略,或者參加DevOps相關培訓。
12. 看板工具 Trello
Trello:輕量級團隊流程協作和列表管理平臺。輕量級的Kanban工具,SaaS服務,支持IOS和安卓移動客戶端。特別適合DevOps團隊進行工作的可視化管理,增加工作的流動性。
非常推薦,沒有注冊的可以通過這個網址注冊一下:https://trello.com/
【本文為51CTO專欄作者“徐磊”的原創稿件,轉載請通過作者微信公眾號devopshub獲取授權】