Linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理jenkins结合ansible

Posted 是大姚呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理jenkins结合ansible相关的知识,希望对你有一定的参考价值。

Linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理、jenkins结合ansible

一、jenkins节点管理

实际工作中master节点只负责调度,需要创建agent节点进行工作,本文创建server4作为agent节点进行工作

server1进入harbor仓库下,查看运行的容器

server3将jdk发送给server4

server4安装jdk和git

jenkins安装SSH Build Agents插件

进入节点管理界面

选择新建节点,选择固定节点属性

编辑agent节点的信息,执行器设为5,远程工作目录在/tmp,设为常用节点,启动方式为ssh

为SSH添加证书,选择不校验,尽量保持代理在线

为master节点配置从节点

将master的构建队列改为0,只负责调度

server4正常访问外网

配置docker项目,关闭ssh shell使用shell

查看控制台输出可以看到成功构建

docker项目执行报错:因为已经调度到了server4上,不能再通过ssh的方式,已经在本机上了,冲突

demo项目选择手动构建

server4查看正在运行的容器可以看到demo正常运行,测试访问正常

二、jenkins用户管理

在页面点击选择管理用户

选择新建用户,填写注册信息

使用刚才创建的用户进行登录

可以看到新创建的用户拥有管理员权限,可以进行全部操作,我们需要将其改为普通权限用户

使用管理员账户登录

安装基于角色的访问控制插件

在系统管理中选择全局安全配置

授权策略由用户可以做任何事改为基于角色权限

然后会出现角色的管理和分配模块

进入,选择角色管理

添加全局角色users,只为其赋予读的权限

添加项目角色demo,赋予其查看凭据,以及任务和运行的相关操作,对所有以demo开头(westos .*)的项目都生效

点击角色分配

为刚才创建的yao用户分配users全局角色和demo项目角色

现在再使用yao这个用户进行登录

现在只能看到demo项目且无法进行配置了

登入admin用户创建一个demo开头的项目

创建完毕

再登入yao用户,也可以看到demo01这个项目

使用yao用户对demo01项目进行删除

删除完成,剩下demo项目

三、jenkins结合ansible

3.1、实验环境准备

真实主机开启虚拟机server5

查看正在运行的虚拟机

在真实主机上为server5添加域名解析

jenkins配置中将agent1节点断开连接

删除agent1节点

点击配置master节点

将执行器数量改为2

禁用docker项目

3.2、项目部署

创建一个新的项目,名为ansible

查看正在运行的虚拟机
server2为gitlab仓库
server3为jenkins,ansible主机
server4和server5是ansible的受控节点

真实主机进入到ansible目录下

server3编辑ansible.repo文件,将baseurl地址设为真实主机的absible目录,然后安装ansible

在gitlab新建playbook代码仓库,设为私有,使用自述文件初始化仓库

选择使用ssh克隆

server2克隆gitlab的项目playbook,可以看到克隆成功

进入到playbook目录,编辑playbook.yaml配置文件

[root@server1 playbook] cat playbook.yaml
---
- 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: start apache
    service:
      name: httpd
      enabled: yes
      state: started
  handlers:
  - name: restart apache
    service:
      name: httpd
      state: restarted

在playbook目录中创建inventory目录并进入。
inventory是ansible中的部署对象主机,即playbook.yaml中的hosts包含的对象
创建并编辑prod文件,写入server5节点和端口信息,用于部署
创建并编辑test文件,写入server4节点和端口信息,用于测试

在playbook目录下创建并编辑ansible.cfg配置文件

[root@server1 playbook] cat ansible.cfg 
[defaults]
command_warnings=False
remote_user=devops

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

server4安装httpd服务

将httpd.conf文件发送给server2

使用变量方式定义httpd的端口

将httpd.conf文件改名为httpd.conf.j2

server2使用tree命令查看playbook目录结构如图

server2使用git命令添加并提交上传playbook至gitlab

访问gitlab页面可以看到项目

复制项目的克隆链接

只需指定git仓库即可,无需gitlab主动触发,因为需要手动选择inventory构建参数
jenkins页面中配置ansible项目,指定源码的URL,使用ssh证书,指定分支为main

触发器的执行命令写个简单的命令ls -l

在ansible的控制台输出日志中可以看到执行正常

现在为节点之间创建ssh免密
server3切换到/var/lib/jenkins/workspace目录下,查看ansible.cfg文件详细信息

进入jenkens用户,查看密码


为jenkins创建交互式bash,进入jenkins,设置远端用户为devops

server4添加devops用户,并修改密码

server5也添加devops用户,修改密码,用户id要和server4的一致

server3生成ssh密钥

将server3的jenkens用户创建的ssh密钥给server4和server5的devops用户都发一份

测试ssh登录,现在server3的jenkens用户可以免密登陆server4和server5的devops用户

server4和server5为devops用户授权



在jenkins页面配置ansible项目,勾选参数化构建,填写选项参数,变量名称为deploy,选项是prod和test

编写执行shell:
先切换到工作目录,根据playbook.yaml文件的配置,ansible会自动部署在inventory目录下的test或prod

先使用test测试构建项目

在控制台输出日志中可以看到执行成功

server4查看端口状态可以看到8080端口处于开放状态

现在使用prod参数构建项目

查看控制台输出日志,显示部署成功

在server5上查看端口状态,可以看到80端口开放

以上是关于Linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理jenkins结合ansible的主要内容,如果未能解决你的问题,请参考以下文章

Linux企业运维——持续集成与持续交付(下)jenkins节点与用户管理jenkins结合ansible

Linux企业运维——持续集成与持续交付

Linux企业运维——持续集成与持续交付(上)

Linux企业运维——持续集成与持续交付(上)

持续集成基本概念

云计算与DevOps: 持续集成/持续交付与市场分析