Jenkins+GitLab+Ansible playbook安装与基本使用
GitLab
什么是GitLab?
GitLab是一个开源分布式版本控制系统,开发语言为Ruby,功能为管理项目源代码、版本控制、代码复用与查找
GitLab与GitHub的不同
github分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装
gitlab分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装
GitLab的优势和应用场景
• 开源免费,适合中小型公司将代码放置在该系统中• 差异化版本管理,离线同步y以及强大分支管理功能• 便捷的GUI操作界面以及强大账户权限管理功能• 集成度很高,能够集成绝大多数的开发工具• 支持内置HA,保证在高并发下仍旧实现高可用性
GitLab主要服务构成
1. Nginx静态Web服务器2. Gitlab-workhorse轻量级的反向代理服务器3. Gitlab-shell用于处理git命令和修改authorized keys列表4. Logrotate 日志文件管理工具5. Postgresql 数据库6. Redis 缓存服务器
GitLab的工作流程
1. 创建并克隆项目2. 创建项目某feature分支3. 编写代码并提交至该分支4. 推送该项目分支至远程gitlab服务器5. 进行代码检查并提交master主分支合并申请6. 项目领导审查代码并确认合并申请
GitLab安装配置管理
1. 安装前配置
a. 关闭防火墙 b. 关闭SELINUX并重启系统
2. 安装Omnibus Gitlab-ce package
a. 安装gitlab依赖包 yum -y install curl policycoreutils openssh-server openssh-clients postfix b. 配置yum仓库 wget http://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh chmod +x script.rpm.sh ./script.rpm.sh c. 启动postfix邮件服务 systemctl start postfix d. 安装gitlab-ce社区版本 yum -y install gitlab-ce
3. 创建本地证书
生成私钥(key文件):key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048生成csr文件:csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"生成crt文件:crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.example.com.csr" -signkey "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.crt"生成dh密钥:openssl dhparam用于生成和管理dh的文件。dh(Diffie-Hellman)是著名的密钥交换协议,或称为密钥协商协议,它可以保证通信双方安全地交换密钥。但注意,它不是加密算法,所以不提供加密功能,仅仅只是保护密钥交换的过程。openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048修改以上文件权限为600chmod 600 /etc/gitlab/ssl/*
4. 配置加载证书
备份cp gitlab.rb gitlab.rb.backup修改vim /etc/gitlab/gitlab.rbexternal_url 'https://gitlab.example.com'nginx['redirect_http_to_https'] = true# nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"# nginx['ssl_dhparam'] = /etc/gitlab/ssl/dhparams.pem
5. gitlab初始化
gitlab-ctl reconfigure
6. 配置nginx
备份cp /var/opt/gitlab/nginx/conf/gitlab-http.conf{,.backup} server区段添加vim /var/opt/gitlab/nginx/conf/gitlab-http.conf rewrite ^(.*)$ https://$host$1 permanent;
7. 重新加载并启动gitlab
gitlab-ctl restart
8. 客户端添加一条dns记录
在/etc/hosts中添加 192.168.143.130 gitlab.example.com
9. 客户端通过浏览器访问gitlab.example.com
默认管理员root,为root设置密码并登陆
GitLab基本使用
1、新建仓库
2、在客户端克隆仓库到本地 -c http.sslVerify:跳过本地ssl检查
git -c http.sslVerify=false clone https://gitlab.example.com/root/test.git
3、输入账号密码
[root@node1 devops]# git -c http.sslVerify=false clone https://gitlab.example.com/root/test.gitCloning into 'test'...Username for 'https://gitlab.example.com': rootPassword for 'https://root@gitlab.example.com': warning: You appear to have cloned an empty repository.
4、切换到test目录,并创建测试文件
[root@node1 devops]# cd test/[root@node1 test]# vim test.py
5、添加测试文件到本地仓库
[root@node1 test]# git add .
6、配置全局邮件与用户
[root@node1 test]# git config --global user.email "admin@example.com"[root@node1 test]# git config --global user.name "jym"
7、提交测试文件到本地mast分支
[root@node1 test]# git commit -m "First commit"[master (root-commit) b6581b9] First commit 1 file changed, 3 insertions(+) create mode 100644 test.py
8、push本地master到仓库
[root@node1 test]# git -c http.sslVerify=false push origin master
9、查看
Ansible
模块化,调用特定的模块,完成特定的任务;基于python语言研发,由Paramiko、PyYAML和Jinja2三个关键模块;部署简单,主从模式,支持自定义模块;支持playbook;幂等性
架构图
Ansible安装
1. 安装前配置
关闭防火墙关闭selinux各节点时间同步各节点主机名不一致各节点间ssh免密
2. Ansible2.5+python3.6安装步骤(centos7)
2.1、预先安装python3.6
wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xztar xf Python-3.6.5.tar.xz && cd Python-3.6.5/./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-wl , -rpath /usr/local/lib"make && make altinstall
2.2、安装virtualenv
pip3.6 install virtualenv
2.3、创建ansible用户并安装python3.6版本virtualenv实例
useradd deploy && su - deployvirtualenv -p python3.6 .py3-a2.10-env
2.4、Git源代码安装ansible2.10
cd /home/deploy/.py3-a2.10-envgit clone https://github.com/ansible/ansible.gitcd ansible && git checkout stable-2.10
2.5、加载python3.6 virtualenv环境
source /home/deploy/.py3-a2.10-env/bin/activate
2.6、安装ansible依赖包
pip3.6 install paramiko PyYAML jinja2
2.7、在python3.6虚拟环境下加载ansible2.10
source /home/deploy/.py3-a2.10-env/ansible/hacking/env-setup -q
2.8、验证ansible2.5安装
ansible --version
Jenkins
Jenkins简介
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序方式部署。
Jenkins 是一个主流的运维开发平台,兼容所有主流开发环境;通过插件可与海量业内主流开发工具实现集成;通过job配置单位与日志管理,使开发与运维人员能协同工作;通过权限管理划分不同job不同角色;强大的负载均衡功能,保证项目的可靠性。
Jenkins安装
1、安装java8.0或8.0以上版本
yum install java
2、安装docker
yum install docker-ce
3、安装jenkins
下载地址:https://pkg.jenkins.io/redhat-stable/yum install jenkins-2.199-1.1.noarch.rpm
4、启动jenkins
systemctl start jenkins
查看启动情况
systemctl status jenkins.service -l
5、初次访问解锁jenkins
浏览器访问jenkins地址 http:
第一次访问新的jenkins实例时,系统要求使用自动生成的密码进行解锁
查看初始密码
[root@node1 jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
acd7e8eef641433b87e3358d8d6d1e34
6、安装插件
两个选项可以设置:
• 安装建议的插件 - 安装推荐的一组插件,这些插件基于最常见的用例.
• 选择要安装的插件 - 选择安装的插件集。当你第一次访问插件选择页面时,默认选择建议的插件。
Note:可以通过Jenkins中的Manage Jenkins > Manage Plugins 页面在稍后的时间点安装(或删除)其他Jenkins插件
7、创建管理员用户
参考文章:
https://jenkins.io/zh/
https://www.bilibili.com/video/av71123251/?p=1