版本控制系统 Gitlab Github
持续集成工具 Jenkins
部署工具 Ansible Saltstack Chef
本文通过Jenkins + Ansible + Gitlab
实现自动化部署。
Ansible介绍
Ansible是一个开源部署工具,由Python开发,不需要安装客户端,通过SSH协议通信,全平台,模块化部署管理。
- 区别:
Chef
Ruby开发,C/S架构,配置需要Git依赖,
Recipe脚本编写规范,需要编程经验
Saltstack
Python开发,C/S架构,模块化配置管理,
TAML脚本编写规范,适合大规模集群部署
Ansible
Python开发,无Client,模块化配置管理,
Playbook脚本编写规范,易于上手,适合中小规模快速部署
- ansible的优势:
1. 轻量级,无客户端(agentless)
2. 开源免费,学习成本低,快速上手
3. 使用Playbook作为核心配置架构,统一的脚本格式
4. 完善的模块化扩展,支持目前主流的开发场景
5. 强大的稳定性和兼容性
环境准备
3台机器需要做环境准备。
- 角色划分:
Jenkins + Ansible 192.168.30.128
test host 192.168.30.129
gitlab 192.168.30.130
- 关闭防火墙和selinux:
# systemctl stop firewalld && systemctl disable firewalld
# setenforce 0 && sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
- 添加本地dns:
# vim /etc/hosts
192.168.30.128 jenkins.lzxlinux.com
192.168.30.129 test.lzxlinux.com
192.168.30.130 gitlab.lzxlinux.com
在Windows电脑hosts文件中添加本地dns:
192.168.30.128 jenkins.lzxlinux.com
192.168.30.129 test.lzxlinux.com
192.168.30.130 gitlab.lzxlinux.com
Ansible安装
ansible有两种安装方式。
- yum安装(不推荐):
# yum install -y ansible
- git安装(推荐):
# yum install -y git nss curl zlib* libffi-devel openssl openssl-devel
# cd /software
# wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
# tar zxf Python-3.7.3.tgz
# cd Python-3.7.3
# ./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
# make && make altinstall
# ln -s /usr/local/bin/pip3.7 /usr/local/bin/pip
# pip install --upgrade pip
# pip install virtualenv
# useradd deploy #创建ansible部署用户deploy
# su - deploy
$ virtualenv -p /usr/local/bin/python3.7 .py3-a2.8-env
$