安装gitlab依赖包
启动postfix邮件服务,设置开机加载
使用openssl命令去创建证书
用私有密钥去创建ssl证书,gitlab的域名
私有密钥。csr证书都创建出来了
用私钥和csr证书去签发crt证书,x509 -req代表签署证书的格式,-days 365证书有效时间,-in引入csr证书,-signkey 引入私有密钥,-out输出 证书路径
现在证书就有了
现在需要输出pem证书
输出pem证书
将所有证书配置到gitlab配置文件中
初始化gitlab的所有相关服务配置
可以在windows的hots文件设置一下gitlab的dns解析
可以针对不同用户和项目设定不同的权限。
有时候会提交master,合并主分支的申请,等待领导审核
运维人员该如何去检查gitlab健康状况
进入到后台管理界面,monitoring下面有很多实例
log实例下,application log记录了很多相关gitlab的审计记录操作
production log记录了访问日志
** health check 可以看到一个总的健康状况**
创建一个gitlab用户给开发
修改这两个账号的初始密码
测试简单点,可以输入12345678
初始lead账号的密码
演示开发人员编写好代码后,如何将代码提交到分支下,并合并到master主分支的申请
之前使用管理员创建的仓库目录,现在需要用dev来创建
创建一个开发人员维护的git分支
修改代码
这样就把本地的分支同步到了gitlab中
写lead账号保证lead账号可以收到申请
退出dev账号,lead账号
可以点击到里面
安装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用户
安装ansible依赖包
把ansible目录移动到虚拟环境下,切换ansible版本是2。5版本
虚拟环境下加载2.5版本
完成在python虚拟环境下安装2.5版本
UAT单元测试环境
登录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文件
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服务做一个启动的操作
登录到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是否启动成功
创建一个虚拟机
连接刚才创建的jenkins虚拟主机
导入yum仓库key
安装java环境
开始jenkins初始配置操作
修改jenkins家目录和工作目录的属主属组
jenkins正常启动
进行后台user和email的注册
这样注册好了git client的user和 email
添加脚本,把之前定义的参数传入到shell脚本里
这些都是参数传参
工作区域路径,当前所有的任务配置文件都会保存在这个路径中,
git相关的输出
执行脚本,有一个语法错误
#!申明 groovy脚本
关闭git全局ssl认证
添加stages区域
jenkins有凭据id
这样就把jenkins源代码,克隆到本地目录内
将传入的参数写入到test.properties文件中
再新创建stage任务,检查是否写入成功
注意大小写
第一次构建出现了错误。首次构建pipeline job的时候,我们的参数没有引入到当前的pipelinejob 当中
可以添加如下参数
可以加一个选项参数
可以加一个文本参数
添加布尔值参数
再编辑一个shell脚本
试试是否配置了密钥认证
testservers就是ansible server清单文件
验证ansible再jenkins主机中是否安装成功,加载环境
deploy.yml作为入口文件,inventory清单,roles详细任务列表
修改目录名称
创建一个健康状况检查的文件,用来监控最后的网站是否部署成功
申明叫本地文件remote_src传送到目标文件
将该任务在本地playbook下执行,而不是目标主机下执行
将脚本文件输出的内容传递给一个参数 health_status
这个任务就是输出上个任务注册的参数值,这样可以在playbook输出中看到该脚本的返回值
保证当前目录是在编辑好 ,nginx-playbook下,所有的操作提交
推送到远程仓库master分支下
set +x 关闭一些没必要的环境变量输出
添加一些选项参数
添加一个文本参数
这里提示路径不存在
gather_facts true相当于在playbook的时候可以获取主机相关信息,这样入口文件就完成了
首先编辑dev环境
现在dev环境和prod环境一样,加一个git配置,因为要git clone
创建health check任务,用来测试远程的任务是否成功,delegate_to 用来定义当前shell脚本是在本机执行。register=health_status将shell脚本返回值传入到这个变量里