自动化部署三剑客

Jenkins + Ansible + Gitlab

持续交付

现场交付 => shell命令行 => 持续交付

  • 版本控制系统:GitLab + GitHub

  • 持续集成工具:Jenkins

  • 部署工具(远程服务器端交付推送): Ansible + Saltstack + Chef

GitLab

GitLab 与 GitHub 的不同

  • GitHub:分布式在线代码托管仓库

    • 个人版本可在线免费使用

    • 企业版本收费且需要服务器安装

  • GitLab:分布式在线代码仓库托管软件

    • 社区免费版本需要服务器安装

    • 企业收费版本需要服务器安装

GitLab的优势和应用场景

  • 开源免费,适合中小型公司将代码放置在该系统中

  • 差异化的版本管理,离线同步以及强大分支管理功能

  • 便捷的GUI操作界面以及强大账户权限管理功能

  • 集成度很高,能够集成绝大多数的开发工具

  • 支持内置HA,保证在高并发下仍旧实现高可用性

GitLab主要服务构成

  • Nginx静态Web服务器

  • GitLab-workhorse轻量级的反向代理服务器

  • Gitlab-shell用于处理Git命令和修改authorized keys列表

  • Logrotate日志文件管理工具

  • Postgresql数据库

  • Redis缓存服务器

Gitlab安装配置管理

  • 利用VirtualBox创建测试服务器

  • 安装Gitlab前系统预配置准备工作

    • 关闭firewalld防火墙:保证本地PC可以访问虚拟机中的所有资源

      • # systemctl stop firewalld : 关闭当前正在运行的防火墙服务

      • # systemctl disable firewalld : 禁用防火墙开机启动

  • 关闭SELINUX(强制访问控制安全策略)并重启系统:保证该策略不会影响Gitlab的正常运行

    • # vi /etc/sysconfig/selinux: 修改SELINUX=disabled

    • # reboot: 重启系统,完成SELINUX的禁用操作

    • getenforce: 查看SELINUX是否已经被禁用

  • 安装Omnibus Gitlab-ce package

    • # yum -y install curl policycoreutils openssh-server openssh-clients postfix: 安装Gitlab组件

    • # curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash: 配置YUM仓库

    • sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix: 启动postfix邮件服务

    • 安装Gitlab-ce社区版本:# yum install -y gitlab-ce

  • Omnibus Gitlab 等相关配置初始化并完成安装

    • 证书创建与配置加载

      • 创建本地私有密钥

        • mkdir -p /etc/gitlab/ssl

        • openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048

        • openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"

        • 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"

        • openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048

        • 更改证书权限:chmod 600 *

    • Nginx SSL 代理服务配置
      - vi /etc/gitlab/gitlab.rb
      - 修改 external_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'
      - vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
      - 找到 server_name gitlab.example.com,并在下面添加rewrite ^(.*)$ https://$host$1 permanent
      - gitlab-ctl restart
      - 编辑windows下的host文件,手动添加一条DNS记录10.110.16.20 gitlab.example.com

    • 初始化Gitlab相关服务并完成安装

      • # gitlab-ctl reconfigure

资源

Installation methods for GitLab