【Jenkins 与 Ansible 集成指南:从优势解析到实战落地(含本机配置、插件安装、工具配置及命令 / 剧本两种 Jenkins 调用方式全流程】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

目录

  • 前言
  • 一、Jenkins结合ansible的好处
  • 二、Jenkins结合ansible实战
    • [2.1 Jenkins本机配置](#2.1 Jenkins本机配置)
    • [2.2 下载插件](#2.2 下载插件)
    • [2.3 配置Tools](#2.3 配置Tools)
    • [2.4 Jenkins前置项目配置](#2.4 Jenkins前置项目配置)
    • [2.5 Jenkins使用ansible命令](#2.5 Jenkins使用ansible命令)
    • [2.6 Jenkins使用ansible-playbook剧本](#2.6 Jenkins使用ansible-playbook剧本)

前言

对Jenkins基础知识不了解的小伙伴可以参考这篇文章
https://blog.csdn.net/m0_63756214/article/details/155387987?spm=1001.2014.3001.5501

对ansible基础知识不了解的小伙伴可以看这篇文章
https://blog.csdn.net/m0_63756214/article/details/155024864?spm=1001.2014.3001.5501

对ansible-playbook基础知识不了解的小伙伴可以看这篇文章
https://blog.csdn.net/m0_63756214/article/details/155066320?spm=1001.2014.3001.5501

一、Jenkins结合ansible的好处

Jenkins结合Ansible构建项目能大幅提升部署效率与标准化程度:Jenkins擅长自动化触发构建、版本控制和任务调度,Ansible则专注于批量服务器的配置管理、应用部署,二者结合可实现从代码构建到跨环境部署的全流程自动化

Jenkins结合ansible最使用的场景就是:面对成百上千台前后端服务器,直接在 Jenkins 系统配置中维护所有服务器信息十分繁琐。通过 Jenkins 整合 Ansible,仅需在 Jenkins 系统配置中配置 Ansible 相关信息,即可由 Ansible 完成对所有前后端服务器的发包操作

二、Jenkins结合ansible实战

2.1 Jenkins本机配置

bash 复制代码
[root@jenkins ~]# yum -y install ansible
[root@jenkins ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
[root@jenkins ~]# vim /etc/ansible/hosts   #添加前后端服务器
[jenkins-frontend]   #前端主机组,下面可以写多个ip
192.168.136.134      #前端服务器地址
[jenkins-backend]    #还可以添加其它标签,比如设置一个后端服务器标签
192.168.136.135      #后端服务器地址
[root@jenkins ~]# ssh-copy-id 192.168.136.134    #发送公钥给前端服务器,做过的朋友可以直接跳过
[root@jenkins ~]# ansible jenkins-frontend -m ping    #测试能不能ping通
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.136.134 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    }, 
    "changed": false, 
    "ping": "pong"
}
[root@jenkins ~]# which ansible   #查看命令存放位置
/usr/bin/ansible
[root@jenkins ~]# which ansible-playbook
/usr/bin/ansible-playbook

2.2 下载插件

去Jenkins的plugins中下载插件

下载好插件后最好重启一下Jenkins

2.3 配置Tools

去Tools中配置ansibleansible-playbook命令的位置

2.4 Jenkins前置项目配置

新建一个项目

设置保留构建方案

设置身份认证

设置构建步骤

分别是:进入前端页面目录下---->安装前端项目依赖包---->编译打包成可以直接部署的静态文件

这些都是在Jenkins本机上操作的语句,大家根据具体的情况具体写

2.5 Jenkins使用ansible命令

下面就是在Jenkins页面上配置ansible

这里再增加一个构建步骤

构建一下,显示成功

2.6 Jenkins使用ansible-playbook剧本

当需要执行多条 Ansible 操作时,逐个添加构建步骤会比较繁琐。此时可以将这些操作写成 Ansible 剧本并保存到 Jenkins 服务器上,之后只需在 Jenkins 中添加一个构建步骤,调用该剧本即可完成所有操作,更高效简洁

bash 复制代码
#设置剧本
#作用是让Jenkins发送静态文件压缩包到前端服务器的/ruoyi/ruoyi-ui下,然后再解压,实现批量部署
[root@jenkins ~]# cat /etc/ansible/jenkins-frontend.yml
---
- hosts: jenkins-frontend   #前端主机组
  user: root
  tasks:
    - name: copy文件
      copy: src=/root/.jenkins/workspace/test-ruoyi-vue/ruoyi-ui/dist.tar.gz dest=/ruoyi/ruoyi-ui
    - name: 解压dist.tar.gz
      unarchive:
        src: /ruoyi/ruoyi-ui/dist.tar.gz  # 源文件绝对路径
        dest: /ruoyi/ruoyi-ui/            # 解压目标目录
        remote_src: yes                   # 确认文件在远程服务器(而非控制端)
        mode: '755'                       # 解压后文件统一赋权755
[root@jenkins ~]# ansible-playbook --syntax-check /etc/ansible/jenkins-frontend.yml   #检查语法

先删除刚才添加的ansible信息,刚才添加的两个我都删除了

重新增加构建步骤

构建项目,显示成功


注:

文中若有疏漏,欢迎大家指正赐教。

本文为100%原创,转载请务必标注原创作者,尊重劳动成果。

求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~

相关推荐
开发者联盟league16 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes的Demo工程
kubernetes·gitlab·jenkins
开发者联盟league16 小时前
使用k8s安装Jenkins
容器·kubernetes·jenkins
开发者联盟league18 小时前
使用Jenkins整合Sonarqube/Gitlab/Harbor/Kubernetes实现CICD
kubernetes·gitlab·jenkins
serve the people1 天前
Elasticsearch(1) could you tell me how to use es if i am a beginner
大数据·elasticsearch·jenkins
开发者联盟league2 天前
使用jenkins pipeline将项目打包运行在k8s上报错kubectl: Permission denied
java·kubernetes·jenkins
江华森2 天前
Jenkins 运维管理实战博客大纲
运维·jenkins
X1A0RAN2 天前
解决jenkins(本机部署或容器部署)安全机制【CSP】问题
jenkins·allure报告
烧饼Fighting2 天前
Jenkins自动化编译部署Spring Boot项目
spring boot·自动化·jenkins
serve the people2 天前
Elasticsearch(3) show me some examples
大数据·elasticsearch·jenkins
牛奶咖啡132 天前
CI/CD——通过Jenkins插件实现与K8s集成并部署应用到k8s集群的实践保姆级教程
ci/cd·kubernetes·jenkins·jenkins安装k8s插件·jenkins对k8s配置凭据·jenkins配置pod模板·编写流水线脚本部署应用到k8s