2024年10月jenkins与ansible有啥区别(「自动化运维」从0到1 CICD自动化部署落地分享)

 更新时间:2024-10-12

  ⑴jenkins与ansible有啥区别(「自动化运维」从到CICD自动化部署落地分享

  ⑵「自动化运维」从到CICD自动化部署落地分享

  ⑶DevOps(Development和Operations的组合词是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程、技术运营和质量保障(QA部门之间的沟通、协作与整合。

  ⑷DevOps的基础核心是CICD。

  ⑸CICD的基础核心是自动化。

  ⑹在我之前的团队,因为要切换全新业务线,需要为新业务搭建一套全新的环境,所有东西从开始。

  ⑺原先只是用于部署测试环境,后面决定一起部署生产环境,这个过程中我还造成了一个严重生产环境问题,好在当时的生产环境还未正式使用,未造成严重影响。

  ⑻在当时挺害怕也挺有压力的,但是后面项目完整落地,平稳运行,我还是挺有成就感的,接下来我将整个项目过程完整的分享出来。

  ⑼首先进行技术栈选型,我们选择的是Jenkins,Jenkins当属业内持续集成老大哥,有着非常丰富的插件,也可以选择gitlab集成的CICD,因为我们还有其它的测试脚本需要集成,所以Jenkins对于我们来说是最优的选择;

  ⑽Ansible是批量运维工具,通过编写yaml脚本,可以方便实现批量管理多台机器,并且Ansible是比较轻量级应用,很容易上手;

  ⑾shell脚本可以用于执行一系列命令。

  ⑿其它的就结合团队项目情况进行搭建。

  ⒀Jenkins应用部署实现流程

  ⒁首先来梳理下整个项目的实现流程,主要分为Jenkins主节点和应用服务器,是一对多的关系。

  ⒂Jenkins主节点的主要负责项目部署前的工作,主要包含拉取代码,前端打包,后端打包,快照版检测,将压缩包和部署脚本发送到目标机器(即应用服务器,远程调用目标机器上的部署脚本进行代码替换。

  ⒃应用服务器部署脚本执行过程有:解压压缩包,停止服务,覆盖代码,拉取disconf,应用目录分组赋权,重启服务,检查服务是否有进程,查看启动日志,删除/tmp目录下旧压缩包。

  ⒄Jenkins应用部署流程图

  ⒅指路【Jenkins系列】如何搭建Jenkins环境。

  ⒆因为这个我没有实践成功的教程,所以在这里就不贴啦~

  ⒇指路【Jenkins系列】如何构建JenkinsJob。

  ⒈新增Job,主要用于拉取代码,执行Maven编译,执行app_build.sh,将压缩包通过ssh发送到目标机器,远程调用目标机器的deploy.sh。

  ⒉问题描述:在错误的路径拉取配置,原因是未成功解压压缩包。

  ⒊解决方案:校验压缩包是否解压成功解压成功,并且在cd到正确的路径后添加&&(&&表示上一条命令执行成功再执行下一条命令才进行拉取配置。

  ⒋问题描述:项目没有正常停止,导致无法重新启动。

  ⒌解决方案:虽然执行kill-,但是未找到根本原因,因此加了一个检测机制,如果检测没有正常停止服务,则退出程序。

  ⒍问题描述:生产部署脚本拉取了开发环境的的jdbc配置,原因是生产部署脚本写错了开发环境disconf的域名,当时我同时在搞开发生产环境的脚本,开发和生产是两套不同的脚本,一时混乱写错了,吓得一批,好在当时生产环境还没投产使用。

  ⒎解决方案:为了避免后续这种情况的发生,而且是必须避免的,我们通过环境名称来判断走开发还是生产域名,这样就能保证脚本一致性了。

  ⒏在这个项目实际遇到的问题远不止上面这几个,在这个实践过程中,我对整个应用部署流程有了更深的理解,平时方方面面的学习终于集中化起来进行实践了。

  ⒐我习惯将学到的知识和遇到的问题记录起来,在写这篇文章的过程回过头来看,五味杂陈,原来我都经历了这些哈哈哈......

  ⒑踩过的坑终究使我更加强大,带你见证呱呱本呱成长为参天大呱~

  ⒒呱呱大王本呱带你飞!

  ⒓zabbix和ansible的区别

  ⒔Zabbix和Ansible分别是两款非常流行的开源监控和自动化工具。具有上手简单,学习曲线平滑、配置简单、功能强大、扩展性强等优点。本质上没有什么区别。

  ⒕有一种病症叫做“选择障碍症”,实际上工程师更容易被这个病症缠绕。但是,实际上没那么复杂,抓阄就行了。目前主流的自动化运维工具有puppet、ansible、saltstack,实际上每一个工具都基本上能够完成你的运维任务,也都是久经考验的。

  ⒖都有NB的地方,也有挫的地方,所以,完全没法从功能、特性等等这些方面去选择。如果考虑到快速使用,建议puppet,有一个foreman做web平台,上手快。如果考虑后期自己开发。并且是无agent方式,可以用ansible基于ssh的,比较直接粗暴,会有种很“爽“的感觉。

  ⒗ansible主要是远程命令执行,比较适合做“一次性”的工作。saltstack用的不多。不做评论。我个人比较喜欢用puppet和ansible,倒不是说saltsatack不好,是我从开始就在用puppet,所以,就没有再去学习saltsatck的必要了。

  ⒘ansible的优势是什么?如何在企业中更好地使用ansible?ansible比较适合做“一次性”的工作,例如,系统部署、应用发布、打补丁等等。在企业中使用ansible,要注意以下几点:

  ⒙安全控制,简单来说就是避免用root用户来执行。

  ⒚控制好依赖在写playbook的时候,控制好先后顺序和依赖关系。

  ⒛结果的收集和分析因为一下子几百台机器一起干活,所以,就要自己写外置脚本,更好地收集ansible的操作结果,并且进行直观的汇总和展现。

  jenkins和ansible的区别

  Jenkins+sonar的系统,用来执行自动构建、自动部署、自动测试,代码质量评估的整套平台,用来做敏捷。持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了。后期应该搞单元测试,自动化测试,自动部署做分布式,服务器集群的时候没有自动化工具是很难运转的!

  ansible-core和ansible的区别

  操作难度和外观区别。、ansible-core外观完善,能让用户身心喜悦,ansible-core更新不需要去客户端安装agent,更新是,只需要在主控机上记性一次更新即可。、ansible外观简陋,让人看上去心情不是很美好,ansible-core更新需要客户安装agent,而且还需要apex工具协助更新。

  jenkins自动化测试是单元测试还是集成测试

  作者:阮一峰互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuousintegration,简称CI。本文简要介绍持续集成的概念和做法。一、概念持续集成指的是,频繁地(一天多次将代码集成到主干。它的好处主要有两个。、快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。、防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。MartinFowler说过,“持续集成并不能消除Bug,而是让它们非常容易发现和改正。“二、持续交付持续交付(Continuousdelivery指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。三、持续部署持续部署(continuousdeployment是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。持续部署的前提是能自动化完成测试、构建、部署等步骤。它与持续交付的区别,可以参考下图。(图片来源四、流程根据持续集成的设计,代码从提交到生产,整个过程有以下几步。.提交流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(mit。.测试(第一轮代码仓库对mit操作配置了钩子(hook,只要提交代码或者合并进主干,就会跑自动化测试。测试有好几种。单元测试:针对函数或模块的测试集成测试:针对整体产品的某个功能的测试,又称功能测试端对端测试:从用户界面直达数据库的全链路测试第一轮至少要跑单元测试。.构建通过第一轮测试,代码就可以合并进主干,就算可以交付了。交付后,就先进行构建(build,再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片等等。常用的构建工具如下。JenkinsTravisCodeshipStriderJenkins和Strider是开源软件,Travis和Codeship对于开源项目可以免费使用。它们都会将构建和测试,在一次运行中执行完成。.测试(第二轮构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高,进入后面的部署阶段后,很可能会出现严重的问题。.部署通过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact。将这个版本的所有文件打包(tarfilename.tar*存档,发到生产服务器。生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink指向这个目录,然后重新启动应用。这方面的部署工具有Ansible,Chef,Puppet等。.回滚一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。五、参考链接GergelyNemeth,ContinuousDeploymentofNode.jsApplicationsCodeship,ContinuousIntegrationEssentials

  ansible使用笔记(二)常用命令使用及常用模块简介

  目录一、常用命令使用二、双引号““单引号’’对执行结果的影响三、ansible-console工具四、ansible常用模块

  常用命令使用前面有提到过ansible的常用的命令和使用列出要执行主机ansibleall--list-hosts批量检测主机ansibleall-mping-kansible主机集合-m模块名称-a模块参数主机集合主机名或分组名,多个使用“逗号“分隔-m模块名称,默认mand模块-aor--args模块参数其它参数-iinventory文件路径,或可执行脚本-k使用交互式登陆密码-e定义变量-v显示详细信息

  双引号““单引号’’对执行结果的影响执行以下命令来查看ansible的执行结果shellansibleweb-mshell-a“echo${HOSTNAME}“ansibleweb-mshell-a’echo${HOSTNAME}’创建的文件在哪查看ansiblecache-mshell-a’cd/tmp’ansiblecache-mshell-a’touchtestfile’

  注:变量解析双引号““与单引号’’使用区别ansible执行命令是二次解析,第一次在本机解析,第二次在执行机器解析,需要第二次解析的变量要转移总结:参数默认使用’’号就对了

  创建的文件在哪里文件在用户家目录,ansible是使用ssh多次连接执行,连接退出以后之前的状态就全部失效了解决方法:使用chdir代替cd命令ansiblecache-mshell-a’chdir=/tmptouchtestfile’

  ansible-console工具是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端出来的终端上像shell一样使用ansible内置的各种命令,这为习惯使用shell交互方式的用户提供了良好的使用体验

  ansible常用模块.)ansible-doc和ping模块ansible-doc模块手册模块的手册相当于shell的man,很重要

  ping模块测试网络连通性,ping模块没有参数注:测试ssh连通性

  mand模块默认模块,远程执行命令用法

  mand模块注意事项:该模块通过-a跟上要执行的命令可以直接执行,若命令里有如下字符则执行不成功“《““》““|““&“mand模块不能解析系统变量该模块不启动shell直接在ssh进程中执行,所有使用到shell的命令执行都会失败

  shell模块shell模块用法基本和mand一样,区别是shell模块是通过/bin/sh进行执行命令,可以执行任意命令不能执行交互式的命令,例如vimtop等

  script模块命令太复杂?在本地写脚本,然后使用script模块指量执行ansibleweb-mscript-a’urscript’注意:该脚本包含但不限于shell脚本,只要指定sha-bang解释器的脚本都可运行

  案例:给所有web主机添加用户wk.要求by用户与wk用户不能出现在同一台主机上.设置wk用户的密码是

  yum模块使用yum包管理器来管理软件包name:要进行操作的软件包名字state:动作(installed安装、removed删除)

  service模块name:必须项,服务名称enabled:是否开机启动yes|nosleep:执行restarted,会在stop和start之间沉睡几秒钟state:对当时服务执行启动、停止、重启中、重新加载等操作(started,stopped,restarted,reloaded)案例:.给db组安装mariadb.开启mariadb服务并设置开机启动

  copy模块复制文件到远程主机src:复制本地文件到远程主机,绝对路径和相对路径都可以,路径为目录时会递归复制,若路径以“/“结尾,只复制目录里的内容,若不以“/“结尾,则复制包含目录在内的整个内容,类似于rsyncdest:必须项,远程主机的绝对路径,如果源文件是一个目录,那该路径必须是目录backup:覆盖前先备份原文件,备份文件包含时间信息,有两个选项:yes|noforce:若目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,设为no,则只有当目标主机的目标位置不存在该文件时才复制,默认为yes案例:拷到本机/etc/resolv.conf文件到所有拖管主机并对原文件备份给所有db主机开启binlog日志

  lineinfile模块replace模块类似sed的一种行替换模块path目标文件文件regexp正则表达式,要修改的行line最终修改的结果

  replace模块类似sed的一种行替换模块path目标文件文件regexp正则表达式,要修改的行replace替换后的结果

  lineinfile模块与replace模块区别lineinfile模块是修改某个文件的单行并进行替换replace模块是修改某个文件的所有匹配行并进行替换

  setup模块主要用于获取主机信息,playbooks里经常会用的另一个参数gather_facts与该模块相关,setup模块下经常用的是filter参数

  filter过滤所需信息

  执行以下命令可查看包含的所有信息,可大致浏览一遍,包含的信息,需要注意的是filter过滤条件必须以信息中模块名为过滤条件模块中详细信息不能为过滤条件

  ,jenkinssvn和jenkinssvnansible的区别在哪里

  在系统管理页面点击ManageandAssignRoles进入角色管理页面:、管理角色(ManageRoles选择该项可以创建全局角色、项目角色,并可以为角色分配权限。如上图,分别创建了admin、anonymous两个全局角色,OnlineProgram、test两个项目角色。项目角色与全局角色的区别就是,项目角色只能管理项目,没有管理jenkins的权限配置。添加项目角色时,需要制定匹配项目的模式,如上图中的Pattern,官方文档介绍该选项支持正则表达式,如“Roger-.”表示所有以Roger-开头的项目,“(?i)roger-.*”表示以roger-开头的项目并且不区分大小写,如以ABC开头的项目可以配置为“ABC|ABC.*”,也可以使用“abc|bcd|efg”直接匹配多个项目。、创建用户在分配角色之前需要先创建用户。在系统管理页面,点击管理用户:点击新建使用者可以创建新用户,如果之前有项目与scm版本管理系统(如svn、git等连接并获取源码构建过,jenkins会从svn中读取到一些用户信息,可以在查看用户菜单中看到这些用户:点击用户id或名称都可以修改用户信息。、分配角色(AssignRoles选择AssignRoles可以为用户分配所属角色,可以分配全局角色和项目角色。

  两大容器管理平台,Kuberes与OpenShift有什么区别

  容器化是开发和部署应用的热门趋势,因为它们是加速开发的有效方式。容器的使用量在过去几年呈指数增长。

  但是,跨基础架构管理容器可能会变得十分复杂,所以容器管理平台对于任何企业来说都是必不可少的工具。Kuberes和OpenShift是市场上最受欢迎的两个容器管理平台。而OpenShift是基于Kuberes的,那么二者之间到底有哪些区别呢?

  OpenShift是由红帽(RedHat开发的容器化软件解决方案。他们的主要产品是OpenShift容器平台,这是基于Kuberes管理的平台即服务(PaaS。它是用Go和AngularJS编写的,并且有Apache许可证。

  OpenShiftOrigin是红帽基于开源的云平台,允许开发人员构建,测试和部署云应用。该系统在Kuberes核心之上添加工具,以实现更快的应用开发,轻松部署和扩展。

  该平台除了可扩展外,还支持Go,Node.js,Ruby,Python,PHP,Perl和Java,允许用户添加对其他语言的支持。关于可扩展性,该平台可以自动或手动扩展容器化应用。

  OpenShift提供的一些功能包括:

  在整个应用程序生命周期中的安全性-安全性检查内置于容器堆栈中。

  平台上包含的内置监控功能是Prometheus,一种数据库和应用监控软件。你可以在Grafana仪表板上实时显示应用。

  集中式策略管理-跨集群的单个控制台为用户提供了实施策略的集中位置。

  兼容性-OpenShift是CertifiedKuberes计划的一部分,因此允许与Kuberes容器工作负载兼容。

  使用OpenShift的好处包括:

  快速的应用开发-平台流传输和自动化容器管理过程,从而增强了DevOps过程。应用开发的这种加速意味着你可以更快地进入市场,从而提高竞争力。

  没有供应商锁定提供与供应商无关的开源平台,这意味着用户可以根据需要将其容器流程迁移到新的操作系统,而无需重新进行容器化编排。

  自助服务配置-OpenShift允许用户集成他们最常使用的工具,例如,视频游戏开发人员在开发与多个操作系统兼容的游戏时可以使用此功能。

  Kuberes是一个开源容器即服务(CaaS编排系统,用于自动化容器化应用的部署,扩展和管理,从而改进应用程序开发过程。Kuberes的一些功能包括:

  Kuberes的好处包括:

  由于OpenShift基于Kuberes,因此它们有很多共同之处。但是,两个平台之间存在一些差异。让我们对OpenShift和Kuberes功能进行比较:

  虽然两者都基于Linux,但每个产品都在不同的环境中运行:

  Kuberes在其可运行的操作系统方面更加灵活。但是,包管理器应该是RPM,这意味着选择合适的Linux发行版。因此最好在Fedora,Ubuntu或Debian上运行它。Kuberes可以部署在任何主要的IaaS平台上,例如AWS,Azure,GCP、阿里云、IBM云平台等。

  OpenShift可以安装在RedHatEnterpriseLinux(RHEL和RedHatEnterpriseLinuxAtomicHost(RHELAH以及Fedora和CentOS上。OpenShiftDedicated允许在云中创建自己的集群,特别是基于AWS。

  这两种产品在Rollout方面都很复杂:

  Kuberes运行平台的多样性意味着有无数的解决方案可以在本地创建Kuberes集群。大多数都基于RancherKuberesEverywhere(RKE或kops等安装程序。

  OpenShift可避免在首次Rollout后需要额外的组件。因此,它配备了基于Ansible的专有安装程序,可以使用最少的配置参数安装OpenShift。

  与通过基于Web的用户界面管理集群的能力相比,OpenShift和Kuberes之间存在很大差异。

  Kuberes的仪表板必须单独安装,需要通过kube代理访问,以将本地机器的端口转发到集群的管理服务器。此外,它没有登录页面,但你需要手动创建承载令牌以提供身份验证和授权。所有这些复杂性导致WebUI对于真正的日常管理工作而言不是很有价值。

  OpenShift的Web控制台有一个登录页面,可以轻松访问,甚至可以让你通过表单创建和更改大多数资源。虽然你无法通过Web管理集群,但可以可视化服务器,项目和集群角色。

  关于集成图像注册表的两个系统之间的关键区别:

  使用Kuberes,可以设置自己的Docker注册表,但没有集成镜像注册表的概念。

  OpenShift附带了一个集成的镜像注册表,可以与DockerHub或RedHat一起使用。它甚至还有一个注册表控制台,可以在其中搜索与集群中项目相关的镜像和镜像流的信息。

  虽然Kuberes中不存在该概念,但可以部署自己的自定义Jenkins镜像。生成的组件是上传到镜像存储库的docker镜像。

  OpenShift使用Pipeline构建,这是一种源到镜像构建的形式,它引用包含Jenkins的镜像,而Jenkins又监控ImageStreamsTags。当需要更新时,它可以启动Jenkins构建。

  Kuberes没有本机网络解决方案,但提供可供第三方网络插件使用的接口。

  OpenShift有一个开箱即用的本机网络解决方案OpenvSwitch,它提供三种不同的插件。

  两者都是开源软件平台,来满足容器编排和应用开发。它们使得以简单易管理的方式部署和管理容器化应用成为可能。OpenShiftWeb控制台使其非常有用,允许直接通过它执行%以上的任务。

  虽然两者都有类似的核心(毕竟OpenShift内置了Kuberes,OpenShift通过其开箱即用的功能使安装更容易。安装Kuberes通常需要交钥匙解决方案或托管Kuberes集群。

  您选择的系统将取决于您的系统要求以及开发过程的关键灵活性或良好的Web界面。

  ansible.和.区别

  Ansible是一个简单强大且无代理的自动化语言。.是升级版本。Ansible是基于Python开发的,所以推荐Python.及以上版本。简单易读:基于YAML文本编写,易于阅读,非专业的开发人员也可以编写。功能强大:它可以同于管理配置,软件安装,流程自动化无代理:不需要在客户端安装额外的agent跨平台支持:支持linux,Windows,Unix和网络设备。Ansible典型的工作方式是通过一个脚本文件(基于YAML格式构建的去控制远端操作系统按照特定的顺序执行相关任务,我们称这个文件为playbook。

您可能感兴趣的文章:

相关文章