1.DevOps介绍和概述
DevOps is a cultural shift and collaboration (between development, operations and testing), there is no single "DevOps tool": it is rather a set (or "DevOps toolchain"), consisting of multiple tools.[12]
Generally, DevOps tools fit into one or more of these categories, which is reflective of key aspects of the [software development]
Code — Code development and review, version control tools, code merging;
Build — Continuous integration tools, build status;
Test — Test and results determine performance;
Package — Artifact repository, application pre-deployment staging;
Release — Change management, release approvals, release automation;
Configure — Infrastructure configuration and management, Infrastructure as Code tools;
Monitor — Applications performance monitoring, end–user experience.
Though there are many tools available, certain categories of them are essential in the DevOps toolchain setup for use in an organization. Some attempts to identify those basic tools can be found in the existing literature. [15]
Linux 和 Windows基础介绍 @@@@@@
CentOS.Redhat 操作系统基础系列
https://www.centos.org/download/
https://linux.cn/article-3349-1.html
常用指令
ls 显示文件或目录
-l 列出文件详细信息l(list)
-a 列出当前目录下所有文件及目录,包括隐藏的a(all)
mkdir 创建目录
-p 创建目录,若无父目录,则创建p(parent)
cd 切换目录
touch 创建空文件
echo 创建带有内容的文件。
cat 查看文件内容
cp 拷贝
mv 移动或重命名
rm 删除文件
-r 递归删除,可删除子目录及文件
-f 强制删除
find 在文件系统中搜索某文件
wc 统计文本中行数、字数、字符数
grep 在文本文件中查找某个字符串
rmdir 删除空目录
tree 树形结构显示目录,需要安装tree包
pwd 显示当前目录
ln 创建链接文件
more、less 分页显示文本文件内容
head、tail 显示文件头、尾内容
ctrl+alt+F1 命令行全屏模式
系统管理命令
stat 显示指定文件的详细信息,比ls更详细
who 显示在线登陆用户
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
ps 显示瞬间进程状态 ps -aux
du 查看目录大小 du -h /home带有单位显示目录信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
ifconfig 查看网络情况
ping 测试网络连通
netstat 显示网络状态信息
man 命令不会用了,找男人 如:man ls
clear 清屏
alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
打包压缩相关命令
gzip:
bzip2:
tar: 打包压缩
-c 归档文件
-x 压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名
例:
tar -cvf /home/abc.tar /home/abc 只打包,不压缩
tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。
关机/重启机器
shutdown
-r 关机重启
-h 关机不重启
now 立刻关机
halt 关机
reboot 重启
Linux管道
将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。
例:grep -r "close" /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。
将.rpm文件转为.deb文件
.rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。
sudo alien abc.rpm
vim使用
vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
命令模式下:
:q 退出
:q! 强制退出
:wq 保存并退出
:set number 显示行号
:set nonumber 隐藏行号
/apache 在文档中查找apache 按n跳到下一个,shift+n上一个
yyp 复制光标所在行,并粘贴
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
用户及用户组管理
/etc/passwd 存储用户账号
/etc/group 存储组账号
/etc/shadow 存储用户账号的密码
/etc/gshadow 存储用户组账号的密码
useradd 用户名
userdel 用户名
adduser 用户名
groupadd 组名
groupdel 组名
passwd root 给root设置密码
su root
su - root
/etc/profile 系统环境变量
bash_profile 用户环境变量
.bashrc 用户环境变量
su user 切换用户,加载配置文件.bashrc
su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
更改文件的用户及用户组
sudo chown [-R] owner[:group] {File|Directory}
例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop
要想切换此文件所属的用户及组。可以使用命令。
sudo chown root:root jdk-7u21-linux-i586.tar.gz
文件权限管理
三种基本权限
R 读 数值表示为4
W 写 数值表示为2
X 可执行 数值表示为1
如图所示,jdk-7u21-linux-i586.tar.gz文件的权限为-rw-rw-r--
-rw-rw-r--一共十个字符,分成四段。
第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录
第二三四个字符“rw-”表示当前所属用户的权限。 所以用数值表示为4+2=6
第五六七个字符“rw-”表示当前所属组的权限。 所以用数值表示为4+2=6
第八九十个字符“r--”表示其他用户权限。 所以用数值表示为2
所以操作此文件的权限用数值表示为662
更改权限
sudo chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名
例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765
sudo chmod u+x g+w o+r filename
上面的例子可以用数值表示
sudo chmod 765 filename
Ubuntu.Debian 操作系统基础系列
Linux软件包管理
dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。
比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。
sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件
sudo dpkg -r tree 卸载软件
注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等;
APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。
依然以tree为例
sudo apt-get install tree 安装tree
sudo apt-get remove tree 卸载tree
sudo apt-get update 更新软件
sudo apt-get upgrade
Windows.NetCore
https://www.microsoft.com/net/core
LVS.Ngnix Keepalived
**一、Keepalived介绍**
Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Server)使用,其功能类似于heartbeat,解决单机宕机的问题。
二、Keepalived技术原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。通过VRRP协议结合LVS,对组群服务器监控情况,若master出现宕机情况,则将VIP漂移到backup机上。实现了分布式系统高可用。可以理解为:keepalived是LVS的管理软件,根据监控情况,将宕机服务器从ipvsadm移除掉。
三、Keepalived+LVS+Nginx实现系统高可用
HAProxy.Ngnix Keepalived
Apache/Ngnix
Tomcat/Jetty
Weblogic/Websphere/Jboss
HTTP/Network基础介绍
HTTP/TCPIP/HTTPS/TLS
Network Route
Restful/RPC/WebService
DataBase/NoSQL基础介绍
Oracle/DB2/SQLServer
PostgreSQL/MySQL/SqlLites
Redis/Memcache
Zookeeper/Dubbo
RabbitMQ/Kafka
Android.IOS.Mobile基础介绍
Android UIAutomation
IOS Object-C Swift
UI.Web.React.Vue基础介绍
UI Desigin/Axues/Photoshop
Web HTML5 CSS JQuery
JavaScript 简介
https://segmentfault.com/a/1190000005793097
React.Vuejs
Cloud.Iaas.Paas.Saas介绍
Openstack CloudStack
Bluxmix Openshift
Saas/APM/Others
Docker.K8s.Rancher介绍
Jenkins.Gitlab.Nexus介绍
Nexus Maven
Artifactory
Ansible.Saltstack.Puppet介绍
Selenium.Appium.Jmeter介绍
Agile/Scrum/Lean介绍
2.DevOps国内外技术分享
Google SRE
Facebook SRE
AWS DevOps
IBM/HPE DevOps
Microsoft DevOps
Redhat/Thoughtworks DevOps
Alibaba DevOps
Tecent/Baidu DevOps
Meituan/JD/Ctrip.Qunar DevOps
58ganji/360/Testerhome DevOps
Qconf/CSDN/51CTO DevOps
http://www.csdn.net/
http://www.infoq.com/cn/
http://www.51cto.com/
http://www.greatops.net/
http://linux.chinaunix.net/
DevOpsDays/ChinaOS DevOps
https://linux.cn/
https://www.devopsdays.org/
http://www.greatops.net/
3.DevOps基础和进阶
Linux Base and Shell
Python Golang Java Js etc
Git.Gitflow.Gerrit
Docker.K8s
Jenkins.Teamcity
VMWare/Virtulbox/Hyper-V
KVM/Xen/Citrix
Ansible/Saltstack
4.DevOps最佳实践分享
5.DevOps的展望和未来
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。近些年基于DevOps的探索不断,在软件开发的求变求快的道路上,为持续交付提供了保障。
DevOps的未来可能在于持续增长的云需求,可能在便捷的自动化工具,也可能在容器和公司维度的协作。
为了更深一步评估了解2017年关于DevOps运动的推进状态,我们与来自14家公司的16位主管进行了对话讨论,这些主管正在自己的组织中实施DevOps或者为在为其他组织提供DevOps解决方案。
“从您的观点,DevOps的未来是什么?最好的机会在哪里?“
当我们问这些问题时,得到下面的回答,
就像时间,你是不能抗拒自然的时钟的。 DevOps和云/Docker之间有着良好的合作生态。随着AWS,RedHat和Azure/IBM的发展,DevOps将会以双倍的速度增长。
如果您正在云端构建软件,那么您需要一个NoOps(或Op-less)环境。这样仍然需要操作,但手动任务和操作较少。目前世界上只有2%的DevOps投入实践 - 我们还有很长的路要走。所以有从早期采用到普遍采用的进程。我们需要分享我们有关DevOps在工作上的故事,以及如何通过工具持续监控,这样可以帮助使用者消除恐惧和痛苦。
迁移到云。AWS会提供更多工具来促进自动化和工具的整合,因此您不必进行自定义构建部署。我们将在云端使用容器来实现自动化工作流。
在生产中容器扮演的角色会越来重要。早期的使用者使用中仍然在磨合。这对于其他的容器开发者或者微服务场景可能是有效的方法,但是这并非是容器的一切。它擅长的是自动化部署,监控和更正错误。如果做得很好,这就带来很大的好处,但是如果使用场景不当,也往往适得其反。工具和容器做得越来越好,接下来呢?公有云的使用的场景会越来越普遍渗透到被监管的行业。我们把这些概念引入到部署中(在防火墙,云,外部),用到哪里我们就可以迁移到哪里。Pharma 通过依赖数据的配置就可以实现相同的app部署到防火墙的内部和外部。
我们需要摆脱DevOps的字面意思,因为最终还是所有的部门要在一起工作-而不仅仅是开发和运维。
将来会有更多更好的工具。像我们这样的系统应该现成的工具设置很容易设置,我们定期评估这些工具,看看我们是否可以更换自制软件设置的部分,我们继续找出远远落后的工具。
原则上我们要扩展到开发和运维之外。应用程序的开发不应该时开发人员开始,运维人员结束的状态。 QA,业务规划,BPO,一起扩展到业务提供更好的用户体验,更好地整合第三方和云服务以与客户进行互动。更多地与业务目标一致,才可以有更多的成功机会。
如果拥有面向企业有传统应用程序经验,则更容易找到提高所有应用程序的速度和质量的方法。代码不断开发迭代的过程中,我们需要关注如何将这些企业应用程序演化为DevOps方法。
我们将更快地优化自动化,降低风险。技术侧重于创建抽象层,从而带来更大的灵活性和可移植性。容器化服务和抽象服务器、容器和节点将在Apache Mesos和Kubernetes上运行。服务器抽象远离服务器,以达到CPU更好的利用。
构建用户使用软件的开放反馈循环,由用户站点的数据驱动,机器学习和AI实现下一个功能。从面向服务的体系结构(SOA)迁移到API体系结构。 APIs正成为您的核心业务的一部分。 API将被标准化,文档化,迈向高质量。
应用程序更多的是业务的一部分,而用户体验是由应用程序驱动。持续交付有助于使公司更敏捷。这需要花费更长时间才能决定采纳某些想法和概念,学习什么适用于特定组织,哪些不适用特定的组织。
DevOps正在成为所有的一切 - 开发,运维,安全,测试和部署。我们将看到员工变得更多样化 - 多技能的“jacks of all trades”,而不是“master of one”。我认为这是一件好事,因为人们将从更广的角度看产品,并在工作中作为一个团队,更好地看待一切。
我们将继续看到更多的虚拟化、更多的工具和更多的方法。实施障碍将逐渐消失。随着实践中更多的成功,采纳和理解也会接踵而至。这期间实践的人民,将成为实施方法的领导者。未来五年也将会有大量的成熟方案落地。
所有的一切都在代码和版本控制下持续下去。整个企业将会有容器化。 每个人都可以在云平台的容器中协作。