根据我们查询的几个来源,世界上超过33%的web服务器运行Apache Tomcat,而其他来源显示有48%的应用服务器运行Apache Tomcat。这些年来,其中一些实例已经被容器化了,但许多实例仍然运行在传统的Linux虚拟机设置中。
红帽JBoss网络服务器(JWS)结合了web服务器(Apache HTTPD)、servlet引擎(Apache Tomcat)和负载平衡模块(mod_jk和mod_cluster)。Ansible是一个自动化引擎,提供了一套用于大规模管理企业的工具。在本文中,我们将通过使用Ansible在一个红帽企业版Linux 8服务器。
A 以前的文章讨论了这个主题,但是现在您可以将Red Hat认证的内容集合用于JBoss Web服务器,该内容集合自5.7发布.
在本文中,您将通过以下任务自动化JBoss Web服务器部署:
从存储库中检索包含JBoss Web服务器的归档文件,并在系统上安装文件。
配置Red Hat Enterprise Linux操作系统,创建用户、组和所需的安装文件,以将JBoss Web Server作为systemd服务启用。
微调JBoss Web Server服务器的配置,例如将其绑定到适当的接口和端口。
部署web应用程序并启动systemd服务。
执行运行状况检查以确保部署的应用程序可访问。
Ansible完全自动化所有这些操作,因此不需要手动步骤。
准备目标环境
在开始自动化之前,您需要指定您的目标环境。在这种情况下,您将使用Red Hat Enterprise Linux 8和计算机编程语言3.6.您将在Ansible控制节点(执行Ansible的地方)和Ansible目标(正在配置的系统)上使用此设置。
在控制节点上,确认以下要求:
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.7 (Ootpa)
$ ansible --version
ansible [core 2.13.3]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.9/site-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.9.13 (main, Nov 9 2022, 13:16:24) [GCC 8.5.0 20210514 (Red Hat 8.5.0-15)]
jinja version = 3.1.2
libyaml = True
注意:如果您使用不同的Python版本或目标操作系统,本文中的过程可能无法成功执行。
安装Red Hat Ansible认证内容集合
一旦您设置好Red Hat Enterprise Linux 8并准备好Ansible,您需要安装Red Hat JBoss Web服务器的Red Hat Ansible认证内容集合1.2。Ansible使用该集合在JBoss Web服务器上执行以下任务:
确保安装了所需的系统依赖项(例如解压缩)。
安装Java 语言(一种计算机语言,尤用于创建网站)(如果它丢失并被请求)。
安装web服务器二进制文件并将软件集成到系统中(设置用户、组等)。).
部署配置文件。
启动并启用JBoss Web服务器作为系统d服务。
要安装JBoss Web服务器的认证集合,您必须将Ansible配置为使用Red Hat Automation Hub作为银河服务器。跟随自动化中枢说明检索您的令牌并更新项目目录中的ansible.cfg配置文件。使用从Automation Hub获取的令牌更新该字段:
[galaxy]
server_list = automation_hub, galaxy
[galaxy_server.galaxy]
url=https://galaxy.ansible.com/
[galaxy_server.automation_hub]
url=https://cloud.redhat.com/api/automation-hub/api/galaxy/
auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
token=<your-token>
安装认证集合:
$ ansible-galaxy collection install redhat.jws
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Downloading https://console.redhat.com/api/automation-hub/v3/plugin/ansible/content/published/collections/artifacts/redhat-jws-1.2.2.tar.gz to /root/.ansible/tmp/ansible-local-475cum49011/tmptmiuep63/redhat-jws-1.2.2-299_snr4
Installing 'redhat.jws:1.2.2' to '/root/.ansible/collections/ansible_collections/redhat/jws'
Downloading https://console.redhat.com/api/automation-hub/v3/plugin/ansible/content/published/collections/artifacts/redhat-redhat_csp_download-1.2.2.tar.gz to /root/.ansible/tmp/ansible-local-475cum49011/tmptmiuep63/redhat-redhat_csp_download-1.2.2-tb4zjzut
redhat.jws:1.2.2 was installed successfully
Installing 'redhat.redhat_csp_download:1.2.2' to '/root/.ansible/collections/ansible_collections/redhat/redhat_csp_download'
redhat.redhat_csp_download:1.2.2 was installed successfully
Ansible Galaxy获取并下载集合的依赖项。这些依赖关系包括redhat_csp_download集合,它有助于从redhat客户门户或指定的本地或远程位置检索包含JBoss Web Server服务器的归档文件。有关此步骤的更多信息,请参考红帽的官方文档.
安装Red Hat JBoss Web服务器
本节中的配置步骤包括下载JBoss Web服务器、安装Java和启用JBoss Web服务器作为系统服务(systemd)。
下载档案
首先,您需要从Red Hat客户门户。默认情况下,集合希望归档文件位于Ansible项目的根文件夹中。剩下的唯一要求是指定行动手册中使用的JBoss Web服务器的版本(5.7)。基于此信息,集合确定归档文件的路径和全名。
因此,更新的值jws_version在jws-article.yml行动手册中:
---
- name: "Red Hat JBoss Web Server installation and configuration"
hosts: all
vars:
jws_setup: True
jws_version: 5.7.0
jws_home: /opt/jws-5.7/tomcat
…
安装Java
JBoss Web服务器是基于Java的服务器,因此目标系统必须安装Java虚拟机(JVM)。尽管Ansible原语可以本机执行此类任务,但redhat.jws集合也可以完成此任务,前提是jws_java_version变量定义为:
jws_home: /opt/jws-5.7/tomcat
jws_java_version: 1.8.0
…
注意:仅当目标系统的发行版属于Red Hat系列时,此功能才有效。
将JBoss Web服务器作为系统服务启用(systemd)
目标系统上的JBoss Web Server服务器应该作为服务系统运行。集合也可以完成这项任务,如果jws_systemd_enabled变量被定义为真:
jws_java_version: 1.8.0
jws_systemd_enabled: True
jws_service_name: jws
注意:此配置仅在以下情况下有效systemd已安装,并且系统属于红帽家族.
现在您已经定义了部署JBoss Web服务器所需的所有变量,请完成行动手册:
...
jws_service_name: jws
collections:
- redhat.jws
roles:
- role: jws
运行行动手册
运行行动手册,看看它是否如预期那样工作:
$ ansible-playbook -i inventory jws-article.yml
PLAY [Red Hat JBoss Web Server installation and configuration] *******************************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [redhat.jws.jws : Validating arguments against arg spec 'main'] *************************************************************************************************************************************************************************
ok: [localhost]
TASK [redhat.jws.jws : Set default values] ***************************************************************************************************************************************************************************************************
skipping: [localhost]
TASK [redhat.jws.jws : Set default values (jws)] *********************************************************************************************************************************************************************************************
ok: [localhost]
TASK [redhat.jws.jws : Set jws_home to /opt/jws-5.7/tomcat if not already defined] ***********************************************************************************************************************************************************
skipping: [localhost]
TASK [redhat.jws.jws : Check that jws_home has been defined.] ********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "All assertions passed"
}
TASK [redhat.jws.jws : Install required dependencies] ****************************************************************************************************************************************************************************************
included: /root/.ansible/collections/ansible_collections/redhat/jws/roles/jws/tasks/fastpackage.yml for localhost => (item=zip)
included: /root/.ansible/collections/ansible_collections/redhat/jws/roles/jws/tasks/fastpackage.yml for localhost => (item=unzip)
TASK [redhat.jws.jws : Check arguments] ******************************************************************************************************************************************************************************************************
ok: [localhost]
…
TASK [redhat.jws.jws : Remove apps] **********************************************************************************************************************************************************************************************************
changed: [localhost] => (item=ROOT)
ok: [localhost] => (item=examples)
TASK [redhat.jws.jws : Create vault configuration (if enabled)] ******************************************************************************************************************************************************************************
skipping: [localhost]
RUNNING HANDLER [redhat.jws.jws : Reload Systemd] ********************************************************************************************************************************************************************************************
ok: [localhost]
RUNNING HANDLER [redhat.jws.jws : Ensure Jboss Web Server runs under systemd] ****************************************************************************************************************************************************************
included: /root/.ansible/collections/ansible_collections/redhat/jws/roles/jws/tasks/systemd/service.yml for localhost
RUNNING HANDLER [redhat.jws.jws : Check arguments] *******************************************************************************************************************************************************************************************
ok: [localhost]
RUNNING HANDLER [redhat.jws.jws : Enable jws.service] ****************************************************************************************************************************************************************************************
changed: [localhost]
RUNNING HANDLER [redhat.jws.jws : Start jws.service] *****************************************************************************************************************************************************************************************
changed: [localhost]
RUNNING HANDLER [redhat.jws.jws : Restart Jboss Web Server service] **************************************************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
localhost : ok=64 changed=15 unreachable=0 failed=0 skipped=19 rescued=2 ignored=0
如你所见,在执行过程中发生了很多事情。事实上,redhat.jws角色负责整个设置:
部署基本配置
删除未使用的应用程序
启动web服务器
部署Web应用程序
现在JBoss Web服务器正在运行,修改行动手册以促进Web应用程序的部署:
roles:
- role: jws
tasks:
- name: " Checks that server is running"
ansible.builtin.uri:
url: "http://localhost:8080/"
status_code: 404
return_content: no
- name: "Deploy demo webapp"
ansible.builtin.get_url:
url: 'https://people.redhat.com/~rpelisse/info-1.0.war'
dest: "{{ jws_home }}/webapps/info.war"
notify:
- "Restart Jboss Web Server service"
该配置使用处理者由redhat.jws集合提供,以确保下载应用程序后JBoss Web服务器会重新启动。
自动化节省了时间并减少了出错的机会
Red Hat Ansible认证内容集合尽可能多地封装了Red Hat JBoss Web服务器部署的复杂性和内部工作方式。在集合的帮助下,您可以专注于您的业务用例,例如部署应用程序,而不是建立底层应用程序服务器。结果是降低了复杂性并加快了价值实现。自动化过程也是可重复的,可以根据需要设置任意多的系统。