1、用ssh远程连接部署
重新开一台虚拟机server6
在使用ssh时需要先下载ssh插件
在docker test项目上点击配置,进行配置
在server6上安装docker
[root@server1 yum.repos.d]# scp docker.repo server6:/etc/yum.repos.d/
[root@server1 sysctl.d]# scp docker.conf server6:/etc/sysctl.d/
[root@server6 ~]# yum install docker-ce -y 安装docker
[root@server6 ~]# systemctl enable --now docker
[root@server1 docker]# scp -r certs.d/ server6:/etc/docker/
[root@server1 docker]# systemctl restart docker
[root@server6 ~]# vim /etc/hosts 添加解析
172.25.50.1 server1 reg.westos.org
[root@server4 docker]# scp daemon.json server6:/etc/docker/
[root@server6 ~]# systemctl restart docker 重载服务
2、jenkins结合ansible部署apche
[root@foundation50 docs]# cp -r ansible/ /var/www/html/
[root@server4 docker]# cd /etc/yum.repos.d/
[root@server4 yum.repos.d]# vim ansible.repo
[ansible]
name=ansible
baseurl=http://172.25.50.250/ansible
gpgcheck=0
[root@server4 yum.repos.d]# yum install -y ansible 安装ansible
在gitlab上新建项目
[root@server3 ~]# git clone git@172.25.50.3:root/ansible.git 将项目克隆下来
[root@server3 ~]# cd ansible/
[root@server3 ansible]# vim ansible.cfg
[defaults]
remote_user = devops
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@server3 ansible]# mkdir inventry 创建inventry清单
[root@server3 ansible]# cd inventry/
[root@server3 inventry]# vim test 创建测试组
[test]
172.25.50.5 http_port=8080 指定变量
[root@server3 inventry]# vim prod 创建生产组
[prod]
172.25.50.6 http_port=80 指定变量
[root@server3 ansible]# vim playbook.yaml 编写playbook
---
- hosts: all
tasks:
- name: install apache
yum:
name: httpd
state: present
- name: configure apache
template:
src: httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
notify: restart apache
- name: enable apache
service:
name: httpd
state: started
enabled: yes
handlers:
- name: restart apache
service:
name: httpd
state: restarted
[root@server3 ansible]# yum install httpd -y 安装apche主要是为了获取配置文件
[root@server3 ansible]# cp /etc/httpd/conf/httpd.conf httpd.conf.j2 将httpd配置文件拷贝到当前目录
[root@server3 ansible]# vim httpd.conf.j2
[root@server3 ansible]# git add . 添加当前目录
[root@server3 ansible]# git commit -m "v1" 提交
[root@server3 ansible]# git push -u origin main 上传
在jenkins上新建任务
[root@server4 ~]# cd /var/lib/jenkins/workspace/ jenkins从gitlab拉取项目代码所存放位置
[root@server4 workspace]# ls
ansible ansible@tmp docker test test test@tmp
[root@server4 workspace]# cd ansible
[root@server4 ansible]# ls
ansible.cfg httpd.conf.j2 inventry playbook.yaml README.md
[root@server4 workspace]# id jenkins jenkins拉取项目是以jenkins用户身份进行拉取的
uid=998(jenkins) gid=996(jenkins) groups=996(jenkins),994(docker)
[root@server4 ansible]# su -- jenkins
bash-4.2$ cd /var/lib/jenkins/workspace/ansible jenkins从gitlab拉取项目代码所存放位置
bash-4.2$ ls
ansible.cfg httpd.conf.j2 inventry playbook.yaml README.md 所以要执行 playbook.yaml必须在此路经下运行才可以
bash-4.2$ cat ansible.cfg 查看ansible配置
[defaults]
remote_user = devops 并且我们设置远程登陆用户为devops,所以我们必须在远程主机上创建devops用户
[privilege_escalation] 表示配置了sudo
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[root@server5 ~]# useradd devops 在server5上创建devops用户
[root@server5 ~]# echo westos |passwd --stdin devops 设置密码
[root@server6 ~]# useradd devops 在server6上创建devops用户
[root@server6 ~]# echo westos |passwd --stdin devops 设置密码
bash-4.2$ ssh-keygen 做免密
bash-4.2$ ssh-copy-id devops@172.25.50.5 以devops用户身份免密server5
bash-4.2$ ssh-copy-id devops@172.25.50.6 以devops用户身份免密server6
由于ansible.cfg配置文件配置了sudo,所以构建主机server5、server6上必须配置sudo
[root@server5 ~]# visudo
[root@server5 ~]# visudo
在jenkins上进入ansbile项目进行配置
bash-4.2$ curl 172.25.50.5:8080 访问,出现apache测试页
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test Page for the Apache HTTP Server
不完美,可以创建一个页面
[root@server3 ansible]# vim playbook.yaml 编辑yaml文件
[root@server3 ansible]# git commit -a -m "v3" 提交
[root@server3 ansible]# git push -u origin main 推送
bash-4.2$ curl 172.25.50.5:8080 访问成功
server5
bash-4.2$ curl 172.25.50.6:80 访问成功
server6