This guide provides an Ansible example for Oracle WebLogic installation with a dedicated OS user, silent installer response file, and a systemd unit for an existing domain.
It targets enterprise Linux deployments where Oracle media is already staged.
- name: Install Oracle WebLogic
hosts: oracle-weblogic
become: true
vars:
wls_user: oracle
wls_group: oinstall
wls_java_home: /usr/lib/jvm/java-17-openjdk
wls_mw_home: /opt/oracle/middleware
wls_oracle_home: /opt/oracle/middleware/Oracle_Home
wls_domain_home: /opt/oracle/middleware/user_projects/domains/base_domain
wls_installer_jar: /tmp/fmw_14.1.2.0.0_wls_lite_generic.jar
wls_rsp_file: /tmp/wls-install.rsp
wls_inst_loc: /etc/oraInst.loc
wls_service_name: weblogic-admin
tasks:
- name: Install runtime dependencies
dnf:
name:
- java-17-openjdk
- unzip
state: present
- name: Create WebLogic group
group:
name: "{{ wls_group }}"
state: present
- name: Create WebLogic user
user:
name: "{{ wls_user }}"
group: "{{ wls_group }}"
home: /home/oracle
shell: /usr/sbin/nologin
create_home: true
- name: Create WebLogic directories
file:
path: "{{ item }}"
state: directory
owner: "{{ wls_user }}"
group: "{{ wls_group }}"
mode: "0755"
loop:
- "{{ wls_mw_home }}"
- name: Assert installer jar exists
stat:
path: "{{ wls_installer_jar }}"
register: wls_installer_stat
- name: Fail when installer jar is missing
fail:
msg: "WebLogic installer not found at {{ wls_installer_jar }}. Stage Oracle media first."
when: not wls_installer_stat.stat.exists
- name: Create Oracle inventory pointer
copy:
dest: "{{ wls_inst_loc }}"
mode: "0644"
content: |
inventory_loc=/opt/oracle/oraInventory
inst_group={{ wls_group }}
- name: Create silent installer response file
copy:
dest: "{{ wls_rsp_file }}"
mode: "0600"
content: |
[ENGINE]
Response File Version=1.0.0.0.0
[GENERIC]
ORACLE_HOME={{ wls_oracle_home }}
INSTALL_TYPE=WebLogic Server
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=<SECURE_VALUE>
DECLINE_AUTO_UPDATES=true
- name: Run WebLogic silent installer
command: >
{{ wls_java_home }}/bin/java -jar {{ wls_installer_jar }}
-silent
-responseFile {{ wls_rsp_file }}
-invPtrLoc {{ wls_inst_loc }}
args:
creates: "{{ wls_oracle_home }}/wlserver/server/bin/startWebLogic.sh"
- name: Check admin server start script
stat:
path: "{{ wls_domain_home }}/startWebLogic.sh"
register: wls_domain_start
- name: Fail when domain is missing
fail:
msg: "Domain startup script missing at {{ wls_domain_home }}/startWebLogic.sh. Create domain first via Configuration Wizard or WLST."
when: not wls_domain_start.stat.exists
- name: Create WebLogic systemd unit
copy:
dest: "/etc/systemd/system/{{ wls_service_name }}.service"
mode: "0644"
content: |
[Unit]
Description=Oracle WebLogic AdminServer
After=network.target
[Service]
Type=simple
User={{ wls_user }}
Group={{ wls_group }}
WorkingDirectory={{ wls_domain_home }}
ExecStart={{ wls_domain_home }}/startWebLogic.sh
ExecStop={{ wls_domain_home }}/bin/stopWebLogic.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Reload systemd
systemd:
daemon_reload: true
- name: Enable and start application service
service:
name: "{{ wls_service_name }}"
state: started
enabled: true
Any questions?
Feel free to contact us. Find all contact information on our contact page.