千家信息网

Jenkins+GitLab+Ansible playbook安装与基本使用

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,GitLab什么是GitLab?GitLab是一个开源分布式版本控制系统,开发语言为Ruby,功能为管理项目源代码、版本控制、代码复用与查找GitLab与GitHub的不同github分布式在线代码托
千家信息网最后更新 2024年09月23日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::8080
第一次访问新的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

0