【ChatOps系列】GitLab系列环境准备
在搭建 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
数据盘。
$ df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 40G 1.2G 39G 3% / # 系统盘 devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda3 452G 33M 452G 1% /data # 数据盘 tmpfs 379M 0 379M 0% /run/user/0
安装完成系统,登陆之后需要给虚拟机设置一个固定 ip。使用 ip address
查看网卡信息,找到 192.168.*.*
的网卡,记录下网卡名称,我的是 enp0s3
,然后编辑网卡对应的配置文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3
,具体如下:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" # 使用静态网络 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="enp0s3" UUID="6f19c6e8-87de-42a5-afdb-2fe8a8bc74a8" DEVICE="enp0s3" ONBOOT="yes" # 开机启动 IPADDR=192.168.56.6 # 网络地址,根据之前查询的网段分配 NETMASK=255.255.255.0 # 子网掩码 #GATEWAY=192.168.56.1 #默认网关,如果和我的网络配置一致就不用配置了 #DNS1=192.168.7.1 #DNS 配置,如果和我的网络配置一致就不用配置了
重启网卡 systemctl restart network
使配置生效,然后在主机使用 ssh 登陆虚拟机,确定网络畅通, ssh root@192.168.56.6
。
之后我们就可以使用 “无界面” 启动虚拟机,使用 ssh 登陆虚拟机进行配置。
Docker 环境安装
官网有完整的安装教程在: https://docs.docker.com/install/linux/docker-ce/centos/ ,有两种安装方式,我使用在线安装的方式,由于官方镜像无法访问,这里采用阿里云的镜像,只需要执行以下命令即可:
$ yum install -y yum-utils device-mapper-persistent-data lvm2 ...... $ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ...... $ yum install docker-ce docker-ce-cli containerd.io ...... $ systemctl enable docker ...... $ systemctl start docker ...... $ docker version Client: Docker Engine - Community Version: 19.03.1 API version: 1.40 Go version: go1.12.5 Git commit: 74b1e89 Built: Thu Jul 25 21:21:07 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.1 API version: 1.40 (minimum version 1.12) Go version: go1.12.5 Git commit: 74b1e89 Built: Thu Jul 25 21:19:36 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.6 GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb runc: Version: 1.0.0-rc8 GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f docker-init: Version: 0.18.0 GitCommit: fec3683
Docker 已经安装完成了,但是还需要配置一下,首先建议去阿里云申请一个 Docker 镜像加速器地址,去 https://cr.console.aliyun.com/undefined/instances/mirrors 申请,然后配置 /etc/docker/daemon.json
文件:
$ vi /etc/docker/daemon.json { "data-root": "/data/docker", "registry-mirrors": [ "https://yourcode.mirror.aliyuncs.com" # 替换成你申请到地址 ] } $ make /data/docker $ systemctl restart docker
Docker Compose 安装
相关的文档在 https://docs.docker.com/compose/install/ ,安装比较简单,执行下面的命令即可:
$ curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose $ docker-compose version docker-compose version 1.24.1, build 4667896b docker-py version: 3.7.3 CPython version: 3.6.8 OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018
总结
基础环境配置还是比较简单的,配置过程中遇到任何问题多 google 或者在文末留言。
整个体系涉及的技术点比较宽泛,学习者需要多准备和学习。
谢谢你请我吃糖果
支付宝
微信