1. 机器准备
|---------|------------|
| 开发 | 10.0.0.204 |
| gitlab | 10.0.0.201 |
| jenkins | 10.0.0.200 |
| web | 10.0.0.202 |
2. 开发主机配置
创建密钥对,将公钥添加到gitlab账号的ssh密钥中
[root@dev ~]#ssh-keygen
[root@dev ~]#cat /root/.ssh/id_rsa.pub
复制远程仓库的内容到本地
[root@dev ~]#git clone git@gitlab.lly.org:devops/wheel.git
dns 指向201主机[root@dev ~]#vim /etc/netplan/01-netcfg.yaml
......
nameservers:
addresses: [10.0.0.201]
3. gitlab 主机配置
配置dns解析
[root@gitlab ~]#apt update && apt install -y bind9 bind9-utils bind9-host bind9-dnsutils
[root@gitlab ~]#vim /etc/bind/named.conf.default-zones
......
zone "lly.org" IN {
type master;
file "/etc/bind/lly.org.zone";
};
[root@gitlab ~]#vim /etc/bind/lly.org.zone
$TTL 1D
@ IN SOA master admin (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.201
gitlab A 10.0.0.201
[root@gitlab ~]#chgrp bind /etc/bind/lly.org.zone
[root@gitlab ~]#systemctl enable named
[root@gitlab ~]#systemctl restart named
4. jenkins 主机配置
dns 指向201主机
[root@jenkins ~]#vim /etc/netplan/01-netcfg.yaml
......
nameservers:
addresses: [10.0.0.201]
安装 jenkins 和 jdk[root@jenkins ~]#apt update && apt -y install openjdk-17-jdk
[root@jenkins ~]#ls
jenkins_2.479.1_all.deb
[root@jenkins ~]#dpkg -i jenkins_2.479.1_all.deb
[root@jenkins ~]#systemctl status jenkins.service
创建脚本将前端文件并赋予权限[root@jenkins ~]#mkdir -p /data/jenkins/scripts
[root@jenkins ~]#vim /data/jenkins/scripts/test.sh
HOST_LIST="
10.0.0.202"
for host in $HOST_LIST;do
scp -r * root@$host:/var/www/html/
done
[root@jenkins ~]#chmod +x /data/jenkins/scripts/test.sh
在 jenkins 工具上创建全局凭据(凭据中添加的私钥和gitlab上添加公钥成对即可)[root@jenkins ~]#su jenkins
jenkins@jenkins:~/.ssh$ cat /root/.ssh/id_rsa
将查询到的私钥添加到下面private key 中
jenkins@jenkins:~/.ssh$ cat id_rsa.pub将查询到的公钥添加到对应gitlab账户的ssh密钥中
在jenkins工具上创建任务
5. web 服务器配置
dns 指向201主机
[root@web ~]#vim /etc/netplan/01-netcfg.yaml
......
nameservers:
addresses: [10.0.0.201]
安装 nignx 服务[root@web ~]#apt update && apt install nginx -y
6. 验证是否实现自动化部署
在开发主机上修改代码并上传到远程仓库
[root@dev wheel]#vim index.html
[root@dev wheel]#git commit -am "change"
[root@dev wheel]#git push --all
随后用 web 服务器 ip 在浏览器中验证是否显示修改后的页面