运维实操——持续集成与持续交付之jenkins(下)

1、SSH的方式对远程节点jenkins操作

server2是jenkins的matser节点工作,不想把任务部署在server2上,如何部署到server3上呢?可以使用ssh的方式

新创建一台虚拟机server3安装docker-ce,开启docker,给它证书,内核参数文件,damen.json文件,添加解析,套接字给权限等一些列操作,和前面一样
在这里插入图片描述
jenkins添加ssh插件
在这里插入图片描述
成功安装
在这里插入图片描述
jenkins,系统设置
在这里插入图片描述
添加远程主机server3,端口为22,使用前面创建的ssh证书,保存
在这里插入图片描述
回到docker项目,修改配置,不用之前的shell,使用远程的shell,命令还是运行容器,保存,构建
在这里插入图片描述
查看控制台输出,成功
在这里插入图片描述
在server3上测试,curl localhost,可以看到myapp镜像运行成功

2、添加jenkins的agent节点

实际中我们不可能直接用jenkins的matser节点工作,master只负责调度,本文中server3作为jenkins的agent节点,agent节点来真正工作
server3安装jdk和git
在这里插入图片描述
jenkins安装ssh agent插件
在这里插入图片描述
系统管理,节点管理
在这里插入图片描述
新建节点
在这里插入图片描述
添加agent节点的信息,启动方式为ssh,添加证书,不校验,保存
在这里插入图片描述
并把master节点的数量变为0,master只负责调度
在这里插入图片描述
成功创建agent
在这里插入图片描述
现在配置docker项目,把ssh shell关闭,用shell即可,就可以在server3上构建,手动构建
在这里插入图片描述
查看控制台成功构建
在这里插入图片描述
也可以在server3上测试

3、用户管理

之前一直使用的root账户,具有所有权限,实际中应该使用普通用户,并且权限进行一定的限制
jenkins管理用户
在这里插入图片描述
新建一个普通用户lyb
在这里插入图片描述
默认情况下lyb用户具有所有权限,都可以管理,这显然不合适
在这里插入图片描述
返回超级用户,添加基于角色控制的插件
在这里插入图片描述
全局安全配置
在这里插入图片描述
从原来的登陆用户可以做任何事改为基于角色的控制
在这里插入图片描述
然后就会出现基于角色控制的模块
在这里插入图片描述
管理角色
在这里插入图片描述
添加全局角色,users,权限只有读;添加项目角色demo,可以看凭据,可以读写运行任务,对demo开头的项目都生效
在这里插入图片描述
分配角色
在这里插入图片描述
把lyb用户和全局角色users绑定,把lyb用户和项目角色demo绑定
在这里插入图片描述
现在登陆lyb用户,无法修改配置了,且看不到docker项目了,只能看到demo项目
在这里插入图片描述
切回root用户,创建一个demo01项目
在这里插入图片描述
成功创建
在这里插入图片描述
现在切到lyb用户,demo开头的项目都可以管理,可以删除demo01项目
在这里插入图片描述

4、jenkins结合ansible部署apache

(1)纯净环境

回到root用户
恢复master节点工作,去掉agent节点,首先断开连接
在这里插入图片描述
删除agent节点
在这里插入图片描述
恢复master工作节点数量为2
在这里插入图片描述
为了净化环境,禁用了docker项目
在这里插入图片描述
已成功禁用
在这里插入图片描述

(2)部署

首先计划每个虚拟机的角色
server1是gitlab私有仓库,4G内存
server2是jenkes,ansible主机,1G内存
server3和sever4是真正部署ansible的节点,各1G
server9是harbor仓库,暂时不用,关闭了

新建项目ansible
在这里插入图片描述
server2配置yum源
在这里插入图片描述
server2安装ansible
在这里插入图片描述
gitlab中新建项目playbook
在这里插入图片描述
server1克隆gitlab的项目playbook,产生了playbook目录
在这里插入图片描述
编写playbook需要的文件,首先看框架如下
在这里插入图片描述

[root@server1 playbook]# cat ansible.cfg 	%该ansible的配置文件会覆盖原本的路径下的配置文件
[defaults]
command_warnings=False
remote_user=devops

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

[root@server1 playbook]# cat playbook.yaml 
---
- hosts: all					%所有主机执行下面命令
  tasks:
  - name: install apache		%安装apache
    yum:
      name: httpd
      state: present
  - name: configure apache		%配置apache
    template:					%使用jinjia模板
      src: httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf	%部署的位置
    notify: restart apache			%如果配置文件变更了,通知handlers
  - name: start apache			%开启apache
    service:
      name: httpd
      enabled: yes				%开机自启
      state: started
  handlers:						%如果受到通知,重启apache
  - name: restart apache
    service:
      name: httpd
      state: restarted
[root@server1 playbook]# cd inventory/
[root@server1 inventory]# cat test 	%用来测试
server3 http_port=8080
[root@server1 inventory]# cat prod 	%用来部署生产环境
server4 http_port=80

在这里插入图片描述
设定htpp的配置文件的端口号是变量,对于server3来说就是8080,对于server4来说就是80
在这里插入图片描述
添加提交上传到gitlab
在这里插入图片描述
可以看到
在这里插入图片描述
回到jenkins,修改项目ansible的配置,指定gitlab的URL,使用ssh证书,指定分支为master
在这里插入图片描述
执行命令先简单写ls,创建
在这里插入图片描述
查看控制台输出正常
在这里插入图片描述
因为jenkens流水线执行时使用的是jenkens用户,ansible执行时使用的是devops用户,所以server2的jenkens用户要和server3的devops用户建立ssh连接免密登陆,server2的jenkens用户也要和server4的devops用户建立ssh连接免密登陆。下面一步一步实现

server3建立devops用户,设置密码
在这里插入图片描述
server4建立devops用户,设置密码
在这里插入图片描述
server2的jenkens用户没有交互界面,所以先修改为bash,进入jenkens用户,生成ssh密钥,
在这里插入图片描述
server2的jenkens用户把ssh密钥给server3的devops用户和server4的devops用户都发了一份
在这里插入图片描述
测试:server2的jenkens用户可以免密登陆server3的devops用户和server4的devops用户
在这里插入图片描述
给server3的devops用户授权
在这里插入图片描述
在这里插入图片描述
给server4的devops用户授权
在这里插入图片描述
在这里插入图片描述
回到jenkins页面ansible项目的配置,设定参数化构建,选项参数,即使用变量
在这里插入图片描述
deploy是变量,它有两个选项test和prod,
在这里插入图片描述
区工作目录,根据playbook.yaml文件ansible自动部署在inventory目录下的test或prod
在这里插入图片描述
首先选择在test上部署,测试代码是否有问题
在这里插入图片描述
控制台显示test上部署没问题
在这里插入图片描述
看到了httpd的8080端口
在这里插入图片描述
现在就可以放心的部署在prod上了
在这里插入图片描述
控制台显示prod上部署没问题
在这里插入图片描述
看到了httpd的80端口
在这里插入图片描述

5、jenkins结合k8s

jenkins也可以和k8s结合,结构如图,这里不再叙述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值