Last Updated on April 1, 2023 by cscontents
Introduction
In this article, we will discuss the automation of JBoss EAP installation using Ansible. There could be many ways through which you can automate the installation of JBoss EAP, but here we will try to achieve this using Ansible. And here we will install the JBoss EAP on a Linux (RHEL) machine.
Automation of any software installation is achievable if we know the steps to install it manually. So, if we know the manual steps to install JBoss EAP, then with the help of ansible we can achieve the automation.
JBoss EAP can be installed in multiple ways –
- ZIP installation (preferred) – installation binaries are in a ZIP file.
- Installer installation – installation is done from the JBoss EAP installer file
- RPM installation – using Red Hat Package Manager. This requires a subscription.
We will discuss the ZIP installation steps.
Before going through this article, it is highly recommended to look at the manual steps. In the below article, we have discussed a step-by-step guide to installing JBoss EAP manually.
How to install JBoss EAP – step-by-step guide
Prerequisite
You need to fulfill the below prerequisites to complete this tutorial.
Prerequisite Knowledge
- Knowledge of Ansible
- Knowledge of JBoss EAP
- Basic Linux commands.
If you want to learn Ansible basics then please check out the below course from KodeKloud which offers one of the best learning material in DevOps world.
Link of Training Course: Ansible for absolute beginners
Note: The above links are affiliate links, if you enroll this course using the above link, then it would help us to get some monetary benefit from KodeKloud. It won’t cost you anything.
Prerequisite Setup
Two Linux machines – one machine will work as an ansible-controller which should have ansible installed and another will work as a target machine where ansible will perform the task. This target machine can also be called a remote machine.
Below article can be followed to get an understanding and fulfill the above prerequisite.
Basics of automation using Ansible | Automate any task
Automation of JBoss EAP installation
We will automate the installation using Ansible, and we know ansible has a module for each task, we will use those modules.
Below are the modules which will be used in our ansible playbook –
To understand the below playbook, you need to have some idea about the above ansible modules.
Ansible Playbook to install JBoss EAP
- name: JBoss EAP installation hosts: jboss-host become: true tasks: - name: Download JBoss EAP binaries get_url: url: <repository URL where you stored JBoss EAP> url_username: user url_password: password dest: /opt - name: Unzip the downloaded ZIP file unarchive: src: /opt/jboss-eap-7.4.zip dest: /opt remote_arc: yes - name: Create JBoss EAP Group group: name: jboss-group system: yes state: present - name: Create JBoss EAP user user: name: jboss-user group: jboss-group password: pa$$w0rd home: /opt/jboss-eap-7.4 shell: "/bin/bash" - name: Change owner & group of JBoss EAP directory file: path: /opt/jboss-eap-7.4 owner: jboss-user group: jboss-group recurse: yes - name: Edit JBoss EAP configuration file lineinfile: state: present path: /opt/jboss-eap-7.4/bin/init.d/jboss-eap.conf regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: "^# JAVA_HOME=", line: 'JAVA_HOME="/opt/jdk-18.0.2.1"'} - {regexp: "^# JBOSS_HOME=", line: 'JBOSS_HOME="/opt/jboss-eap-7.4"'} - {regexp: "^# JBOSS_USER=", line: 'JBOSS_USER=jboss-user'} - name: Update /etc/profile with JBOSS_HOME variable lineinfile: path: /etc/profile state: present line: "{{ item }}" with_items: - 'export JBOSS_HOME="/opt/jboss-eap-7.4"' - 'export PATH=$PATH:$JBOSS_HOME/bin' - name: Configure JBoss EAP as a service command: chdir: /opt/jboss-eap-7.4 cmd: "{{item }}" with_items: - cp /opt/jboss-eap-7.4/bin/init.d/jboss-eap.conf /etc/default/ - cp /opt/jboss-eap-7.4/bin/init.d/jboss-eap-rhel.sh /etc/init.d/ - restorecon /etc/init.d/jboss-eap-rhel.sh - chkconfig --add jboss-eap-rhel.sh - name: Start JBoss EAP Service service: name: jboss-eap-rhel state: started enabled: yes
To execute the above playbook, we need to create an inventory file. Below is the content of the inventory.txt file.
jboss-host ansible_host=105.239.232.34 ansible_ssh_user=remote_ssh_user ansible_ssh_pass=remote_ssh_password
Once we have the installation playbook (e.g., jboss-install.yml) and inventory.txt file, we need to run the below command on the ansible host.
ansible-playbook jboss-install.yml -i inventory.txt --extra-vars "ansible_sudo_pass=sudoPassword" -vv
OR
ansible-playbook jboss-install.yml -i inventory.txt --ask-become-pass -vv
The above command will ask for the password, and we need to enter the password to become the root user in the target machine.
If we execute any of the above commands it will initiate the installation on the target machine.
Thank You.
If you are interested in learning DevOps, please have a look at the below articles, which will help you greatly.
- Kubernetes Series: Part 1 – Introduction to Kubernetes | Background of Kubernetes
- Kubernetes Series: Part 2 – Components of Kubernetes cluster | Kubernetes cluster in detail
- Kubernetes Series: Part 3 – What is Minikube and How to create a Kubernetes cluster (on Linux) using Minikube?
- Introduction to Ansible | High Level Understanding of Ansible
- Basics of automation using Ansible | Automate any task
- Automation of Java installation – using Ansible
- 10 frequently used ansible modules with example
- Jenkins Pipeline as code – High level information
- Jenkins pipeline script to build Java application and push artifacts into repository
- Jenkins pipeline script to build & deploy application on web server
- What is End-to-End Monitoring of any web application, and Why do we need it?
- What is “Monitoring” in DevOps? Why do we need to Monitor App/DB servers, Transactions etc.?
- DevOps Engineer or Software Developer Engineer which is better for you?- Let’s discuss
- How To Be A Good DevOps Engineer?
- How to do git push, git pull, git add, git commit etc. with Bitbucket