DevOps第一級(jí):個(gè)人級(jí),人人都要裝備的DevOps工具箱
做為一名DevOps人士,或者您正在成為一名DevOps人士,不管是工程師、產(chǎn)品經(jīng)理、領(lǐng)導(dǎo)還是任何其他角色的相關(guān)人員。本文中即將談的的軟件都應(yīng)該在你的電腦上存在,廢話不多說,即使是你不編寫代碼,也應(yīng)該對(duì)這些程序混個(gè)臉熟才對(duì)。
本文的目標(biāo)是開啟DevOps的第一個(gè)階段- Level 1 個(gè)人級(jí)別的DevOps,除了要具備DevOps的思想之外,還要按照DevOps的原則和工具處理自己的工作。分享各種工具的效用和體驗(yàn)也是改進(jìn),不僅自己可以收益,還可以為DevOps的下個(gè)級(jí)別-團(tuán)隊(duì)級(jí)別的DevOps做好準(zhǔn)備。
本文描述的軟件不區(qū)分操作系統(tǒng)類型,所談到的工具一般都支持Win,MacOS,Linux等平臺(tái)。注意本文提到的工具,不是說建議安裝,而是建議全部安裝和正常使用。
1. 環(huán)境準(zhǔn)備類 - JDK 8
如果要編譯Java項(xiàng)目的話,則會(huì)用到JDK,而且它還是運(yùn)行其它很多Java類型DevOps工具的依賴。
下載和安裝地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
校驗(yàn)方法,打開命令行工具,運(yùn)行 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. 環(huán)境準(zhǔn)備類 - Git客戶端
碼農(nóng)必備工具,如果你需要與版本控制系統(tǒng)GitHub、GitLab等打交道的話。Git客戶端是必須安裝的。
下載安裝網(wǎng)址: https://git-scm.com/downloads
校驗(yàn)方法,打開命令行工具,運(yùn)行 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
- 如果想學(xué)習(xí)到更全面的Git知識(shí),請(qǐng)參考這份指引:https://web.archive.org/web/20161121145226/http://rypress.com:80/tutorials/git/index
校驗(yàn)方法,能在GitHub上完整的操作一次GitHub Flow流程。
如果你是Windows操作系統(tǒng)的話可以嘗試 http://cmder.net/ 這個(gè)終端模擬器,它能運(yùn)行l(wèi)inux命令,融合了git和ssh的客戶端,可以在Windows下面找到類似Unix的體驗(yàn)。
3. 容器管理 - Docker
在本機(jī)使用Docker快速體驗(yàn)相關(guān)的軟件應(yīng)該是目前很流行的做法,Docker也是軟件工程師(本文中不區(qū)分Dev還是Ops,統(tǒng)稱工程師-engineer)在筆記本或者工作站上運(yùn)行開發(fā)和測(cè)試環(huán)境的絕佳方法。容器化應(yīng)用,快速的測(cè)試Dockerfile等等也都是DevOps工程師必備的技能,為了保證持續(xù)的可用性,建議安裝最新的社區(qū)CE穩(wěn)定版,這樣既可以用到最新的feature,又可以避免新版本的毛病。
下載安裝網(wǎng)址: https://docs.docker.com/engine/installation/
校驗(yàn)方法,打開命令行工具,運(yùn)行下列命令:
- 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相關(guān)命令的小抄在這里:
https://github.com/wsargent/docker-cheat-sheet/tree/master/zh-cn
要能參考小抄熟練地在本地管理和構(gòu)建鏡像,管理容器的生命周期,訪問容器里的服務(wù),運(yùn)行docker compose文件。
校驗(yàn)方法,能在本機(jī)運(yùn)行一個(gè)web服務(wù)器容器,并訪問到web服務(wù)器的網(wǎng)頁(yè)。
4. 代碼版本管理工具
注冊(cè)GitHub的賬戶,它的功能太多了,要熟練使用GitHub里的所有主要功能,能熟練地管理自己的項(xiàng)目,克隆和學(xué)習(xí)別人的項(xiàng)目。盡可能的通過GitHub和同事或者朋友協(xié)作一些感興趣的東西。
Git Flow 是團(tuán)隊(duì)協(xié)作不可缺少的分支策略模式,需要熟練掌握這個(gè)小抄上的知識(shí):
https://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
GitHub Flow的分支策略模式是Git FLow的簡(jiǎn)化版,它的操作方式在這里:
https://guides.github.com/introduction/flow/

分支管理的圖形工具包括GitHub Desktop版和Atlassian的SourceTree,下載和安裝網(wǎng)址如下:
https://desktop.github.com/
https://www.sourcetreeapp.com/
校驗(yàn)方法,能在本機(jī)運(yùn)行運(yùn)行g(shù)it命令行、GitHub DeskTop和SourceTree,能完成一次GitHub Flow流程。
5. 編碼工具
Visual Studio Code 這是不僅是一個(gè)編輯代碼的IDE環(huán)境,還是一個(gè)Git客戶的,用起來很方便。
下載和安裝網(wǎng)址 :https://code.visualstudio.com/
校驗(yàn)方法,能在本機(jī)編輯并提交一個(gè)自己的GitHub項(xiàng)目的源代碼。能安裝Jenkinsfile、Ansible和Dockerfile等插件。
Atom是一個(gè)我用了很久的文本文件編輯工具,吸引人之處也是大量的擴(kuò)展插件,變化無窮。
下載和安裝網(wǎng)址 :https://atom.io/
校驗(yàn)方法,能在本機(jī)編輯一個(gè)GitHub項(xiàng)目的目錄,嘗試全局替換關(guān)鍵字功能。
STS - spring-tool-suite
Spring項(xiàng)目的開發(fā)工具,是Eclipse的一個(gè)變體。校驗(yàn)方法,能在本機(jī)打開和編輯更新一個(gè)GitHub里的Spring示例項(xiàng)目。
6. 構(gòu)建工具 Maven
Apache Maven它可能是最流行的Java項(xiàng)目構(gòu)建工具。不做過多解釋。注意和本機(jī)Java的依賴關(guān)系。
下載安裝網(wǎng)址:http://maven.apache.org/download.cgi
校驗(yàn)方法,打開命令行工具,運(yùn)行 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 測(cè)試運(yùn)行環(huán)境 Tomcat
是運(yùn)行和測(cè)試Java項(xiàng)目的服務(wù)器端的最簡(jiǎn)單的運(yùn)行環(huán)境。注意和本機(jī)Java的依賴關(guān)系。
下載安裝網(wǎng)址:http://tomcat.apache.org/download-70.cgi 下載二進(jìn)制壓縮包的版本,不要用服務(wù)安裝版本。這樣的好處是,可以復(fù)制這個(gè)文件夾在本機(jī)運(yùn)行多個(gè)實(shí)例。
校驗(yàn)方法,打開命令行工具,運(yùn)行 Tomcat服務(wù)器端bin目錄里的啟動(dòng)腳本,服務(wù)器可以正常啟動(dòng),可以通過網(wǎng)頁(yè)瀏覽到Tomcat的默認(rèn)網(wǎng)頁(yè) http://localhost:8080
8. 制品庫(kù) Artifactory OSS 版本
Artifactory OSS是Frog的免費(fèi)開源版本是一個(gè)不需要申請(qǐng)License,可以在本機(jī)長(zhǎng)期使用的工具,是非常好的本地制品庫(kù)緩存服務(wù)器。如果你在本地編譯的Java項(xiàng)目都是訪問的這個(gè)制品庫(kù)的話,那么你離線了也基本上是能正常工作的,即使在飛機(jī)上,在沒有互聯(lián)網(wǎng)的條件下,Java項(xiàng)目還是可以照常編譯的,不會(huì)遇到下載不了依賴包的尷尬情況。建議嘗試專業(yè)版。
下載安裝網(wǎng)址:https://www.jfrog.com/open-source/ 下載ZIP包的版本,可以一條命令啟停服務(wù)器,使用非常方便。
校驗(yàn)方法,打開命令行工具,運(yùn)行 Artifactory服務(wù)器端bin目錄里的啟動(dòng)腳本,服務(wù)器可以正常啟動(dòng),可以通過網(wǎng)頁(yè)瀏覽到Artifactory的默認(rèn)網(wǎng)頁(yè) http://localhost 第一次啟動(dòng)接受所有默認(rèn)選項(xiàng)即可
9. 代碼持續(xù)檢查 SonarQube
它是一個(gè)支持多種語(yǔ)言的代碼靜態(tài)掃碼工具。在不需要你做很多配置的情況下,就可以掃碼代碼庫(kù),這里假設(shè)你的本地有幾乎所有的項(xiàng)目文件夾。用這個(gè)工具提高代碼質(zhì)量,消除技術(shù)債務(wù)和安全隱患。該軟件也有大量的插件。
下載安裝網(wǎng)址:https://www.sonarqube.org/downloads/ 下載ZIP包的版本,可以一條命令啟停服務(wù)器,使用非常方便。
校驗(yàn)方法,打開命令行工具,運(yùn)行 SonarQube服務(wù)器端bin目錄里的啟動(dòng)腳本,服務(wù)器可以正常啟動(dòng),可以通過網(wǎng)頁(yè)瀏覽到Tomcat的默認(rèn)網(wǎng)頁(yè) http://localhost:9000/sessions/new 第一次啟動(dòng)接受所有默認(rèn)選項(xiàng)即可,默認(rèn)密碼是 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或許是應(yīng)該第一個(gè)介紹的工具,不過它的價(jià)值卻是把以上的單點(diǎn)工具都串聯(lián)起來。DevOps工程師可以盡可能地,把所有工作都變成自動(dòng)化的腳本和程序代碼,用git版本控制系統(tǒng)管理起來,管理在內(nèi)部或外部的代碼倉(cāng)庫(kù)里(你GitHub里項(xiàng)目的質(zhì)量就是你的簡(jiǎn)歷),對(duì)這些代碼的執(zhí)行和處理應(yīng)該完全交給Jenkins做,特別是需要重復(fù)執(zhí)行的動(dòng)作,都可以交給Jenkins完成。
下載安裝網(wǎng)址:https://jenkins.io/download/ 下載war包的版本,可以一條命令啟停服務(wù)器,使用非常方便。在MacOS上也用過后臺(tái)服務(wù)的版本,不過這會(huì)新建一個(gè)jenkins用戶,權(quán)限問題也很麻煩,現(xiàn)在只用命令行版本,感覺更易于使用。
校驗(yàn)方法,打開命令行工具,進(jìn)入 jenkins.war 文件所在目錄,運(yùn)行Jenkins服務(wù)器端的啟動(dòng)命令 java -jar jenkins.war ,服務(wù)器可以正常啟動(dòng),可以通過網(wǎng)頁(yè)瀏覽到Jenkins的默認(rèn)網(wǎng)頁(yè) http://localhost:8080 第一次啟動(dòng)接受所有默認(rèn)選項(xiàng)即可,記住新建的第一個(gè)管理員用戶的用戶名和密碼。
11. 配置管理工具 Ansible
Ansible是一種學(xué)習(xí)成本較低的配置管理工具,由于它有能很好地和IaaS資源池對(duì)接的插件,所以能夠方便地調(diào)度AWS,Azure的虛擬機(jī),也可以配置F5的負(fù)載均衡器。是實(shí)現(xiàn)基礎(chǔ)架構(gòu)即代碼的很好的工具。使用它可以完成部署環(huán)境的搭建過程,用它保證環(huán)境搭建的一致性和自動(dòng)化程度。
下載安裝網(wǎng)址: 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)安裝,安裝方法見上面的文檔鏈接。
校驗(yàn)方法,打開命令行工具,進(jìn)入運(yùn)行:
- 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. 監(jiān)控工具 ELK系列
ELK是很好的日志匯聚和分析工具,在本機(jī)安裝這個(gè)堆棧的好處是,研究起來比較方便,可以輕松地啟動(dòng)這套工具,分析相關(guān)的日志文件,開發(fā)可視化的儀表盤和展示圖表。
下載安裝網(wǎng)址: https://www.elastic.co/downloads/past-releases 下載tar/ZIP包的版本,可以一條命令啟停服務(wù)器,使用非常方便。
校驗(yàn)方法,打開命令行工具,運(yùn)行 bin目錄里的啟動(dòng)腳本,服務(wù)器可以正常啟動(dòng) ;主要默認(rèn)的情況下只能看到?jīng)]有數(shù)據(jù)的 Kibana界面 http://localhost:5601/ 由于ELK的配置文件都需要修改才能看到數(shù)據(jù),才能分析。請(qǐng)參考網(wǎng)上的攻略,或者參加DevOps相關(guān)培訓(xùn)。
12. 看板工具 Trello
Trello:輕量級(jí)團(tuán)隊(duì)流程協(xié)作和列表管理平臺(tái)。輕量級(jí)的Kanban工具,SaaS服務(wù),支持IOS和安卓移動(dòng)客戶端。特別適合DevOps團(tuán)隊(duì)進(jìn)行工作的可視化管理,增加工作的流動(dòng)性。
非常推薦,沒有注冊(cè)的可以通過這個(gè)網(wǎng)址注冊(cè)一下:https://trello.com/
【本文為51CTO專欄作者“徐磊”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過作者微信公眾號(hào)devopshub獲取授權(quán)】