• 主页
  • Go
  • ChatOps
  • 归档
  • 关于
所有文章

  • 主页
  • Go
  • ChatOps
  • 归档
  • 关于

【ChatOps系列】GitLab系列环境准备

2019-07-27

在搭建 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 连接网络,这导致我没有办法上网,增加这块网卡可以实现上网,但是主机无法访问虚拟机,所以我需要两块网卡结合使用。

大家只需要能够让主机访问虚拟机,虚拟机可以访问虚拟机,虚拟机可以访问网络(我们需要安装一些东西)。

VirtualBox详细配置

系统分区可以根据自己的喜好进行,我尽量模拟真实的生成环境,一个较小的系统盘,阿里云服务器是 40G,一块数据盘,我把其它容量都分配给 /data 数据盘。

1
2
3
4
5
6
7
8
9
$ 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,具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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/ ,有两种安装方式,我使用在线安装的方式,由于官方镜像无法访问,这里采用阿里云的镜像,只需要执行以下命令即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ 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 文件:

1
2
3
4
5
6
7
8
9
10
$ 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/ ,安装比较简单,执行下面的命令即可:

1
2
3
4
5
6
7
8
9
$ 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 或者在文末留言。

整个体系涉及的技术点比较宽泛,学习者需要多准备和学习。

赏

谢谢你请我吃糖果

支付宝
微信
  • 本文作者: 戚银(thinkeridea)
  • 本文链接: https://blog.thinkeridea.com/201907/chatops/gitlab_environmental_preparation.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
  • chatops
  • devops
  • gitlab
  • linux
  • centos
  • VirtualBox
  • chatops

扫一扫,分享到微信

微信分享二维码
【Go】高效截取字符串的一些思考
【ChatOps系列】ChatOps简介
  1. 1. 虚拟机搭建
  2. 2. Docker 环境安装
  3. 3. Docker Compose 安装
  4. 4. 总结
© 2021 戚银 京ICP备17038866号-1
Hexo Theme Yilia by Litten
  • 所有文章

tag:

  • chatops
  • devops
  • hubot
  • github
  • gitlab
  • slack
  • rocket.chat
  • linux
  • centos
  • VirtualBox
  • 读写锁
  • 死锁
  • net.http
  • http
  • pool
  • bytes
  • buffer
  • makeSlice
  • ioutil
  • go
  • strings
  • replace
  • unsafe
  • string
  • int
  • numerical
  • uintptr
  • proxy
  • git
  • shell
  • ip
  • net
  • ip2long
  • ip2number
  • client
  • RemoteAddr
  • compress
  • io
  • 压缩
  • substring
  • substr
  • utf8
  • 中文字符串截取
  • sync
  • once
  • OncePointer
  • BufferPool
  • strings.Replacer
  • closeOnce
  • slice
  • array
  • 缓存
  • 内存池
  • 日志
  • csv
  • join
  • round
  • half up
  • exmath
  • math