jenkins部署、应用(二)


一、RBAC:基于角色的访问控制

安装插件
在这里插入图片描述
修改默认授权策略
在这里插入图片描述
新建测试用户

在这里插入图片描述
新建角色
在这里插入图片描述
全局
在这里插入图片描述
项目:通配
在这里插入图片描述
用户授权:
将创建的相关角色权限授权给用户
在这里插入图片描述在这里插入图片描述
使用不同的用户登录,测试权限是否正确

二、pipeline:管线、流水线

相当于整合自由项目进行构建,更加精简,清晰,是一个更强大的功能
1.使用最新版安装ssh agent 插件
注意:下图版本ssh agent在add时会出错:ERROR: Failed to run ssh-add
,所以需要提前做好虚拟机间的免密连接:ssh-keygen;ssh-copy-id server6/192.168.56.16和ssh-copy-id server7/192.168.56.17(即加的节点与执行机进行免密
在这里插入图片描述
新建流水线项目 docker_image_build;进行保存项目后,gitlab节点创建webhooks
gitlab节点创建webhooks(根据新建流水线项目新建webhooks,新建webhooks可参考:jenkins部署、应用(一);且jenkins部署、应用(一)创建webhooks可删除)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制一下脚本并做相应修改:
本版本需要:192.168.56.16、192.168.56.17实现免密(即加的节点与执行机进行免密

pipeline {
    agent any                                         ##所有
    stages {
        stage('check out') { 
            steps {
                git credentialsId: '1d2a5968-6bce-4d29-b239-d5245988ce13', url:      'git@192.168.56.11:root/demo.git', branch: 'main'
            }                                    ##1d2a5968-6bce-4d29-b239-d5245988ce13:系统管理-凭据中,key标识,即gitURL对应凭据的UUID(在凭据中找对应的即可)
        }                                        ##git@192.168.56.11:root/demo.git:gitURL
        stage('docker build') {
            steps {
                sh '''
                cd $WORKSPACE
                docker build -t reg.westos.org/library/demo:${BUILD_NUMBER} .
                '''                                 ##$WORKSPACE:变量--项目路径;“.”   为目录,即$WORKSPACE
            }                                    ##docker build:项目名称
        }
        stage('docker push') {           ##执行docker push
            steps {
                sh '''
                REPOSITORY=reg.westos.org/library/demo:${BUILD_NUMBER}
                docker tag $REPOSITORY reg.westos.org/library/demo:latest   ##tag
                docker login reg.westos.org -u admin -p westos              ##login
                docker push $REPOSITORY                                     ##
                docker push reg.westos.org/library/demo:latest              ##最新版本相映射
                '''
            }
        }
        stage('docker deploy') {                                    ##部署;本版本安装插件后add有问题,和其他版本有差异
            steps {
                    sh '''
                    ssh -o StrictHostKeyChecking=no -l root 192.168.56.17 """       ##ssh agent插件需要提前加
                    docker ps -a |grep myapp && docker rm -f myapp       ##
                    docker rmi reg.westos.org/library/demo:latest
                    docker run -d --name myapp -p 80:80 reg.westos.org/library/demo:latest """
                    '''
            }
        }
    }
}

成功如下图:
全流程测试:在gitlab主机修改并提交代码->触发docker_image_build流水线构建
在这里插入图片描述
补充:
1.若安装k8s插件,可以部署在k8s平台,构建任务就可以通过pod方式
2.由于web页面会缓存,部分修改可能与执行效果不一致,可清除浏览器缓存后,重新构建!
3.ssh-agent也可以从网站下载之前的版本:https://plugins.jenkins.io/ssh-agent/releases/
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/ssh-agent/

ssh-agent:295.v9ca_a_1c7cc3a_a_

下载后在插件管理中安装即可
在这里插入图片描述在这里插入图片描述
新建流水线项目 docker_image_build…继续操作即可

三、jenkins结合ansible参数化构建

主机环境

主机IP角色
server5192.168.56.15jenkins主机、ansible主机
server6192.168.56.16测试机test、devops sudo
server7192.168.56.17测试机prod、devops sudo

ansible无agent设计,通过ssh直接访问,所以需要把目标主机实现免密

此实验前:
检查前面实验建立的:系统管理-节点列表-docker1节点需要断开,并删除
master节点开启2个以上执行者数量

1.安装ansible

[root@server5 ~]# vim /etc/yum.repos.d/ansible.repo     ##设置epel源
[ansible]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
gpgcheck=0

[root@server5 ~]# yum list --showduplicates ansible    ##列出所有版本
[root@server5 ~]# yum install -y ansible

server7同下配置(server6)

devops是测试机的ssh免密用户,并且配置sudo
[root@server6 ~]# useradd devops 
[root@server6 ~]# echo westos | passwd --stdin devops
Changing password for user devops.
passwd: all authentication tokens updated successfully.

[root@server6 ~]# visudo                  ##给devops用户授权

在这里插入图片描述
在ansible主机上以jenkins身份配置ssh免密到所有测试机:

[root@server5 ~]# usermod -s /bin/bash jenkins   ##修改用户登录Shell的命令
[root@server5 ~]# su - jenkins                  ##jenkins主机以jenkins用户身份访问
-bash-4.2$ ssh-keygen
-bash-4.2$ ssh-copy-id devops@192.168.56.16    ##以devops用户身份
-bash-4.2$ ssh-copy-id devops@192.168.56.17

2.新建gitlab项目

在这里插入图片描述

克隆项目
[root@server1 ~]# git clone git@192.168.56.11:root/playbook.git
[root@server1 ~]# cd playbook/
[root@server1 playbook]# vim ansible.cfg
[defaults]
command_warnings=False
remote_user=devops              ##devops用户

[privilege_escalation]
become=True
become_method=sudo
become_user=root               ##切成超户
become_ask_pass=False

[root@server1 playbook]# mkdir inventory
[root@server1 playbook]# cd inventory/
[root@server1 inventory]# vim test        ##对象一:“测试机”;http_port=8000:变量
[test]
192.168.56.16 http_port=8000

[root@server1 inventory]# vim prod        ##对象二:“生产机”
[prod]
192.168.56.17 http_port=8080

[root@server1 inventory]# cd ..
[root@server1 playbook]# vim playbook.yaml
---
- hosts: all
  tasks:
  - name: install the latest version of Apache
    yum:
      name: httpd
      state: latest

  - name: configure apache                  ##配置apache
    template:
      src: httpd.conf.j2                    ##模板、在当前目录httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf      ##目标路径
    notify: restart apache                  ##

  - name: Start service httpd, if not started   ##启动
    service:
      name: httpd
      state: started
      enabled: yes

  handlers:                                 ##处理器
  - name: restart apache                    ## restart apache    和上面notify保持一致
    service:
      name: httpd
      state: restarted                      ##状态
[root@server1 playbook]# yum install -y httpd
[root@server1 playbook]# cp /etc/httpd/conf/httpd.conf .
[root@server1 playbook]# mv httpd.conf httpd.conf.j2
[root@server1 playbook]# vim httpd.conf.j2
...
Listen {{ http_port }}

推送项目
[root@server1 playbook]# git add .
[root@server1 playbook]# git status -s
[root@server1 playbook]# git commit -m "add playbook.yaml"
[root@server1 playbook]# git push -u origin main

3.jenkins新建项目

新建项目-自由风格:playbook
在这里插入图片描述在这里插入图片描述
1.以jenkins身份,cd至/var/lib/jenkins/workspace/ansible目录
2.ansible-playbook -i…以jenkins身份执行命令
$deploy:根据参数化构建过程定义的名称,设置变量
在这里插入图片描述

选择参数构建

在这里插入图片描述
在这里插入图片描述
控制台输出
在这里插入图片描述
测试:
分别以jenkins身份:
curl 192.168.56.16:8000
curl 192.168.56.17:8080


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值