Skip to content

Commit 5fae749

Browse files
committed
oradb_facts: add attribute oradb_facts_ignore_unreachable to oracle_databases
1 parent 15c0b8e commit 5fae749

File tree

4 files changed

+89
-36
lines changed

4 files changed

+89
-36
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
minor_changes:
3+
- "oradb_facts: add attribute oradb_facts_ignore_unreachable to oracle_databases (oravirt#417)"
Lines changed: 59 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,63 @@
11
---
22
# @todo bug: parameter user, password and sysdba needs a refactoring
3-
- name: Gather Facts from Database
4-
opitzconsulting.ansible_oracle.oracle_facts:
5-
hostname: "{{ oracle_hostname }}"
6-
port: "{{ _listener_port_cdb }}"
7-
service_name: "{{ _db_service_name }}"
8-
user: "{{ db_user }}"
9-
password: "{{ _db_password_cdb }}"
10-
mode: sysdba
11-
environment: "{{ _oracle_env }}"
12-
register: dbfactsreg
13-
vars:
14-
# set db_user for _db_password_cdb
15-
db_user: "{{ oradb_facts_db_user }}"
3+
- name: Gather Facts
4+
block:
5+
- name: Gather Facts from Database (rescue failures in later task)
6+
opitzconsulting.ansible_oracle.oracle_facts:
7+
hostname: "{{ oracle_hostname }}"
8+
port: "{{ _listener_port_cdb }}"
9+
service_name: "{{ _db_service_name }}"
10+
user: "{{ db_user }}"
11+
password: "{{ _db_password_cdb }}"
12+
mode: sysdba
13+
environment: "{{ _oracle_env }}"
14+
register: dbfactsreg
15+
vars:
16+
# set db_user for _db_password_cdb
17+
db_user: "{{ oradb_facts_db_user }}"
1618

19+
# 2nd execution of oracle_facts will overwrite data of last execution.
20+
# => Store facts from oracle_facts in structure
21+
- name: Write facts to oracledb.db_unique_name
22+
ansible.builtin.set_fact:
23+
cacheable: true
24+
oracledb_facts: "{{ oracledb_facts | default({}) | combine(_db_facts | items2dict) }}"
25+
when:
26+
- dbfactsreg.ansible_facts['version'] is defined
27+
vars:
28+
_db_facts:
29+
- key: "{{ odb['oracle_db_unique_name'] | default(odb['oracle_db_name']) }}"
30+
value:
31+
state: present
32+
version: "{{ ansible_facts['version'] }}"
33+
database: "{{ ansible_facts['database'] }}"
34+
instance: "{{ ansible_facts['instance'] }}"
35+
pdb: "{{ ansible_facts['pdb'] }}"
36+
parameter: "{{ ansible_facts['parameter'] }}"
37+
rac: "{{ ansible_facts['rac'] }}"
38+
redolog: "{{ ansible_facts['redolog'] }}"
39+
tablespace: "{{ ansible_facts['tablespace'] }}"
40+
temp_tablespace: "{{ ansible_facts['temp_tablespace'] }}"
41+
userenv: "{{ ansible_facts['userenv'] }}"
42+
option: "{{ ansible_facts['option'] }}"
1743

18-
# 2nd execution of oracle_factswill overwrite data of last execution.
19-
# => Store facts from oracle_facts in structure
20-
- name: Write facts to oracledb.db_unique_name
21-
ansible.builtin.set_fact:
22-
cacheable: true
23-
oracledb_facts: "{{ oracledb_facts | default({}) | combine(_db_facts | items2dict) }}"
24-
when:
25-
- dbfactsreg.ansible_facts['version'] is defined
26-
vars:
27-
_db_facts:
28-
- key: "{{ odb['oracle_db_unique_name'] | default(odb['oracle_db_name']) }}"
29-
value:
30-
version: "{{ dbfactsreg.ansible_facts['version'] }}"
31-
database: "{{ dbfactsreg.ansible_facts['database'] }}"
32-
instance: "{{ dbfactsreg.ansible_facts['instance'] }}"
33-
pdb: "{{ dbfactsreg.ansible_facts['pdb'] }}"
34-
parameter: "{{ dbfactsreg.ansible_facts['parameter'] }}"
35-
rac: "{{ dbfactsreg.ansible_facts['rac'] }}"
36-
redolog: "{{ dbfactsreg.ansible_facts['redolog'] }}"
37-
tablespace: "{{ dbfactsreg.ansible_facts['tablespace'] }}"
38-
temp_tablespace: "{{ dbfactsreg.ansible_facts['temp_tablespace'] }}"
39-
userenv: "{{ dbfactsreg.ansible_facts['userenv'] }}"
40-
option: "{{ dbfactsreg.ansible_facts['option'] }}"
44+
rescue:
45+
# default is
46+
# => Fail execution of Playbook
47+
- name: Fail execution of oradb_facts
48+
ansible.builtin.fail:
49+
msg: >-
50+
Set oradb_facts_ignore_unreachable=false in oracle_databases
51+
to disable this fail task.
52+
when:
53+
- not _odb_loop_helper.oradb_facts_ignore_unreachable | default(false)
54+
55+
- name: Write empty facts to oracledb.db_unique_name (rescue from failure above)
56+
ansible.builtin.set_fact:
57+
cacheable: true
58+
oracledb_facts: "{{ oracledb_facts | default({}) | combine(_db_facts | items2dict) }}"
59+
vars:
60+
_db_facts:
61+
- key: "{{ odb['oracle_db_unique_name'] | default(odb['oracle_db_name']) }}"
62+
value:
63+
state: unreachable

roles/orasw_meta_internal/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ This will create issues and problems in `ansible-oracle` and is not supported.
2222
- [_opdb_home](#_opdb_home)
2323
- [_opdb_loop_helper](#_opdb_loop_helper)
2424
- [_oracle_db_instance_name](#_oracle_db_instance_name)
25+
- [_oracle_db_unique_name](#_oracle_db_unique_name)
2526
- [_oracle_ee_opiton_dict](#_oracle_ee_opiton_dict)
2627
- [_oracle_env](#_oracle_env)
2728
- [_oracle_env_pdb](#_oracle_env_pdb)
@@ -211,6 +212,18 @@ Do not set it in inventory!
211212
_oracle_db_instance_name: _internal_used_
212213
```
213214

215+
### _oracle_db_unique_name
216+
217+
The variable is internal used only.
218+
219+
Do not set it in inventory!
220+
221+
#### Default value
222+
223+
```YAML
224+
_oracle_db_unique_name: _internal_used_
225+
```
226+
214227
### _oracle_ee_opiton_dict
215228

216229
This is an internal variable in `ansible-oracle`.

roles/orasw_meta_internal/defaults/main.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,20 @@ _oracle_db_instance_name: >-
120120
{%- endfor -%}
121121
{%- endif -%}
122122
123+
# @var _oracle_db_unique_name:description: >
124+
# The variable is internal used only.
125+
#
126+
# Do not set it in inventory!
127+
# @end
128+
# @var _oracle_db_unique_name: $ "_internal_used_"
129+
_oracle_db_unique_name: >-
130+
{%- if _odb_loop_helper.oracle_db_name is defined -%}
131+
{{- _odb_loop_helper.oracle_db_unique_name
132+
| default(_odb_loop_helper.oracle_db_name) -}}
133+
{%- elif _opdb_loop_helper.cdb is defined -%}
134+
{{- _db_unique_name_for_pdb -}}
135+
{%- endif -%}
136+
123137
# @var _listener_port_cdb:description: >
124138
# The variable is internal used only.
125139
#

0 commit comments

Comments
 (0)