2020/06/10 Jenkins+Ansible+Gitlab自动化部署-爱代码爱编程
2-1Gitlab介绍
2-3 gitlab安装配置管理
Omnibus综合的意思,一键安装包
启动一台虚拟机,用windowsgit连接
重启再登录
安装gitlab依赖包
启动postfix邮件服务,设置开机加载
使用openssl命令去创建证书
用私有密钥去创建ssl证书,gitlab的域名
私有密钥。csr证书都创建出来了
用私钥和csr证书去签发crt证书,x509 -req代表签署证书的格式,-days 365证书有效时间,-in引入csr证书,-signkey 引入私有密钥,-out输出 证书路径
现在证书就有了
现在需要输出pem证书
输出pem证书
、修改权限
将所有证书配置到gitlab配置文件中
初始化gitlab的所有相关服务配置
去找nginx代理工具
让配置生效
可以在windows的hots文件设置一下gitlab的dns解析
需要写一个密码
苦于创建一个新的仓库
复制地址
克隆仓库到本地,需要输入密码
创建测试代码
添加该文件到本地仓库
push到远程仓库
2-4gitlab的应用
可以针对不同用户和项目设定不同的权限。
有时候会提交master,合并主分支的申请,等待领导审核
运维人员该如何去检查gitlab健康状况
进入到后台管理界面,monitoring下面有很多实例
log实例下,application log记录了很多相关gitlab的审计记录操作
production log记录了访问日志
** health check 可以看到一个总的健康状况**
创建一个gitlab用户给开发
保证是一个普通账号
创建一个项目管理的账号
创建领导账号
管理我们创建的仓库
dev选择developer权限加入项目
修改这两个账号的初始密码
测试简单点,可以输入12345678
初始lead账号的密码
演示开发人员编写好代码后,如何将代码提交到分支下,并合并到master主分支的申请
之前使用管理员创建的仓库目录,现在需要用dev来创建
创建一个开发人员维护的git分支
修改代码
这样就把本地的分支同步到了gitlab中
登录dev账号
可以把分支合并到主分支里
写lead账号保证lead账号可以收到申请
退出dev账号,lead账号
可以点击到里面
可以点击merge确认操作
可以给dev回复一句话
主分支下获取到了最新代码
3-1 ansible简介
3-2 ansible的优势和应用场景
3-3 ansible配合virtualenv安装配置
开一台虚拟机作为ansible
ssh连接过去
安装python3.6.5
**设定一些编译参数的值
–prefix将python3.6.5安装到/usr/local下
–with-ensurepip 安装pip包管理工具
–enable-shared 配置python3.6.5当前系统的参数值
**
因为是3.6版本python,所以pip是3.6,用pip包管理工具安装virtualenv
切换到deploy用户,创建python3.6用户
安装git
把ansible源代码克隆到本地
安装ansible依赖包
把ansible目录移动到虚拟环境下,切换ansible版本是2。5版本
虚拟环境下加载2.5版本
完成在python虚拟环境下安装2.5版本
ansible playbooks入门和编写规范
UAT单元测试环境
这里有一个test主机
登录ansible主机
加载python3.6的虚拟环境
同时加载ansible的2.5版本到当前的deploy用户
创建若干子目录,来搭建playbook框架
这样就定有好了组列表和参数
main.yml作为testbox的主任务文件
测试任务,在目标主机下输出一行
现在需要给test-playbooks创建任务路口文件
对应test-playbooks下的inventory下的testenv下的标签,定义主机
获取目标主机的一些facts信息
告诉ansible在目标主机下用root用户运行
进入到roles目录下的testbox执行任务
这样就创建好了一个playbooks的入口文件,下面就是目录结构
返回到root
增加一条dns记录
创建密钥认证对
-i 指定公钥
现在可以直接ssh
现在去执行ansible playbook入口文件,完成部署到testenv的操作,第一个task获取到了一些基本信息,下面有一个总结
成功创建 了一个test文件
3-6 ansible playbooks常用模块介绍
name定义任务名称
file申明语句调用的是file模块,权限,创建文件的路径,创建,所有人,所属组
remote_src=no申明将源ansible的主机文件,传送到目标主机中
force=yes copy任务是强制执行的
任务名检查文件是否存在
register:script_stat 用来将stat获取到的文件状态信息传送给script_stat变量
debug:msg=语句输出
when调用之前的stat变量信息
shell模块会调用linux下的/bin/bash,所以就可以使用系统环境变量,就可以用管道。command就不能使用重定向符之类的
可以用template来写jinja2配置参数,比如nginx,从而实现对不同环境下的管理
playbooks里定义的资源配置里的参数,生成最终的配置文件
package是广义的模块集
state=latest设定安装的nginx是最新版本
service模块是管理系统的init系统服务,service和systemctl命令
sate=started定义需要用到的nginx服务做一个启动的操作
3-7 Ansible playbooks常用模块案例操作
登录到test.example.com,创建一些必要的,配置好yum源
测试跑
下面是copy模块创建过程
创建一个 roles/testbox/files
编辑主任务文件
创建copy模块任务,force=yes是任务强制执行
进入到主任务文件中,获取远程的文件状态
创建debug任务,用来获取stat任务的信息
测试是否成功
测试跑一下
创建一个template目录
创建一个jinja2模板文件
user添加了user变量,worker_process添加了worker_process变量
到主任务文件,添加template模块任务
添加yum,安装nginx
启动nginx
执行成功
远程主机现在就已经应用了
查看nginx是否启动成功
4-1 Jenkins介绍
4-2 Jenkins的优势和应用场景
4-3 Jenkins安装配置管理
创建一个虚拟机
连接刚才创建的jenkins虚拟主机
导入yum仓库key
安装java环境
开始jenkins初始配置操作
修改jenkins家目录和工作目录的属主属组
jenkins正常启动
查看密码
安装推荐插件
可以看到系统信息和插件列表
4-4 Jenkins job的介绍(Freestyle job 和 Pipeline job)
4-5 Jenkins job环境准备
进行后台user和email的注册
这样注册好了git client的user和 email
这样添加了一个root管理员密码到jenkins凭据中
4-6 Jenkins freestyle job的构建与配置
填写描述信息
选择选项参数
参数二选一传到参数中
把代码克隆到本地开始构建
添加脚本,把之前定义的参数传入到shell脚本里
这些都是参数传参
工作区域路径,当前所有的任务配置文件都会保存在这个路径中,
git相关的输出
执行脚本,有一个语法错误
少写了一个空格
现在就成功了
4-7 Jenkins Pipeline job的编码规范与构建配置
添加描述信息
#!申明 groovy脚本
关闭git全局ssl认证
添加stages区域
jenkins有凭据id
这样就把jenkins源代码,克隆到本地目录内
将传入的参数写入到test.properties文件中
再新创建stage任务,检查是否写入成功
注意大小写
第一次构建出现了错误。首次构建pipeline job的时候,我们的参数没有引入到当前的pipelinejob 当中
可以添加如下参数
现在是一个比较稳定的状态去执行
4-8 Jenkins Linux shell集成和Jenkins参数集成
编辑一个shell脚本
使用了shell脚本打印了若干信息
可以加一个选项参数
可以加一个文本参数
添加布尔值参数
再编辑一个shell脚本
4-9 Jenkins Git和Maven集成
保存
构建成功
这样就成功安装了一个maven
这里有一个事先写好的源代码
有pom.xml
复制仓库地址
git的源代码编译并打包成war包
、这就是javahome路径
maven路径
点击构建,maven就开始构建
war包保存到了这里
4-10 Jenkins Ansible集成
试试是否配置了密钥认证
testservers就是ansible server清单文件
输入正确拼写
5-1 Freestyle job实战 - 三剑客环境搭建
有仓库说明gitlab是搭建成功的
验证ansible再jenkins主机中是否安装成功,加载环境
5-2 Freestyle job实战 - 环境配置
windows主机关闭git ssl认证
复制出一个目录
deploy.yml作为入口文件,inventory清单,roles详细任务列表
把文件复制成2份
变量可以传入到roles的子文件
修改目录名称
创建一个健康状况检查的文件,用来监控最后的网站是否部署成功
这里的变量就是清单中变量值
5-3 Freestyle job实战 - 编写playbook脚本实现静态网页远程部署
编辑主任务操作
申明叫本地文件remote_src传送到目标文件
将该任务在本地playbook下执行,而不是目标主机下执行
将脚本文件输出的内容传递给一个参数 health_status
这个任务就是输出上个任务注册的参数值,这样可以在playbook输出中看到该脚本的返回值
5-4 Freestyle job实战 - 将playbook部署脚本提交到Gitllab仓库
保证当前目录是在编辑好 ,nginx-playbook下,所有的操作提交
推送到远程仓库master分支下
5-5 Freestyle job实战 - Freestyle任务构建和自动化部署
set +x 关闭一些没必要的环境变量输出
添加一些选项参数
添加一个文本参数
这里提示路径不存在
这里更正路径
继续开始构建
这里是git操作
set +x 禁止输出无用的变量
这样就完成了一键自动部署
5-6 Jenkins pipeline job实战 - 三剑客环境搭建
jenkins和gitlab都登录到了
5-7 Jenkins pipeline job实战 - 环境配置
gather_facts true相当于在playbook的时候可以获取主机相关信息,这样入口文件就完成了
首先编辑dev环境
现在dev环境和prod环境一样,加一个git配置,因为要git clone
修改dev以便区别
根据端口来判断
复制php.fpm的配置
清空文件再编辑
nginx模板文件就编辑好了
5-8 Jenkins pipeline job实战 - 编写playbook脚本实现WordPress远程部署
清空主配置并编辑
安装php-fpm相应模块
创建health check任务,用来测试远程的任务是否成功,delegate_to 用来定义当前shell脚本是在本机执行。register=health_status将shell脚本返回值传入到这个变量里
添加一行打印输出
5-9 Jenkins pipeline job实战 - 将源码和脚本提交到Gitlab仓库
这里就添加了一个目录
5-10 Jenkins pipeline job实战 - pipeline任务构建脚本的编写
选择流水线
关闭ssl认证
找到凭据唯一ID
最后一个stage做ansible的部署操作
5-11 Jenkins pipeline job实战 - pipeline任务构建以及自动化部署
控制台输出你是否要允许部署,proceed就是继续
如果报错没有环境变量可以继续,因为第一次还没有加载进去
set +x关闭环境变量的输出
首先需要把wordpress上传到gitlab中
mysql进行初始化
进入到wordpress初始化界面
成功
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_42227818/article/details/106670503