Skip to content

Commit 984b62b

Browse files
committed
ORDS: new experimental role to install and configure ORDS on OracleLinux
1 parent d37123e commit 984b62b

File tree

10 files changed

+439
-0
lines changed

10 files changed

+439
-0
lines changed

changelogs/fragments/ords.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
major_changes:
3+
- "ORDS: new experimental role to install and configure ORDS on OracleLinux (oravirt#473)"

playbooks/manage_ords.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: Install and Configure Oracle Rest Data Services
3+
hosts: "{{ hostgroup | default('all') }}"
4+
any_errors_fatal: true
5+
roles:
6+
- opitzconsulting.ansible_oracle.oraords

roles/oraords/.ansibledoctor.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
logging:
3+
level: warning
4+
template: readme
5+
force_overwrite: true
6+
exclude_tags:
7+
- always
8+
- never

roles/oraords/README.md

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# oraords
2+
3+
Install ORDS on Oracle Linux.
4+
5+
Defaults:
6+
7+
ORACLE_HOME: {{ oracle_base }}/product/ords
8+
9+
This role is limited to Oracle Linux, due to installation
10+
from yum Repository from Oracle.
11+
12+
## Table of content
13+
14+
- [Requirements](#requirements)
15+
- [Default Variables](#default-variables)
16+
- [oraords_apex_image_path](#oraords_apex_image_path)
17+
- [oraords_db_pools](#oraords_db_pools)
18+
- [oraords_default_admin_user](#oraords_default_admin_user)
19+
- [oraords_default_port](#oraords_default_port)
20+
- [oraords_java_rpm](#oraords_java_rpm)
21+
- [oraords_oracle_home](#oraords_oracle_home)
22+
- [oraords_ords_bin](#oraords_ords_bin)
23+
- [oraords_ords_config](#oraords_ords_config)
24+
- [oraords_ords_logs](#oraords_ords_logs)
25+
- [ords_config](#ords_config)
26+
- [Discovered Tags](#discovered-tags)
27+
- [Dependencies](#dependencies)
28+
- [License](#license)
29+
- [Author](#author)
30+
31+
---
32+
33+
## Requirements
34+
35+
- Minimum Ansible version: `2.14.0`
36+
37+
## Default Variables
38+
39+
### oraords_apex_image_path
40+
41+
Directory for APEX Images on ORDS Host.
42+
43+
### oraords_db_pools
44+
45+
List of configured target in ORDS.
46+
47+
Attributes:
48+
49+
db_pool: <Pool in ORDS>
50+
51+
pdb_name: <Target PDB. Needed to find the Password s>
52+
53+
port: <Listener Port>
54+
55+
service: <servicename of target. Defaults to pdb_name>
56+
57+
hostname: <Hostname for target. Defaults to `inventory_hostname`>
58+
59+
#### Default value
60+
61+
```YAML
62+
oraords_db_pools:
63+
- db_pool: default
64+
pdb_name: orclpdb
65+
admin_user: sys
66+
service: orclpdb
67+
port: 1521
68+
```
69+
70+
### oraords_default_admin_user
71+
72+
#### Default value
73+
74+
```YAML
75+
oraords_default_admin_user: sys
76+
```
77+
78+
### oraords_default_port
79+
80+
#### Default value
81+
82+
```YAML
83+
oraords_default_port: 1521
84+
```
85+
86+
### oraords_java_rpm
87+
88+
#### Default value
89+
90+
```YAML
91+
oraords_java_rpm: java-21-openjdk
92+
```
93+
94+
### oraords_oracle_home
95+
96+
`ORACLE_HOME` for _ORDS_.
97+
98+
#### Default value
99+
100+
```YAML
101+
oraords_oracle_home: >-
102+
{{ oracle_base }}/product/ords
103+
```
104+
105+
### oraords_ords_bin
106+
107+
#### Default value
108+
109+
```YAML
110+
oraords_ords_bin: >-
111+
/usr/local/bin
112+
```
113+
114+
### oraords_ords_config
115+
116+
#### Default value
117+
118+
```YAML
119+
oraords_ords_config: >-
120+
/etc/ords/config
121+
```
122+
123+
### oraords_ords_logs
124+
125+
#### Default value
126+
127+
```YAML
128+
oraords_ords_logs: >-
129+
/etc/ords/logs
130+
```
131+
132+
### ords_config
133+
134+
APEX context path for Images.
135+
136+
## Discovered Tags
137+
138+
**_ords_config_**
139+
140+
141+
## Dependencies
142+
143+
- orahost_meta
144+
- orasw_meta
145+
146+
## License
147+
148+
license (MIT)
149+
150+
## Author
151+
152+
Thorsten Bruhns

roles/oraords/defaults/main.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
# @var oraords_oracle_home:description: >
3+
# `ORACLE_HOME` for _ORDS_.
4+
# @end
5+
oraords_oracle_home: >-
6+
{{ oracle_base }}/product/ords
7+
8+
# @var ords_config:description: >
9+
# ORDS configuration directory.
10+
# @end
11+
oraords_ords_config: >-
12+
/etc/ords/config
13+
14+
# @var ords_config:description: >
15+
# ORDS logging directory.
16+
# @end
17+
oraords_ords_logs: >-
18+
/etc/ords/logs
19+
20+
oraords_java_rpm: java-21-openjdk
21+
22+
# @var ords_config:description: >
23+
# PATH for ords binary
24+
# @end
25+
oraords_ords_bin: >-
26+
/usr/local/bin
27+
28+
# oraords_apex_admin_password:
29+
30+
# default admin_user when no user is set in oraords_db_pools
31+
oraords_default_admin_user: sys
32+
oraords_default_port: 1521
33+
34+
# @var oraords_apex_image_path:description: >
35+
# Directory for APEX Images on ORDS Host.
36+
#
37+
# @end
38+
# oraords_apex_image_path:
39+
40+
# @var ords_config:description: >
41+
# APEX context path for Images.
42+
# @end
43+
# oraords_apex_image_context:
44+
45+
# @var oraords_db_pools:description: >
46+
# List of configured target in ORDS.
47+
#
48+
# Attributes:
49+
#
50+
# db_pool: <Pool in ORDS>
51+
#
52+
# pdb_name: <Target PDB. Needed to find the Password s>
53+
#
54+
# port: <Listener Port>
55+
#
56+
# service: <servicename of target. Defaults to pdb_name>
57+
#
58+
# hostname: <Hostname for target. Defaults to `inventory_hostname`>
59+
# @end
60+
oraords_db_pools:
61+
- db_pool: default
62+
pdb_name: orclpdb
63+
admin_user: sys
64+
service: orclpdb
65+
port: 1521
66+
# hostname:

roles/oraords/meta/main.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
# @meta description: >
3+
# Install ORDS on Oracle Linux.
4+
#
5+
# Defaults:
6+
#
7+
# ORACLE_HOME: {{ oracle_base }}/product/ords
8+
#
9+
# This role is limited to Oracle Linux, due to installation
10+
# from yum Repository from Oracle.
11+
#
12+
# @end
13+
# @meta author: Thorsten Bruhns
14+
galaxy_info:
15+
role_name: oraswords_install
16+
author: Thorsten Bruhns
17+
description: Install ORDS on Oracle Linux.
18+
company: Thorsten Bruhns
19+
license: license (MIT)
20+
21+
min_ansible_version: 2.14.0
22+
23+
platforms:
24+
- name: EL
25+
versions:
26+
- "7"
27+
- "8"
28+
29+
galaxy_tags: []
30+
31+
dependencies:
32+
- role: orahost_meta
33+
- role: orasw_meta

roles/oraords/tasks/assert.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
- name: assert | Assert OS
3+
ansible.builtin.assert:
4+
that:
5+
- ansible_distribution == 'OracleLinux'
6+
- ansible_distribution_major_version is version('8', '>=')
7+
fail_msg: >-
8+
Installation of ORDS is limited to Oracle Linux 8 and 9 at the moment.
9+
10+
- name: assert | Check for existing APEX Images when oraords_apex_image_path is defined
11+
when:
12+
- oraords_apex_image_path | default('') | length > 0
13+
block:
14+
- name: assert | Check for existing APEX Images
15+
ansible.builtin.stat:
16+
path: "{{ oraords_apex_image_path }}/css/apex.css"
17+
register: _oraords_apex_images_dir
18+
19+
- name: assert | Assert for existing APEX Images
20+
ansible.builtin.assert:
21+
quiet: true
22+
that:
23+
- _oraords_apex_images_dir.stat.exists
24+
fail_msg: >-
25+
Missing APEX Images in {{ oraords_apex_image_path }}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
---
2+
- name: loop_configure_ords | Assert
3+
ansible.builtin.assert:
4+
quiet: true
5+
that:
6+
- oraords_db_pools_password[_loop_pool.db_pool]['admin_password'] is defined
7+
- oraords_db_pools_password[_loop_pool.db_pool]['ords_password'] is defined
8+
9+
- name: loop_configure_ords | Defaults
10+
tags:
11+
- ords_config
12+
environment:
13+
ADMIN_USER: "{{ _loop_pool.admin_user | default(oraords_admin_user) }}"
14+
ADMIN_PASSWORD: "{{ oraords_db_pools_password[_loop_pool.db_pool]['admin_password'] }}"
15+
ORDS_PASSWORD: "{{ oraords_db_pools_password[_loop_pool.db_pool]['ords_password'] }}"
16+
APEX_IMAGE_PATH: "{{ oraords_apex_image_path | default('') }}"
17+
APEX_IMAGE_CONTEXT: "{{ oraords_apex_image_context | default('') }}"
18+
DB_POOL: "{{ _loop_pool.db_pool }}"
19+
block:
20+
- name: loop_configure_ords | | DB setup
21+
ansible.builtin.shell: # noqa: no-changed-when
22+
chdir: /tmp
23+
cmd: |
24+
/usr/bin/env bash
25+
set -eu
26+
set -o pipefail
27+
28+
echo "config: {{ oraords_ords_config }}"
29+
echo "log: {{ oraords_ords_logs }}"
30+
echo "admin-user: ${ADMIN_USER}"
31+
echo "db-pool: ${DB_POOL}"
32+
echo "db-hostname: {{ _loop_pool.host }}"
33+
echo "db-port: {{ _loop_pool.port | default(oraords_default_port) }}"
34+
echo "db-servicename: {{ _loop_pool.service | mandatory }}"
35+
echo "APEX_IMAGE_PATH: ${APEX_IMAGE_PATH}"
36+
echo "APEX_IMAGE_CONTEXT: ${APEX_IMAGE_CONTEXT}"
37+
38+
if [ ${DB_POOL} = 'default' ] ; then
39+
DB_POOL_PARAM=""
40+
else
41+
DB_POOL_PARAM="${DB_POOL}"
42+
fi
43+
44+
{{ oraords_ords_bin }}/ords \
45+
--config {{ oraords_ords_config }} \
46+
--verbose \
47+
install \
48+
--log-folder {{ oraords_ords_logs }} \
49+
${DB_POOL_PARAM} \
50+
--admin-user "${ADMIN_USER}" \
51+
--db-hostname "{{ _loop_pool.host | mandatory }}" \
52+
--db-port {{ _loop_pool.port | default(oraords_default_port) }} \
53+
--db-servicename {{ _loop_pool.service | mandatory }} \
54+
--feature-db-api {{ _loop_pool.feature_db_api | default(false) | ternary('true', 'false') }} \
55+
--feature-rest-enabled-sql {{ _loop_pool.feature_rest_enabled_sql | default(false) | ternary('true', 'false') }} \
56+
--feature-sdw {{ _loop_pool.feature_sdw | default('false') | ternary('true', 'false') }} \
57+
--proxy-user \
58+
--password-stdin <<EOF
59+
${ADMIN_PASSWORD}
60+
${ORDS_PASSWORD}
61+
EOF
62+
63+
if [ -n "${APEX_IMAGE_CONTEXT}" ] ; then
64+
echo ""
65+
echo "Change APEX Image context: ${APEX_IMAGE_CONTEXT}"
66+
{{ oraords_ords_bin }}/ords \
67+
--config {{ oraords_ords_config }} \
68+
config set standalone.static.context.path "${APEX_IMAGE_CONTEXT}"
69+
fi
70+
71+
if [ -n "${APEX_IMAGE_PATH}" ] ; then
72+
echo ""
73+
echo "Change APEX Image path: ${APEX_IMAGE_PATH}"
74+
{{ oraords_ords_bin }}/ords \
75+
--config {{ oraords_ords_config }} \
76+
config set standalone.static.path "${APEX_IMAGE_PATH}"
77+
fi
78+
79+
register: ords_config1_res
80+
81+
- name: loop_configure_ords | Reload ORDS Service
82+
ansible.builtin.service:
83+
name: ords
84+
state: reloaded
85+
86+
rescue:
87+
- name: loop_configure_ords | ORDS configuration failed
88+
ansible.builtin.fail:
89+
90+
always:
91+
- name: loop_configure_ords | ords Output
92+
ansible.builtin.debug:
93+
var: ords_config1_res.stdout_lines
94+
when:
95+
- ords_config1_res.stdout_lines is defined

0 commit comments

Comments
 (0)