Ansible如何自动更新和升级JBoss Web服务器

在前一篇文章中,使用Ansible自动部署Red Hat JBoss Web服务器,我讨论了如何使用Red Hat ansi ble Automation Platform完全自动化部署Red Hat JBoss Web Server。然而,这种初始安装和配置仅仅是开始。一旦Java服务器投入使用,就必须对其进行维护和更新。否则,严重的错误可能会影响其操作,或者安全漏洞可能会将其暴露给坏人。

幸运的是,我们可以利用Ansible和JWS集合来减轻这些担忧,使it部门能够通过自动化为您的部署打满补丁并升级服务器本身。在本文中,我们将详细介绍如何实现这种自动化。

注意:在开始本文中的步骤之前,使用我上一篇文章中描述的Ansible集合安装JBoss Web Server。

更新与升级
首先,让我们定义一下更新和提升。更新和升级JBoss Web服务器需要非常不同的过程和实现。

更新需要什么?
JBoss Web服务器的更新部署了一组由Red Hat通过Red Hat客户门户提供的小修补程序。Java服务器代码的这次更新修复了一个问题或解决了一个安全问题(或者两者都有)。这些修改被打包成一个存档(zip)文件,其布局与JBoss Web服务器目录结构相匹配。

要部署此更新,必须将归档文件解压缩到Java服务器根目录(通常称为TOMCAT_HOME)。一旦归档文件解压缩,您必须重新启动软件以确保正在运行的代码使用这些更改。

值得注意的是,更新只对服务器进行修复。没有功能(除非需要解决问题)或API更改。因此,更新只会增加JBoss Web服务器的次要版本号,而不会增加主要版本号。例如,JBoss Web Server 5.6.0的补丁可能会将其升级到5.6.4版,但不会升级到5.7.0版。

对较新的次要版本的更新很少需要对已部署的web应用程序进行修改,因为它们只会引入较小的更改。应定期检查更新并尽快应用更新,以减少服务器易受已知安全问题影响的时间。
升级需要什么?

升级是一项更复杂的操作。它带来了API变化和新功能。在生产中执行升级之前,JBoss web服务器托管的Web应用程序应使用最新版本进行测试,可能需要进行调整。记住JBoss Web服务器的升级代表主要版本的变化(即从5.5升级到5.6)也很重要。我们无法通过更新当前已安装软件的文件来实现这一改变。我们必须执行全新安装,并将配置和托管应用迁移到这个新实例。

在这种情况下,使用Ansible自动安装JBoss Web服务器带来了巨大的价值。用于设置服务器的相同工具组合可再次用于执行升级,确保软件在与之前相同的配置下运行,但进行了适当的升级。

注意:JBoss Web Server是稳定的软件,因此即使在主要版本之间进行更改也不太可能破坏向后兼容性。话虽如此,不太可能的并不等同于保证。在升级之前,您可能需要对服务器配置进行一些更改。在升级到生产环境之前,您应该在非生产环境中执行测试。

现在您已经知道了执行JBoss Web服务器安装的更新和升级需要什么,您已经准备好学习如何使用Ansible来完成这些任务。

使用Ansible自动更新JBoss Web服务器
让我们考虑以下场景:

红帽提供了一个新的更新。此更新包含一个安全问题修复程序,必须部署在JBoss Web服务器的所有实例上。这些实例已经使用JWS Ansible集合进行了设置,并作为systemd服务运行。每个都配备了一些web应用程序。如果需要,您可以随时重新启动它。

对于本文,我们将从以下行动手册开始(与我们在上一篇文章中收集的非常相似):

---
- name: "Red Hat JBoss Web Server installation and configuration"
  hosts: all
  become: true
  vars:
    jws_setup: true
    jboss_web_version: '5.5'
    jws_home: "/opt/jws-{{ jboss_web_version }}/tomcat/"
    jws_install_method: local_zipfiles
    jws_install_dir: /opt
    jws_zipfile: "jws-{{ jboss_web_version }}.0-application-server.zip"
    jws_java_version: 1.8.0
    jws_listen_http_bind_address: 127.0.0.1
    jws_systemd_enabled: True
    jws_service_name: jws
  collections:
    - redhat.jws
  tasks:
    - ansible.builtin.include_role:
        name: jws

上面的剧本采用了Ansible Automation Hub上redhat提供的redhat.jws集合。但是,您可以将本文的内容用于Ansible Galaxy上提供的middleware_automation.jws的上游版本。

Ansible的JWS集合提供了一个漂亮的角色来帮助应用更新。我们只需要向它提供更新存档的路径,它就会解压缩文件并重新启动JBoss Web服务器:

...
  post_tasks:
    - ansible.builtin.include_role:
        name: jws
        tasks_from: apply_cp.yml
      when:
        - jws_patch_bundle is defined 
...

添加一个变量,指定更新文件在控制主机上的位置,以运行行动手册并执行更新:

$ ansible-playbook -e jws_patch_bundle=jws-5.5.1-application-server.zip -i inventory playbook.yml

我们可以通过检查文件中的JBoss Web服务器版本来验证服务器确实已经更新:

# cat /opt/jws-5.6/version.txt | grep SP
Red Hat JBoss Web Server - Version 5.5 SP1

不用说,当下一个更新发布时,它将需要最小的努力。剩下的工作就是更新更新后的归档文件的路径,并重新运行相同的剧本。

使用Ansible自动升级JBoss Web服务器
现在我们已经完全自动化了JBoss Web服务器更新,让我们考虑另一个场景:

我们的JBoss Web服务器在生产中仍然运行5.4版本。应用程序团队已与运营团队一起批准升级到5.5.x版本,因为不需要对web应用程序进行任何更改来适应升级。剩下的工作就是完全自动化升级过程,以便Ansible可以在所有服务器上同时执行升级。

要安装新版本,请使用正确的JBoss Web服务器版本运行以前的行动手册。

$ ansible-playbook -i inventory -e  jboss_web_version='5.6' playbook.yml

一旦Ansible完成执行,新的JWS服务器将使用与上一版本(5.5)相同的配置启动(5.6),并且服务器将部署相同的web应用程序。

这就是自动化的美妙之处。在上一篇文章中,当我们自动安装JBoss Web服务器时,所有繁重的工作都已经完成了。现在,我们可以简单地重用这项工作来轻松设置升级的服务器版本。使用Ansible升级JBoss Web服务器配置是微不足道的,因为我们完全自动化了部署(尽管升级场景比更新更复杂)。

自动化和自动化的优势
通过使用Ansible完全自动化JBoss Web服务器的安装,我们使新实例的部署变得简单、可重复且高效。我们现在可以轻松地维护这些系统,使它们保持最新。我们甚至可以执行自动升级,通过利用更多JWS集合功能来确保配置与之前的安装保持同步。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值