自动化运维之DevOps
DevOps(英文Development(开发
)和Operations(技术运营
)的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作
简单的来说DevOps是一种文化,是让开发开发、运维、测试能够之间沟通和交流
自动化运维工具:saltstack、jenkins、等。因为他们的目标一样,为了我们的软件、构建、测试、发布更加的敏捷、频繁、可靠
如果运维对git不熟,是无法做自动化部署。因为所有的项目都受制于开发
一、Jenkins 介绍
Jenkins
只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有
Hudson
是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins
,jenkins在功能上远远超过hudson
Jenkins官网:https://jenkins.io/
二、jenkins 部署
yum install -y java-1.8.0
cd /etc/yum.repos.d/
wget http://pkg.jenkins.io/redhat/jenkins.repo
rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
yum install -y jenkins
systemctl start jenkins
Jenkins Web访问地址:$IP:8080
查看初始秘钥
[root@linux-node1 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
490a2f35a2df49b6b8787ecb27122a3a
然后就直接点一步,补全信息就可以了
三、 Gitlab介绍
GitLab是一个利用Ruby on Rails
开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
GitLab拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
四、gitlab 部署
1) Server端部署gitlab
[root@linux-node1 ~]# wget http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@linux-node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#关闭 NetworkManager 和防火墙
[root@linux-node1 ~]#systemctl stop firewalld.service
systemctl disable firewalld
systemctl disable NetworkManager
#关闭SELinux并确认处于关闭状态
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
#更新系统并重启
[root@linux-node1 ~]# yum update -y && reboot
[root@linux-node1 /]# yum install curl policycoreutils openssh-server openssh-clients postfix -y
[root@linux-node1 /]# systemctl start postfix
[root@linux-node1 /]# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
[root@linux-node1 /]# yum install -y gitlab-ce
2) 在安装一个git客户端
[root@linux-node1 /]# yum install -y git
3) 配置并启动gitlab-ce
[root@linux-node1 ~]# gitlab-ctl reconfigure
#时间可能比较长,耐心你等待即可!----
###提示:修改完需要使用reconfigure重载配置才会生效
4) gitlab常用命令:
关闭gitlab:[root@linux-node2 ~]# gitlab-ctl stop
启动gitlab:[root@linux-node2 ~]# gitlab-ctl start
重启gitlab:[root@linux-node2 ~]# gitlab-ctl restart
#可以使用gitlab-ctl管理gitlab,例如查看gitlab状态:
[root@linux-node1 /]# gitlab-ctl status
###提示: 我们要保证80端口不被占用
[root@linux-node1 /]# lsof -i:80
5) 浏览器验证:
Web:访问:$IP
提示:启动gitlab需要时间!
Web页面提示我们需要设置一个账号密码(我们要设置最少8位数的一个账号密码)我们设置密码为:q1w2e3r4
默认用户名:root 密码:q1w2e3r4 [刚才设置的]
Docker快速部署
1,gitlab
- 下载gitlab镜像
docker pull twang2218/gitlab-ce-zh #中文版
- 运行gitlab实例
data/gitlab 存放目录
sudo docker run -d \
--hostname gitlab01 \
--publish 8443:443 --publish 80:80 --publish 2222:22 \
--name gitlab01 \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh
web访问:宿主机IP:80 10.0.17.143
用户密码:root q1w2e3r4
- 配置gitlab实例
3.1 配置邮箱:
docker exec -t -i gitlab vim /etc/gitlab/gitlab.rb
下面以网易163邮箱为例配置邮箱:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxxx@163.com"
gitlab_rails['smtp_password'] = "xxxxpassword"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_openssl_verify_mode'] = "peer"
gitlab_rails['gitlab_email_from'] = "xxxx@163.com"
user["git_user_email"] = "xxxx@163.com"
注意以上的xxxx@163.com代表用户名,即邮箱地址,而xxxxpassword不是邮箱的登陆密码而是网易邮箱的客户端授权密码, 再网易邮箱web页面的设置-POP3/SMTP/IMAP-客户端授权密码查看。
3.2 配置外部访问URL
这个必须配置,否则默认以容器的主机名作为URL,刚开始由于做了端口映射80->8080, 因此设置为
external_url "http://10.0.17.143"
后来发现external_url只能配置ip或者域名,不能有端口,否则不能启动。
于是只能把端口设置为80->80,然后external_url设置为:
- 重启gitlab
docker restart gitlab
2,jenkins
- QQ精品交流群
-
- 微信公众号
-
2018年9月10日 下午3:09 沙发
嗨,这是一条评论。
要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。
评论者头像来自Gravatar。
2018年9月12日 下午3:48 板凳
哈哈哈哈