jenkins+ansible+gitlab自动化部署三剑客

释放双眼,带上耳机,听听看~!

1.  Gitlab搭建与流程使用

1.  GitLab主要服务构成

1.  nginx服务器

2.  Gitlab-workhorse轻量级的反向代理服务器

3.  Gitlab-shell用于处理git命令和修改公钥列表

4.  Logrotate日志文件管理工具

5.  Postgresql数据库

6.  Redis服务器

2.  Gitlab的工作流程

1.  在Gitlab的web界面创建项目仓库,在客户端克隆该项目

2.  创建项目分支(Gitlab服务器)

3.  编写代码并提交至该分支(客户端)

4.  推送该项目分支至远程Gitlab服务器(客户端)

5.  进行代码检查并提交至Master主分支合并申请

6.  项目负责人审查代码并确认合并申请

3.  GitLab的安装配置管理

1.  关闭防火墙

2.  关闭selinux

3.  安装Omnibus Gitlab-ce package

1.  安装Gitlab组件

yum install curl policycoreutils openssh-server openssh-clients postfix -y

2.  配置YUM仓库

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

3.  启动postfix邮件服务

centos7: systemctl start postfix && systemctl enable postfix

centos6: /etc/init.d/postfix start

4.  安装Gitlab-ce社区版本

yum install -y gitlab-ce

5.  Omnibus Gitlab等相关配置初始化并完成安装

1.  证书创建与配置加载

2.  Nginx SSL代理服务配置

3.  初始化Gitlab相关服务并完成安装

4.  gitlab设置

5.  gitlab应用

Gitlab后台管理

开发视角的Gitlab

普通开发人员创建分支,申请给领导合并分支

领导合并分支

运维视角的Gitlab

用户管理

权限管理                                        

2.  Ansible环境配置与Playbook编写规范

1.  安装模式

1.  yum包管理安装

yum -y install ansible

2.  git源代码安装(推荐)

git clone https://github.com/ansible/ansible.git

3.  ansible2.5+python3.6安装步骤

1.  预先安装python3.6

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz

tar xf Python-3.6.5.tar.xz

cd python-3.6.5

yum install gcc gcc-c-++ -y

yum -y install zlib*

./configure –prefix=/usr/local –with-ssl –with-ensurepip=install –enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

make && make altinstall

2.  安装virtualenv

pip install virtualenv

pip –trusted-host pypi
.python
.org install virtualenv

报错解决方法:https://blog.csdn.net/bernieyangmh/article/details/77334667

3.  创建ansible系统账户并安装python3.6版本virtualenv实例

useradd deploy && su – deploy

virtualenv -p /usr/local/bin/python3.6 .py3-a2.5-env

yum install -y git nss curl

4.  git源代码安装ansible2.5

cd /home/deploy/.py3-a2.5-env

git clone https://github.com/ansible/ansible.git

5.  加载python3.6 virtualenv环境

source /home/deploy/.py3-a2.5-env/bin/activate

6.  在virtualenv环境下,安装ansible依赖包

pip install paramiko PyYAML jinja2

cd ansible

git checkout stable-2.5

7.  在python3.6虚拟环境下加载ansible2.5

source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

8.  验证ansible2.5

ansible –version

4.  ansible playbooks入门和编写规范

1.  每次部署都要先加载virualenv环境和ansible2.5

su – deploy

source /home/deploy/.py3-a2.5-env/bin/activate

source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

2.  创建playbooks

mkdir test_playbooks

cd test_playbooks/

mkdir inventory roles

cd inventory/

vi testenv

内容如下:


1
2
3
4
5
6
7
8
1[testservers]
2test.zhen.com
3
4[testservers:vars]
5server_name=test.zhen.com
6user=root
7output=/root/test.txt
8

cd roles/

mkdir -p testbox/tasks

cd testbox/tasks

vi main.yml


1
2
3
1- name: Print server name and user to remote testbox
2  shell: "echo 'Currently {{  user }} is logining {{ server_name }}' > {{ output }}"
3

cd  /home/deploy/test_playbooks

vi deploy.yml


1
2
3
4
5
6
1- hosts: "testservers"
2  gather_facts: true
3  remote_user: root
4  roles:
5    - testbox
6

tree一下/home/deploy/test_playbooks,创建的各级目录如下:

jenkins+ansible+gitlab自动化部署三剑客

在当前用户deploy下,创建公钥

ssh-keygen -t rsa

ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub root@test.zhen.com

ssh-copy-id -i /home/zhangshaohua1510/.ssh/id_rsa.pub '-p 11984 zhangshaohua1510@192.168.1.44'

执行playbook

ansible-playbook -i inventory/testenv  ./deploy.yml

2.  ansible playbooks常用模块

1.  File模块

在目标主机创建文件或目录,并赋予其系统权限

2.  Copy模块

实现ansible服务端到目标主机的文件传送

3.  Stat模块

获取远程文件状态信息

4.  Debug模块

打印语句到ansible执行输出

5.  Command/Shell模块

用来执行Linux目标主机命令行

6.  Template模块

实现ansible服务端到目标主机的jinja2模板传送

7.  Packaging模块

调用目标主机系统包管理工具(yum,apt)进行安装

8.  Service模块

管理目标主机系统服务

3.  Jenkins环境构建与任务编写

1.  jenkins安装配置管理

1.  添加yum仓库源

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

rpm –import https://pkg.jenkins.io/redhat/jenkins.io.key

2.  保证系统java版本为8.0或8.0以上

yum install java -y

java -version

3.  关闭系统防火墙

4.  关闭selinux

5.  安装jenkins

yum install jenkins -y

6.  创建jenkins系统用户

useradd deploy

7.  更改jenkins启动用户与端口

vi /etc/sysconfig/jenkins

JENKINS_USER=deploy

JENKINS_PORT=8081

chown -R deploy.deploy /var/lib/jenkins

chown -R deploy.deploy /var/log/jenkins

chown -R deploy.deploy /var/cache/jenkins

8.  启动jenkins

systemctl start jenkins

9.  访问http://172.168.1.191:8081

初始化admin密码

复制/var/lib/jenkins/secrets/initialAdminPassword文件的内容

10.  出现错误

jenkins+ansible+gitlab自动化部署三剑客

解决方法: 

修改/var/lib/jenkins/hudson.model.UpdateCenter.xml

该文件为jenkins下载插件的源地址,改地址默认jenkins默认为:https://updates.jenkins.io/update-center.json,就是因为https的问题,此处我们将其改为http即可,之后重启jenkins服务即可。

其他国内备用地址(也可以选择使用):

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

http://mirror.esuni.jp/jenkins/updates/update-center.json

重启jenkins。

1)    修改/var/lib/jenkins/updates/default.json

jenkins在下载插件之前会先检查网络连接,其会读取这个文件中的网址。默认是:

访问谷歌,这就很坑了,服务器网络又不能FQ,肯定监测失败呀,不得不说jenkins的开发者脑子锈了,所以将图下的google改为www.baidu.com即可,更改完重启服务。

jenkins+ansible+gitlab自动化部署三剑客

2.  jenkins的job任务

1.  Freestyle Job

1.  需在页面添加模块配置项与参数完成配置

2.  每个job仅能实现一个开发功能

3.  无法将配置代码化,不利于job配置迁移与版本控制

2.  pipeline Job

1.  所有模块,参数配置都可以体现为一个pipeline脚本

2.  可以定义多个stage构建一个管道工作集

3.  所有配置代码化,方便job配置迁移与版本控制

4.  需要pipeline脚本语法基础

3.  job环境准备

4.  freestyle job

1.  

4.  Freestyle任务实现静态网站部署交付

5.  Pipeline任务实现wordprees部署交付

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

网站日志统计案例分析与实现

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索