当前位置:首页 » 《关注互联网》 » 正文

企业运维实战--jenkins持续集成快速入门并结合ansible进行简单部署_Rabbit_hyl的博客

24 人参与  2021年08月15日 11:43  分类 : 《关注互联网》  评论

点击全文阅读


企业运维实战--jenkins持续集成快速入门并结合ansible进行简单部署

  • 前言-jenkins简介
  • 一、jenkins安装
  • 二、jenkins插件安装
  • 三、jenkins项目创建
    • 1.简单项目--连接gitlab并自动触发
    • 2.jenkins自动构建镜像,并上传至harbor仓库
    • 3.jenkins拉取harbor仓库镜像
    • 4.SSH方式进行jenkins操作
  • 五、jenkins节点管理--添加agent节点
  • 六、jenkins用户管理
  • 七、jenkins结合ansible
    • 1.gitlab创建playbook项目并完善
    • 2.jenkins创建ansible项目
  • 八、jenkins结合k8s
  • 笔记补充


前言-jenkins简介

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、 自动化, 满足任何项目的需要。
• Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运 行。
• CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后, 立刻进行构建、(单元)测试。
在这里插入图片描述
CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部 署到更贴近真实运行环境(类生产环境)。
在这里插入图片描述

一、jenkins安装

准备一台全新的虚拟机server3,火墙和selinux全部关掉。

需要联网

下载地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

安装jdk

rpm -ivh jdk-8u171-linux-x64.rpm

在这里插入图片描述

安装依赖性,前往阿里云镜像站下载,
再装jenkins

rpm -ivh daemonize-1.7.7-1.el7.x86_64.rpm
yum install -y jenkins-2.306-1.1.noarch.rpm

在这里插入图片描述
在这里插入图片描述

开启服务

systemctl start jenkins

在这里插入图片描述

访问访问:172.25.9.3:8080

使用默认初始密码登陆,初始密码位于
cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述

登陆成功。

更新插件源

mkdir /var/lib/jenkins/update-center-rootCAs

wget https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/rootCA/update-center.crt -O /var/lib/jenkins/update-center-rootCAs/update-center.crt

chown jenkins.jenkins -R /var/lib/jenkins/update-center-rootCAs

在这里插入图片描述
给定权限
在这里插入图片描述
在这里插入图片描述
查看哪个镜像站的速度快

curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash

在这里插入图片描述

在设置中找到Update Site,将快的url填入
在这里插入图片描述

查看镜像源文件,已更改

cat /var/lib/jenkins/hubson.model.UpdateCenter.xml

在这里插入图片描述

二、jenkins插件安装

Dashboard ----> Plugin Manager
在这里插入图片描述
点击available,搜索中文插件,点击install

在这里插入图片描述

在这里插入图片描述
刷新后即可查看中文版本,部分仍然为英文是因为插件不完整
在这里插入图片描述

安装pipeline流水线插件
在这里插入图片描述

三、jenkins项目创建

1.简单项目–连接gitlab并自动触发

安装好流水线插件后即可创建项目

新建一个freestyle类型的项目名为demo
在这里插入图片描述
为项目配置git仓库,安装gitlab插件
在这里插入图片描述
配置名为demo的项目,在源码管理一栏添加私有git url
私有git路径:git@172.25.9.2:root/demo.git
在这里插入图片描述
报错,因为Jenkins本机未安装git

yum install -y git

安装完成后,报错发生变化
在这里插入图片描述

报错原因,git仓库无法和Jenkins进行SSH免密连接,解决方法:
首先将server3的公钥上传到git
在这里插入图片描述在这里插入图片描述

然后将公钥上传到Jenkins,选择ssh方式上传,报错解决。
在这里插入图片描述

构建触发器,测试轮询为每分钟,格式见图
在这里插入图片描述

设置shell

ls -l

在这里插入图片描述
测试:git端添加测试文件index.html,察看是否同步

在这里插入图片描述
在这里插入图片描述添加完成后记得push!!
在这里插入图片描述

查看demo项目控制台输出
在这里插入图片描述
index文件已检测到

gitlab自动触发jenkins
首先打开git设置----网络----外发请求, 允许Webhooks和服务对本地网络的请求 在这里插入图片描述在项目设置----Webhooks添加策略

在这里插入图片描述
其中token的获取方式为
在这里插入图片描述
成功添加策略,也可点击测试进行测试。

2.jenkins自动构建镜像,并上传至harbor仓库

git端编辑Dockerfile,定义拉取的测试镜像
在这里插入图片描述
push
在这里插入图片描述
jenkins端查看同步后的Dockerfile
在这里插入图片描述
下载插件

在这里插入图片描述将配置好的harbor仓库启动

在这里插入图片描述在server3端安装docker并连接到server1 harbor仓库中,步骤忽略
在这里插入图片描述
配置项目demo,按图中要求即可
在这里插入图片描述
添加连接仓库的钥匙,采用用户名密码的方式登陆harbor仓库,此处用户名密码为harbor仓库密码
在这里插入图片描述添加成功显示:
在这里插入图片描述
修改套接字文件权限
在这里插入图片描述

关闭配置中强制拉取这一选项

在这里插入图片描述
运行项目,查看控制台输出,成功运行
在这里插入图片描述
成功运行,在harbor/library/demo中查看上传的镜像,以任务执行名来命名的镜像
在这里插入图片描述jenkins自动构建镜像,并上传至harbor仓库完成。

3.jenkins拉取harbor仓库镜像

创建一个docker项目,类型为freestyle
在这里插入图片描述
构建触发器,当demo项目完成后,进行docker项目在这里插入图片描述执行shell命令,拉取仓库镜像
在这里插入图片描述完成配置后点击项目后的按钮进行执行
在这里插入图片描述
执行完毕查看Bulid History的控制台输出
在这里插入图片描述显示结果为成功
在这里插入图片描述
在server3中查看docker容器
在这里插入图片描述
改进:每次实行都生成新的容器,修改shell命令一栏即可
在这里插入图片描述执行查看控制台
在这里插入图片描述

4.SSH方式进行jenkins操作

安装ssh插件
在这里插入图片描述

添加ssh全局属性
Dashboard----配置----全局属性
在这里插入图片描述此处添加密钥为需要ssh登陆操作的服务器的账号和密码
在这里插入图片描述
添加完成
在这里插入图片描述
配置docker项目
选择构建步骤,采用ssh
在这里插入图片描述在这里插入图片描述
打开虚拟机172.25.9.4, 主机名为server4,并配置好docker,连接harbor仓库,添加好解析。
在这里插入图片描述

只需将原来的docker配置文件scp过去即可,此处操作忽略。

配置好server4后 执行docker项目,查看控制台输出结果,
在这里插入图片描述使用ssh方式操作jenkins成功。

五、jenkins节点管理–添加agent节点

将server4配置成jenkins的agent端

server4安装jdk
在这里插入图片描述

节点管理----新建节点
在这里插入图片描述
在这里插入图片描述

安装agent插件
在这里插入图片描述
在这里插入图片描述
安装成功显示
在这里插入图片描述

测试,关闭master节点,运行项目,查看控制台输出
在这里插入图片描述
在这里插入图片描述

测试结束后记得打开master节点,避免影响后续实验。

六、jenkins用户管理

创建新用户hyl,默认创建用户会给定全部权限
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
默认创建用户会给定全部权限

在这里插入图片描述
在这里插入图片描述
显然这样是不安全的。

安装插件Role 安装后通过插件授权
在这里插入图片描述

设定全局安全配置----授权策略----Role-Based Strategy,设置后除了admin用户以外,其他用户均需要授权才可进行操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

管理角色
在这里插入图片描述
在这里插入图片描述

分配角色
在这里插入图片描述
在这里插入图片描述

创建项目demo.01 ,测试查看用户hyl的权限
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可以看到,hyl用户只能看到demo.* 开头的项目。

七、jenkins结合ansible

在ansible和saltstack之间,通常几百个节点用ansible,因为ansible用ssh连接、几万个节点用saltstack,消息队列更加轻量级。

1.gitlab创建playbook项目并完善

在这里插入图片描述

clone到server2编辑配置文件
编辑README.md文件测试git仓库是否能够成功push

git clone git@172.25.9.2:root/playbook.git
cd playbook/
touch README.md
git add README.md
git commit -m "add README.md"
git push -u origin master

在这里插入图片描述

编辑playbook
vim 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

编辑ansible.cfg配置文件
vim ansible.cfg

[defaults]
command_warnings=False
remote_user=devops

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

创建清单,一个用于测试,一个用于部署

mkdir inventory
cd inventory/
vim prod
vim test
cat *
[root@server2 playbook]# cat inventory/prod 
server5 http_port=80
[root@server2 playbook]# cat inventory/test 
server4 http_port=8080

在这里插入图片描述

修改apache配置文件的jinja2模板,使用清单中定义的变量传值

mv httpd.conf httpd.conf.j2
vim httpd.conf.j2

在这里插入图片描述

查看目录整体结构

yum install -y tree
tree .

在这里插入图片描述

交付修改后的文件

git add .
git status -s
git commit -m " v1"

git push -u origin master

在这里插入图片描述
此时git仓库成功配置

2.jenkins创建ansible项目

在这里插入图片描述

配置git仓库
在这里插入图片描述

先查看连接是否正常
shell查看文件是否通过jenkins
在这里插入图片描述

执行项目,
在这里插入图片描述

成功,说明ansible项目gitlab与jenkins连接成功。
在这里插入图片描述

对ansible待操作的节点需要一些简单配置:

jenkins端,使用jenkins用户进行操作,需要给一个交互式bash

server4/5:

创建用户并修改密码,需要两节点的用户id相同

useradd devops
id devops
echo westos | passwd --stdin devops

在这里插入图片描述

sudo授权

visudo
# 大约100行左右进行如图所示的授权
devops  ALL=(ALL)       NOPASSWD: ALL

在这里插入图片描述
在这里插入图片描述

server3:(jenkins端),切换用户到jenkins,免密登录ansible的node节点

usermod -s /bin/bash jenkins 
su - jenkins 
cd /var/lib/jenkins/workspace/ansible
ssh-keygen
ssh-copy-id devops@server4
ssh-copy-id devops@server5

在这里插入图片描述
在这里插入图片描述

准备工作完成,开始在jenkins中晚上配置ansible项目

选择参数化构建过程----选项参数:添加参数名、被选择的参数为按ansible执行清单

在这里插入图片描述

在这里插入图片描述

构建
执行shell

cd $WORKSPACE
ansible-playbook -i inventory/$deploy playbook.yaml

在这里插入图片描述

选择参数执行项目
先测试test
在这里插入图片描述
结果显示无错误,
在这里插入图片描述
且test节点httpd服务已启动。
在这里插入图片描述

后部署prod
在这里插入图片描述
显示成功
在这里插入图片描述
prod节点部署httpd服务成功,
在这里插入图片描述

八、jenkins结合k8s

在这里插入图片描述

方法一:

ssh方式连接k8s master节点,然后执行kubectl命令即可。

方法二:
使用插件的方式管理k8s。

笔记补充

gitlab访问报错502

报错原因:8080端口被java占用

方法1:kill掉java进程,重载gitlab

方法2:修改gitlab配置文件vim /etc/gitlab/gitlab.rb 添加一个未使用的端口

external_url ‘http://172.25.9.2:8099’


点击全文阅读


本文链接:http://zhangshiyu.com/post/25411.html

项目  节点  仓库  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1