klewan.ansible_role_oracle_manage_patches
Rola Ansible: oracle-manage-patches
Ta rola zarządza poprawkami Oracle.
Zastosowuje i cofa poprawki (jednorazowe oraz kwartalne) do infrastrukturę Grid oraz/lub baz danych Oracle (zarówno PRIMARY, jak i STANDBY).
Dodatkowo, istnieje możliwość ograniczenia dotkniętych ORACLE_HOMEs, podając bezpośrednio ścieżki ORACLE_HOME (oracle_manage_patches_oracle_home_name_patterns
) lub wersje oprogramowania (oracle_manage_patches_oracle_home_version_patterns
), które będą brane pod uwagę. W przeciwnym razie, wszystkie ORACLE_HOMEs związane z podaną nazwą łatki zostaną dotknięte. Inne ORACLE_HOMEs oraz bazy danych, które nie są związane z wybraną nazwą łatki, nie zostaną zmienione.
Rola jest świadoma klastrów RAC i stosuje poprawki do wszystkich węzłów klastra, gdy wykryje Real Application Cluster, nawet jeśli playbook jest uruchamiany tylko na jednym z węzłów RAC (argument --limit
w ansible-playbook).
Dla baz danych w trybie standby jedynie pliki binarne są poprawiane, a żadne skrypty sql/datapatch nie są wykonywane.
Jako opcje dostępne są następujące funkcje:
- Kopia zapasowa ORACLE_HOMEs (przed instalacją łaty) - (
oracle_manage_patches_backup_oracle_home
+ rolaoracle-homes-backup
) - Kopia zapasowa metadanych ASM (przed instalacją łaty) - (
oracle_manage_patches_backup_asm_metadata
oraz zmiennaoracle_manage_patches_backup_dir
) - Skrypty kontrolne przed i po (wyjście
opatch lsinventory
, lista obiektów INVALID, wyjście z tabelregistry$history
,dba_registry_sqlpatch
,dba_registry_history
orazdba_registry
), które rejestrują swoją aktywność w kataloguoracle_manage_patches_log_dir
na docelowych systemach - Pobieranie łatki bezpośrednio z My Oracle Support (
oracle_manage_patches_download_patch_from_mos
+ rolaoracle-download-patches
)
Rola wymaga ustawienia następujących zmiennych (w playbooku lub za pomocą --extra-vars
- zobacz przykłady poniżej):
oracle_manage_patches_task
-apply
lubrollback
oracle_manage_patches_patch_type
-oneoff
lub dowolny klucz 'oracle_manage_patches_quarterly_patches' (np. ojvmgicombo/ojvmdbcombo/ru/dbbp/psu)oracle_manage_patches_patch_name
- nazwa łatki (np. OCT2018/JUL2018) dla kwartalnych poprawek
Lista baz danych powinna być dostarczona za pomocą zmiennej oracle_databases
(patrz rola oracle
dla odniesienia). Może być zdefiniowana ręcznie lub dynamicznie przy użyciu roli automatycznego wykrywania oracle-gatherinfo-databases
(patrz przykład w sekcji Example Playbook). Gdy jest ustawiana ręcznie, oracle_databases
powinna być zdefiniowana w następujący sposób:
oracle_databases:
- cluster_database: "false"
database_role: "PRIMARY"
database_type: "SINGLE"
db_name: "ORCL"
db_unique_name: "ORCL"
edition: "Enterprise"
instance_name: "ORCL"
instances: "ORCL"
is_registered_in_gi: "true"
oracle_home: "/u01/app/oracle/product/11.2.0.4/dbhome1"
software_version: "11.2.0.4.0"
- (...)
Podobnie, konfiguracja infrastruktury Grid powinna być dostarczona za pomocą zmiennej oracle_gi_info
(patrz rola oracle
dla odniesienia). Może być zdefiniowana ręcznie lub również dynamicznie przy użyciu roli automatycznego wykrywania oracle-gatherinfo-gi
(patrz przykład w sekcji Example Playbook). Gdy jest ustawiana ręcznie, oracle_gi_info
powinna być zdefiniowana w następujący sposób (przykład):
oracle_gi_info:
oracle_home: "/u01/app/12.1.0/grid"
rac_nodes: []
rac_remote_nodes: []
software_version: "12.1.0.2.0"
lub
oracle_gi_info:
oracle_home: "/u01/app/12.1.0/grid"
rac_nodes: [ 'server1', 'server2' ]
rac_remote_nodes: [ 'server2' ]
software_version: "12.1.0.2.0"
Zaleca się uruchomienie ról automatycznego wykrywania oracle-gatherinfo-listener
i oracle-gatherinfo-dbconsole
przed uruchomieniem tej roli (patrz przykład w sekcji Example Playbook). Te role wypełniają zmienne oracle_running_listeners
oraz oracle_dbconsole_running_services
, które są używane przez tę rolę (oracle-manage-patches
), aby przywrócić systemy do dokładnie tego samego stanu, co przedtem.
Listy poprawek są definiowane za pomocą zmiennych oracle_manage_patches_opatch
, oracle_manage_patches_quarterly_patches
oraz oracle_manage_patches_oneoff_patches
. Zobacz Role Variables dla szczegółów.
Pliki zip z łatkami mogą być dostępne zarówno na zdalnych systemach, jak i lokalnie na kontrolerze Ansible. Aby wskazać, która konfiguracja ma zastosowanie, użyj zmiennej oracle_manage_patches_remote_stage
.
Rola automatycznie instaluje najnowsze narzędzie OPatch dla dotkniętych ORACLE_HOMEs zgodnie z danymi oracle_manage_patches_opatch
.
Obsługiwane systemy operacyjne:
- RedHat
- CentOS
- OracleLinux
Wymagania
Ta rola wykorzystuje role oracle
, oracle-asm-metadata
, oracle-homes-backup
oraz oracle-download-patches
.
Przykład Playbooka
Prosty przykład:
- name: Apply Oracle Patches
hosts: ora-servers
gather_facts: true
become: true
become_user: '{{ oracle_user }}'
tasks:
- import_role:
name: oracle-manage-patches
vars:
oracle_manage_patches_task: apply
oracle_manage_patches_patch_type: ojvmgicombo
oracle_manage_patches_patch_name: OCT2018
tags:
- oracle-manage-patches
Złożony przykład (z dodatkowymi funkcjami, takimi jak automatyczne wykrywanie GI/DB, cronjobs i wsparcie monitorowania [wyłącz/ włącz]):
- name: Apply Oracle Patches
hosts: ora-servers
gather_facts: true
become: true
become_user: '{{ oracle_user }}'
vars:
oracle_apply_patches_manage_monitoring: true
oracle_apply_patches_manage_cron_jobs: true
oracle_apply_patches_downtime_duration: '3h'
oracle_apply_patches_single_host_mode: true
tasks:
- name: Check a single host mode
assert:
that:
- "play_hosts|length == 1"
fail_msg: "To jest tryb 'pojedynczego hosta', ale wydaje się, że w bieżącej grze jest więcej niż jeden host"
run_once: true
when: oracle_apply_patches_single_host_mode
tags:
- oracle_apply_patches_precheck
- always
- import_role:
name: oracle-gatherinfo-gi
tags:
- oracle-gatherinfo-gi
- oracle-gatherinfo-allcomponents
- import_role:
name: oracle-gatherinfo-databases
tags:
- oracle-gatherinfo-databases
- oracle-gatherinfo-allcomponents
- import_role:
name: oracle-gatherinfo-listener
tags:
- oracle-gatherinfo-listener
- oracle-gatherinfo-allcomponents
- import_role:
name: oracle-gatherinfo-dbconsole
tags:
- oracle-gatherinfo-dbconsole
- oracle-gatherinfo-allcomponents
- include_role:
name: oracle-host-cron
vars:
oracle_host_cron_copy_scripts: false
oracle_host_cron_disable_jobs: true
oracle_host_cron_manage_cron_jobs: '{{ oracle_apply_patches_manage_cron_jobs }}'
when: oracle_apply_patches_manage_cron_jobs
tags:
- oracle_disable_cron_jobs
- include_tasks: monitoring_set_downtime.yml
with_items:
- '{{ inventory_hostname }}'
- '{{ oracle_gi_info.rac_remote_nodes }}'
loop_control:
label: "[host: {{ _oracle_apply_patches_host_outer_item }}]"
loop_var: _oracle_apply_patches_host_outer_item
when: oracle_apply_patches_manage_monitoring
tags:
- nacl_manage_checks_set_downtime
- import_role:
name: oracle-manage-patches
vars:
oracle_manage_patches_task: apply
oracle_manage_patches_patch_type: ojvmgicombo
oracle_manage_patches_patch_name: OCT2018
tags:
- oracle-manage-patches
- include_tasks: monitoring_cancel_downtime.yml
with_items:
- '{{ inventory_hostname }}'
- '{{ oracle_gi_info.rac_remote_nodes }}'
loop_control:
label: "[host: {{ _oracle_apply_patches_host_outer_item }}]"
loop_var: _oracle_apply_patches_host_outer_item
when: oracle_apply_patches_manage_monitoring
tags:
- nacl_manage_checks_cancel_downtime
- include_role:
name: oracle-host-cron
vars:
oracle_host_cron_copy_scripts: false
oracle_host_cron_disable_jobs: false
oracle_host_cron_manage_cron_jobs: '{{ oracle_apply_patches_manage_cron_jobs }}'
when: oracle_apply_patches_manage_cron_jobs
tags:
- oracle_enable_cron_jobs
Licencja
GPLv3 - GNU General Public License v3.0
Informacje o Autorze
Ta rola została stworzona w 2018 roku przez Krzysztofa Lewandowskiego.
Manage Oracle patches
ansible-galaxy install klewan.ansible_role_oracle_manage_patches