Skip to content

Commit 98fb624

Browse files
committed
oradb_manage_db: Configure sqlnet.ora, listener.ora and tnsnames.ora wirh playbook manage_sqlnet.yml
1 parent 84cea78 commit 98fb624

File tree

16 files changed

+289
-190
lines changed

16 files changed

+289
-190
lines changed

changelogs/fragments/sqlnet.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
minor_changes:
3+
- "oradb_manage_db: Configure sqlnet.ora, listener.ora and tnsnames.ora wirh playbook manage_sqlnet.yml (oravirt#475)"
4+
- "galaxy: added new collection as dependency for RAC/Restart listener configuration (oravirt#475)"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
- name: SQLNet Configuration (sqlnet.ora, listener.ora, tnsnames.ora)
3+
hosts: "{{ hostgroup | default('all') }}"
4+
any_errors_fatal: true
5+
tasks:
6+
- name: Configure tnsnames.ora
7+
ansible.builtin.import_role:
8+
name: opitzconsulting.ansible_oracle.oradb_manage_db
9+
tasks_from: configure_tnsnames.yml
10+
11+
- name: Configure sqlnet.ora
12+
ansible.builtin.import_role:
13+
name: opitzconsulting.ansible_oracle.oradb_manage_db
14+
tasks_from: configure_sqlnet.yml
15+
16+
- name: Configure listener.ora
17+
ansible.builtin.import_role:
18+
name: opitzconsulting.ansible_oracle.oradb_manage_db
19+
tasks_from: configure_listener.yml

galaxy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ dependencies:
2121
ansible.posix: '1.5.4'
2222
ansible.utils: '5.1.0'
2323
devsec.hardening: '>=8.6.0,<9.0.0'
24+
ibre5041.ansible_oracle_modules: '3.2.3'

playbooks/manage_sqlnet.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
- name: SQLNet Configuration (sqlnet.ora, listener.ora, tnsnames.ora)
3+
hosts: "{{ hostgroup | default('all') }}"
4+
any_errors_fatal: true
5+
tasks:
6+
- name: Configure tnsnames.ora
7+
ansible.builtin.import_role:
8+
name: opitzconsulting.ansible_oracle.oradb_manage_db
9+
tasks_from: configure_tnsnames.yml
10+
11+
- name: Configure sqlnet.ora
12+
ansible.builtin.import_role:
13+
name: opitzconsulting.ansible_oracle.oradb_manage_db
14+
tasks_from: configure_sqlnet.yml
15+
16+
- name: Configure listener.ora
17+
ansible.builtin.import_role:
18+
name: opitzconsulting.ansible_oracle.oradb_manage_db
19+
tasks_from: configure_listener.yml
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
# Taskfile to configure listener.ora only
3+
- name: configure_listener | include listener_details.yml
4+
ansible.builtin.include_tasks: loop_listener_details.yml
5+
with_items:
6+
- "{{ listener_installed }}"
7+
loop_control:
8+
loop_var: lsnrinst
9+
when:
10+
- listener_installed is defined
11+
tags:
12+
- listener
13+
- listener2
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
# Taskfile to configure sqlnet.ora only
3+
- name: sqlnet | include sqlnet.yml
4+
ansible.builtin.include_tasks: loop_sqlnet.yml
5+
with_items:
6+
- "{{ sqlnet_installed }}"
7+
loop_control:
8+
loop_var: sqlnetinst
9+
when:
10+
- sqlnet_installed is defined
11+
tags: sqlnet2
12+
vars:
13+
_sqlnet_ansible_file: "{{ _oradb_manage_db_tns_home }}/network/admin/sqlnet_ansible.ora"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
# Taskfile to configure tnsnames.ora only
3+
- name: tnsnames | include tnsnames.yml
4+
ansible.builtin.include_tasks: loop_tnsnames.yml
5+
with_items:
6+
- "{{ tnsnames_installed }}"
7+
loop_control:
8+
loop_var: tnsinst
9+
when:
10+
- tnsnames_installed is defined
11+
tags: tnsnames2

roles/oradb_manage_db/tasks/listener_details.yml

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
- name: listener | loop data
3+
ansible.builtin.debug:
4+
msg:
5+
- "ORACLE_HOME {{ _oradb_manage_db_listener_home }}"
6+
- "Listener Name {{ lsnrinst.listener_name }}"
7+
- "os-user {{ _oradb_manage_db_listener_oracle_user }}"
8+
tags:
9+
- listener
10+
- listener2
11+
12+
- name: listener | block
13+
become: true
14+
become_user: "{{ _oradb_manage_db_listener_oracle_user }}"
15+
tags:
16+
- listener
17+
- listener2
18+
block:
19+
20+
- name: listener | create custom configuration in listener.ora
21+
ansible.builtin.blockinfile:
22+
path: "{{ _oradb_manage_db_listener_home }}/network/admin/listener.ora"
23+
backup: true
24+
create: true
25+
mode: "0644"
26+
state: present
27+
insertafter: "EOF"
28+
marker: "# {mark} Ansible managed for {{ lsnrinst.listener_name }}"
29+
block: "{{ lookup('template', 'listener_details.j2') }}"
30+
31+
# Don't try to stop the listener at this point
32+
# => Restart of role will fail at create/manage database due to TNS-12514
33+
# Only executed when on Single-Instance!
34+
- name: listener | Start/Reload Listener # noqa no-changed-when
35+
ansible.builtin.shell: |
36+
#!/usr/bin/env bash
37+
set -eu
38+
set -o pipefail
39+
LSNRCTL="${ORACLE_HOME}/bin/lsnrctl"
40+
41+
if "${LSNRCTL}" status {{ lsnrinst.listener_name }} 2>/dev/null ; then
42+
# Reload running listener
43+
"${LSNRCTL}" reload {{ lsnrinst.listener_name }} > /dev/null
44+
else
45+
# Start listener
46+
"${LSNRCTL}" start {{ lsnrinst.listener_name }} > /dev/null
47+
fi
48+
environment: "{{ oracle_env_lsnrctl }}"
49+
when:
50+
- oracle_install_option_gi == ''
51+
tags:
52+
- molecule-idempotence-notest
53+
54+
- name: listener | Register listener with srvctl
55+
ibre5041.ansible_oracle_modules.oracle_crs_listener:
56+
name: "{{ lsnrinst.listener_name }}"
57+
endpoints: >-
58+
{{ _oradb_manage_db_endpoints['protocol'] | default('TCP') }}:{{ _oradb_manage_db_endpoints['port'] | default('1521') }}
59+
enabled: true
60+
environment:
61+
ORACLE_BASE: "{{ grid_base }}"
62+
vars:
63+
_oradb_manage_db_endpoints: >-
64+
{{ oracle_listeners_config[lsnrinst.listener_name]['address'][0] | default({}) }}
65+
when:
66+
- oracle_install_option_gi in ('CRS_CONFIG', 'HA_CONFIG')
67+
- _orasw_meta_primary_node | default(true) | bool
68+
- oracle_listeners_config[lsnrinst.listener_name]['listener_type'] | default('NORMAL') == 'NORMAL'
69+
tags:
70+
- listener
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
- name: loop_sqlnet | loop data
3+
ansible.builtin.debug:
4+
msg:
5+
- "ORACLE_BASE_HOME {{ _oradb_manage_db_listener_home }}"
6+
- "os-user {{ _oradb_manage_db_listener_oracle_user }}"
7+
tags:
8+
- sqlnet
9+
- sqlnet2
10+
11+
- name: loop_sqlnet | block
12+
become: true
13+
become_user: "{{ _oradb_manage_db_listener_oracle_user }}"
14+
tags:
15+
- sqlnet
16+
- sqlnet2
17+
block:
18+
- name: loop_sqlnet | create IFILE entry in sqlnet.ora
19+
ansible.builtin.lineinfile:
20+
line: "IFILE={{ _oradb_manage_db_tns_home }}/network/admin/sqlnet_ansible.ora"
21+
regexp: "^IFILE=/"
22+
insertbefore: BOF
23+
path: "{{ _oradb_manage_db_tns_home }}/network/admin/sqlnet.ora"
24+
backup: true
25+
create: true
26+
state: present
27+
mode: "0644"
28+
29+
# Important!
30+
# ansible-oracle <= 4.3 used lineinfile instead blockinfile with marker
31+
# => Remove old entries before readding them with blockinfile
32+
- name: loop_sqlnet | Check for existing sqlnet_ansible.ora
33+
ansible.builtin.stat:
34+
path: "{{ _sqlnet_ansible_file }}"
35+
register: _sqlnet_ansible_file_res
36+
37+
- name: loop_sqlnet | Working on sqlnet_ansible.ora
38+
when:
39+
- _sqlnet_ansible_file_res.stat.exists
40+
block:
41+
- name: loop_sqlnet | Search for marker in sqlnet_ansible.ora
42+
ansible.builtin.lineinfile:
43+
path: "{{ _sqlnet_ansible_file }}"
44+
regexp: "# BEGIN Ansible managed for .*"
45+
line: "# BEGIN Ansible managed for .*"
46+
state: present
47+
register: old_sqlnet_ansible_res
48+
changed_when: false
49+
check_mode: true
50+
51+
# Remove existing sqlnet_ansible.ora when no new marker is in place
52+
# => we found an old configuration file created with lineinfile
53+
# this must be changed to blockinfile with marker
54+
- name: loop_sqlnet | Remove existing sqlnet_ansible.ora due to missing new marker items
55+
ansible.builtin.file:
56+
path: "{{ _sqlnet_ansible_file }}"
57+
state: absent
58+
when: "'line added' in old_sqlnet_ansible_res.msg"
59+
60+
- name: loop_sqlnet | create custom configuration in sqlnet_ansible.ora
61+
ansible.builtin.blockinfile:
62+
path: "{{ _sqlnet_ansible_file }}"
63+
block: >-
64+
{{ sc_loop.name }} = {{ sc_loop.value }}
65+
marker: "# {mark} Ansible managed for {{ sc_loop.name }}"
66+
insertafter: "EOF"
67+
backup: true
68+
create: true
69+
state: present
70+
mode: "0644"
71+
with_items:
72+
- "{{ sqlnet_config[sqlnetinst.sqlnet] }}"
73+
loop_control:
74+
label: >-
75+
{{ sqlnetinst.sqlnet }}
76+
{{ sc_loop.name }}
77+
loop_var: sc_loop

0 commit comments

Comments
 (0)