编辑推荐: |
本文来自于DevOps教练,本文的目标是开启DevOps的第一个阶段-
Level 1 个人级别的DevOps,除了要具备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
. ne t/ 这个终端模拟器,它能运行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项目的目录,尝试全局替换关键字功能。
Spring项目的开发工具,是Eclipse的一个变体。校验方法,能在本机打开和编辑更新一个GitHub里的Spring示例项目。
6 构建工具 Maven
Apache Maven它可能是最流行的Java项目构建工具。不做过多解释。注意和本机Java的依赖关系。
下载安装网址:
http://tomcat.apache.org/download-70.cgi |
校验方法,打开命令行工具,运行 mvn --version
martin@mbp:dev/bin
$ mvn --version
Apache Maven 3.2.2 (45f7c06d68e745d0561
1f7fd14efb6594181933e;
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的默认网页
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团队进行工作的可视化管理,增加工作的流动性。 |