在搭建 GitLab 系列 ChatOps 时需要掌握一些基础的技能知识,整个 ChatOps 涉及到很多方面,我们至少需要掌握以下技能:
- Linux 示例中我们主要以 CentOS 7 为主,但是容器内的系统会多种多样
- Docker 所有的环境都整合在 Docker 容器中,这能简化搭建的过程以及提升交流的效率
- Docker Compose 所有的容器我们均使用 Docker Compose 进行构建,很方便分享
- Python 这个很重要,不能忽视它,整个自动部署均是 Pyhon 实现
- Fabric 这个是 Python 基于 SSH 的应用部署和系统管理的库,我们基于这库实现从部署机到服务器
- JavaScript/CoffeeScript 机器人 hubot 需要这些语言知识来扩展,当然还有一些其它地方会用到这些。
- VMware/VirtualBox 需要搭建本地虚拟机模拟环境,示例使用 VirtualBox 演示
需要掌握的技能会很多,如果你已经掌握,那么跟着教程可以很快的完成 ChatOps 的部署,如果还没有掌握,可以找时间简单学习一下。其中一些组件是可以替换的,比如 :Fabric 就有很多选择,例如:Ansible、Shell 等可以用来操作远程机器的工具。当然也可以使用机器人连接 Jenkins、Kubernetes 等支持自动部署的服务,本系列中使用 hubot-gitlab-deploy
结合 Fabric
来实现自动部署。
虚拟机搭建
我下载的是 CentOS7 Minimal ISO 版本的镜像,如果对 linux 比较熟悉,那么安装任何版本系统都是可以的,这里并不详细讲解 Liunx 的全部安装过程,只讲解虚拟机配置及系统相关配置,供大家搭建时做参考。
VirtualBox 分配 4G 内存、500G 磁盘,同时添加两块网卡,一个是 Host-Only 模式,一个是 NAT 模式。
Host-Only 模式网卡可以给主机和虚拟机之间提供私有的虚拟网络,我们实验环境需要一个稳定的不受实际网络影响的虚拟网络,我是笔记本经常办公司到家里,网络环境会改变,但是我主机和虚拟机通信网络不会变化。
NAT 模式网卡是为了虚拟机可以上网,实际 Host-Only 的网卡也可以上网,但是它只能是使用有线连接时可以,我的笔记本大多数都是 WiFi 连接网络,这导致我没有办法上网,增加这块网卡可以实现上网,但是主机无法访问虚拟机,所以我需要两块网卡结合使用。
大家只需要能够让主机访问虚拟机,虚拟机可以访问虚拟机,虚拟机可以访问网络(我们需要安装一些东西)。
系统分区可以根据自己的喜好进行,我尽量模拟真实的生成环境,一个较小的系统盘,阿里云服务器是 40G,一块数据盘,我把其它容量都分配给 /data
数据盘。
1 | df -h |
安装完成系统,登陆之后需要给虚拟机设置一个固定 ip。使用 ip address
查看网卡信息,找到 192.168.*.*
的网卡,记录下网卡名称,我的是 enp0s3
,然后编辑网卡对应的配置文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3
,具体如下:
1 | TYPE="Ethernet" |
重启网卡 systemctl restart network
使配置生效,然后在主机使用 ssh 登陆虚拟机,确定网络畅通,ssh root@192.168.56.6
。
之后我们就可以使用 “无界面” 启动虚拟机,使用 ssh 登陆虚拟机进行配置。
Docker 环境安装
官网有完整的安装教程在:https://docs.docker.com/install/linux/docker-ce/centos/ ,有两种安装方式,我使用在线安装的方式,由于官方镜像无法访问,这里采用阿里云的镜像,只需要执行以下命令即可:
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
Docker 已经安装完成了,但是还需要配置一下,首先建议去阿里云申请一个 Docker 镜像加速器地址,去 https://cr.console.aliyun.com/undefined/instances/mirrors 申请,然后配置 /etc/docker/daemon.json
文件:
1 | vi /etc/docker/daemon.json |
Docker Compose 安装
相关的文档在 https://docs.docker.com/compose/install/ ,安装比较简单,执行下面的命令即可:
1 | curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
总结
基础环境配置还是比较简单的,配置过程中遇到任何问题多 google 或者在文末留言。
整个体系涉及的技术点比较宽泛,学习者需要多准备和学习。