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操作
相关g'h
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初始化界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功

在这里插入图片描述

在使用AnsibleJenkinsGitLab进行上线时,可以编写一个Ansible的role来实现自动化部署过程。下面是一个示例的Ansible role的目录结构: ``` my_app/ ├── files/ │ └── my_app.jar ├── templates/ │ └── application.properties.j2 ├── tasks/ │ └── main.yml ├── vars/ │ └── main.yml └── README.md ``` 在`tasks/main.yml`文件中,定义了具体的部署任务,包括拷贝文件、安装依赖、重启服务等操作。例如: ```yaml --- - name: Copy JAR file copy: src: files/my_app.jar dest: /opt/my_app/my_app.jar - name: Copy application.properties file template: src: templates/application.properties.j2 dest: /opt/my_app/application.properties - name: Install dependencies shell: /usr/bin/apt-get install -y some_package - name: Restart service service: name: my_app state: restarted ``` 在`vars/main.yml`文件中,可以定义一些变量,用于配置不同环境的部署参数。例如: ```yaml --- environment: production app_port: 8080 db_host: localhost db_port: 3306 ``` 在Jenkins中,可以创建一个Pipeline Job来触发部署操作。在Pipeline的脚本中,可以使用Ansible的`ansible-playbook`命令来执行上线任务。例如: ```groovy pipeline { agent any stages { stage('Deploy') { steps { script { sh "ansible-playbook -i inventory.ini my_app/tasks/main.yml -e environment=production" } } } } } ``` 在GitLab中,可以配置一个Webhook,将代码提交或合并时触发Jenkins的构建操作。这样,每次有新的代码版本提交时,Jenkins就会自动触发部署操作。 通过结合使用AnsibleJenkinsGitLab,可以实现自动化的上线过程,并提高部署的效率和可靠性。以上只是一个简单的示例,具体的实现方式可以根据项目的需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值