做为一名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获取授权】