项目环境:
操作系统:SUSE Linux Enterprise Server 12 SP3 (x86_64)
软件:docker,jenkins,ansible,gitlab
软件介绍:
Docker:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,比虚拟机更加强大,体积小,运行速度快,Docker 容器可以打包为镜像文件(类似VM虚拟机的那些快照文件),迁移的时候我们只需要在新服务器上安装 Docker,就能把之前打包好的镜像文件导入到 Docker 里面,运行容器,就能实现访问,不需要重新配置环境
Jenkins:Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能
Ansible:ansible 是新出现的自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible 所运行的模块,ansible 只是提供一种框架
GitLab:GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的web服务。GitLab 是由 GitLabInc. 开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有 wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务
真正的大师永远抱着一颗学徒的心
1、安装 pip(通用的 Python 包管理工具):
1. zypper se pip
2. zypper install python-pip
3. pip --version (检测 pip 是否安装成功)
安装 pip
2、安装docker:
1. pip install docker
安装 docker
2. pip install docker-compose
安装 docker-compose
3. 或者创建一个 install_docker.sh 文件,输入如下内容:
安装 docker
cd ../pkgs/docker-ee
yum install docker-ee-selinux-17.03.1.ee.3-1.el7.centos.noarch.rpm
yum install docker-ee-17.03.1.ee.3-1.el7.centos.x86_64.rpm安装 docker-compose
cd ..
cp docker-compose /usr/local/bin
chmod +x /usr/local/bin/docker-compose
mkdir /etc/docker
cp daemon.json /etc/docker/daemon.json启动 docker
service docker start4. 执行 install_docker.sh
bash install_docker.sh
3、拉取 jenkins 镜像
docker pull jenkins:alpine
拉取 jenkins 镜像
4、生成并启动 jenkins 容器
生成 jenkins:docker run -itd -p 3003:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/hzq/jenkins:/var/jenkins_home jenkins
Jenkins 工作空间: /home/hzq/jenkins/workspace/
查看 jenkins 日志:docker logs jenkins
启动 jenkins:docker start jenkins
查看 jenkins 容器是否启动
jenkins 容器成功启动
进入 /home/hzq/jenkins 目录,复制 secrets/initialAdminPassword 里的密钥,在下面安装 jenkins 的时候会用到
5、安装 jenkins
在浏览器输入服务器 IP地址 + 3003 端口进入安装页面
输入上面复制的密钥后点击继续
输入密钥
自定义插件
开始安装
设置管理员信息
进入主页
6. 下载 gitlab 镜像,并启动 gitlab
下载 gitlab 镜像
docker pull gitlab/gitlab-ce启动 gitlab:
sudo docker run --detach
--hostname gitlab.xxxxx.com
--publish 443:443 --publish 80:80 --publish 10022:22
--name gitlab
--restart always
--volume /data/gitlab/config:/etc/gitlab
--volume /data/gitlab/logs:/var/log/gitlab
--volume /data/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:latest (注:改为10022 端口,避免与系统的 22 端口发生冲突)启动 gitlab 容器
通过设定的地址 + 端口进入gitlab 登录界面
进入到个人项目页面
7. 进入 jenkins 页面配置 jenkins 和 gitlab
新建一个任务
创建好项目的名称,选择一个构建一个自由风格的软件项目
创建任务
添加描述
Repository URL 处填写 git 仓库地址
Credentials 处添加 ssh 密钥
触发器构建,点击高级
点击高级按钮后,生成一个 secret token(复制到gitlab当中)
gitlab和 jenkins 通讯,需要此 token 和上面的 url
生成 secret token
登录到gitlab页面,进入 Settings 里的 Integrations
配置 webhooks
填写 jenkins 上配置的参数
8. 项目测试
克隆 gitlab上面的项目到本地
克隆项目
测试项目
成功自动拉取项目
进入 jenkins 工作空间 (/home/hzq/jenkins/workspace/)
创建和推送的first_demo.txt 已经被成功拉取
9.使用 ansible 自动化部署项目
Ansible 配置: /etc/ansible/ansible.cfg
配置管理主机: /etc/ansible/hosts
在hosts文件中添加管理主机的IP地址列表:172.17.0.1 ... etc.
关于 ansible 的配置可以参考: Jenkins配置ansible
ansible 配置好后,我们在本地新建一个 ansible.sh 的脚本 (执行一些 git 命令)
ansible.sh
删除刚刚创建的 first_demo.txt 文件,执行ansible.sh 脚本,测试结果
成功执行
jenkins 也成功响应
成功自动拉取
\ (^^) 好啦!以上就是今天的所有内容,大家有什么不明白的或者有什么好的建议,欢迎留言随时沟通哦~~
作者:ArminLv
链接:https://www.jianshu.com/p/191f0c81c6bb