一、操作本机Shell命令
Linux使用命令生成公私钥:ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 127.0.0.1
1、使用简单列表创建一个视图
2、在这个视图里创建一个任务项目,类型选择Freestyle project(自由风格项目)
3、在项目的构建步骤中选择 Execute shell ,输入要执行的shell命令
4、保存后执行构建
5、查看此次构建的信息,点击控制台输出,可以看到执行的结果
二、Jenkins通过ssh管理服务器(Publish over SSH)
1、先将公钥发送到要管理的机器
ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.105
ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.106
2、部署前需要先添加ssh服务器
系统管理 -> 系统设置 -> 添加SSH服务器,如果没有的话装下Publish over SSH这个插件
将要管理的机器添加,本地的私钥地址为/root/.ssh/id_rsa,登陆用户为root,远程的执行目录为/tmp/下
默认使用的密钥登陆,也可以使用密码,在高级里可以选择使用密码,需要将选项打勾,下方输入密码
3、在这个视图里创建一个任务项目,名称为sshhello,类型选择Freestyle project(自由风格项目),然后增加构建步骤,选择
Send files or execute commands over SSH这个构建类型
将刚才设置的两台ssh机器都选上,执行命令为ifconfig,然后保存
4、然后执行构建这个任务项目,控制台输出可以看到有执行结果
5、Publish Over Ssh部署的优点缺点
- 服务器数量少的,使用ssh管理方便
- 对于服务器数量过多时,配置繁琐: 添加ssh服务器繁琐,添加项目指定服务器繁琐
三、jenkins权限管理
1、Jenkins默认安全权限:登录用户可以做任何事情
默认是登录用户可以做任何事,密码复杂度一定要高
无法做到:控制项目只读
2、Jenkins的安全矩阵设置
- 可针对用户配置只读权限
- 无法做到:控制某个项目只读,只能设置所有项目
在jenkins管理中选择管理用户
然后在安装设置里,设置授权策略,为wangxiaoyu这个设置一个读权限
overall和job都设置读权限,添加的Overall的read权限原因:如果不添加的话,这些普通用户登录到jenkins则会提示:用户没有Overall/read权限(用户无法登陆)
然后用这个账号登陆,只有看的权限
3、Jenkins的项目矩阵授权策略
- 安全权限可细化到每个项目
- 管理方面:不好管理,因为得每个项目去配置,不能针对某一类项目统一配置
在安全设置里授权策略选择项目矩阵授权策略,overall选择read权限,其他的不设置,到项目中再设置
选择前面的shelltest这个job,然后给wangxiaoyu这个用户设置读权限
然后用wangxiaoyu用户登录可以看到只有这个项目的读权限了
4、Jenkins安全之基于角色的权限管理
- 权限控制可以细化到项目
- 能批量设置项目权限
默认权限
- admin拥有所有权限
- 其它用户无权限
(1)基于角色的权限管理需要安装插件:Role-based Authorization Strategy
(2) 启动Jenkins的角色管理,在安全设置授权策略中选择基于角色(Role-Based Strategy)的设置
(3)在jenkins设置的最下面,有Manage and Assign Roles这个设置
(4)选择管理角色,可以看到 默认有admin这个角色,拥有全部的权限。
(5)这个时候如果用其他用户是没有任何权限的
(6)首先在管理角色里,设置一些角色权限,这里的角色其实就是设置好的一个权限,需要分配给响应的用户才能生效。
设置一个全局的权限,名称为deploy,然后再设置项目的权限,可以正则匹配多个项目,我这里为前面的shelltest和sshhello两个项目都设置了一个角色权限
(7)然后分配角色,也就是将上面创建的角色权限分配给用户
给wangxiaoyu这个用户分配全局的deploy这个角色权限,已经shelltest这个项目的权限
(8)使用wangxiaoyu这个用户登录后,可以看到只能看到shelltest这个项目,因为前面只给了这个项目的权限,然后点进去有分配的构建等权限