Modularize oracle-db-postinstall role tasks

- Split main.yml into modular files: scripts.yml, backup.yml, services.yml
- Use include_tasks for better organization and maintainability
- Group related tasks by functionality
- Improve code readability and reusability
This commit is contained in:
Yacine31
2025-12-02 13:39:23 +01:00
parent 5a7a40c3a3
commit f02204e026
4 changed files with 179 additions and 114 deletions

View File

@@ -0,0 +1,59 @@
---
#
# Configuration des sauvegardes automatiques Oracle
#
- name: Création du répertoire de sauvegarde /u04
ansible.builtin.file:
dest: /u04
mode: '0775'
owner: oracle
group: oinstall
state: directory
recurse: yes
tags: backup
- name: Installation des packages mutt et curl pour les emails
ansible.builtin.package:
name: "{{ item }}"
state: latest
loop:
- mutt
- curl
tags: backup
- name: Ajout de la tâche cron RMAN
ansible.builtin.cron:
name: "Backup RMAN des bases ouvertes et en AL"
user: oracle
minute: "44"
hour: "23"
job: "sh {{ scripts_dir }}/backup_rman_alldb.sh 2>&1 1>/dev/null"
tags: backup
- name: Ajout de la tâche cron Datapump
ansible.builtin.cron:
name: "Export Datapump des bases ouvertes"
user: oracle
minute: "44"
hour: "21"
job: "sh {{ scripts_dir }}/export_datapump_alldb.sh 2>&1 1>/dev/null"
tags: backup
- name: Ajout de la tâche cron backup des binaires
ansible.builtin.cron:
name: "Backup des binaires"
user: oracle
minute: "44"
hour: "20"
day: "1"
job: "sh {{ scripts_dir }}/backup_bin.sh 2>&1 1>/dev/null"
tags: backup
- name: Ajout de la tâche cron backup des AL si FRA >= seuil
ansible.builtin.cron:
name: "Backup des AL si FRA >= seuil définit"
user: oracle
minute: "*/10"
job: "sh {{ scripts_dir }}/backup_rman_AL_fct_FRA_Usage.sh 2>&1 1>/dev/null"
tags: backup

View File

@@ -1,123 +1,39 @@
---
---
#
# post configuration d'une installation de base de données Oracle
#
- name: Vérifier les prérequis pour la post-installation
ansible.builtin.assert:
that:
- ansible_memtotal_mb >= 2048
msg: "Prérequis non satisfaits : RAM >= 2GB"
tags: prerequisites
- name: Vérifier les prérequis pour la post-installation
ansible.builtin.assert:
that:
- ansible_memtotal_mb >= 2048
msg: "Prérequis non satisfaits : RAM >= 2GB"
tags: prerequisites
- name: Vérifier que Oracle est installé
ansible.builtin.stat:
path: "{{ oracle_home }}/bin/sqlplus"
register: oracle_installed
failed_when: not oracle_installed.stat.exists
tags: prerequisites
- name: Vérifier que Oracle est installé
ansible.builtin.stat:
path: "{{ oracle_home }}/bin/sqlplus"
register: oracle_installed
failed_when: not oracle_installed.stat.exists
tags: prerequisites
# ---------------------------------------------------
# récupération des scripts sql
# ---------------------------------------------------
- name: rer le repository des scripts SQL
ansible.builtin.git:
repo: https://github.com/Yacine31/sql.git
dest: "{{ scripts_dir }}"
update: yes
force: yes
become: true
become_method: su
become_user: oracle
register: git_result
failed_when: git_result.failed and 'already exists' not in git_result.msg
tags: scripts
# ---------------------------------------------------
# Gestion des scripts SQL
# ---------------------------------------------------
- name: Inclure les tâches de gestion des scripts
ansible.builtin.include_tasks: scripts.yml
tags: scripts
# ---------------------------------------------------
# changement du propriétaire de root en oracle
# ---------------------------------------------------
- name: Changement du propriétaire
ansible.builtin.file:
dest: "{{ scripts_dir }}"
owner: oracle
group: oinstall
recurse: yes
# ---------------------------------------------------
# Configuration des sauvegardes automatiques
# ---------------------------------------------------
- name: Inclure les tâches de configuration des sauvegardes
ansible.builtin.include_tasks: backup.yml
tags: backup
# ---------------------------------------------------
# Ajout de la variabe ORACLE_PATH ans .bash_profile
# ---------------------------------------------------
- name: Ajout de la variabe ORACLE_PATH ans .bash_profile
ansible.builtin.lineinfile: path=/home/oracle/.bash_profile line="export ORACLE_PATH={{ scripts_dir }}" create=yes
tags: oraclepath
# ---------------------------------------------------
# ajout de script oracle pour les backups rman
# ---------------------------------------------------
- name: Création de répertoire de sauvegarde RMAN et Datapump /u04
ansible.builtin.file: dest=/u04 mode=775 owner=oracle group=oinstall state=directory recurse=yes
tags: backup
- name: installation du package mutt et curl pour envoyer des mails depuis le shell
ansible.builtin.package:
name: "{{ item }}"
state: latest
loop:
- mutt
- curl
tags: backup
- name: Ajout de la tâche cron RMAN
ansible.builtin.cron: name="Backup RMAN des bases ouvertes et en AL" user=oracle minute="44" hour="23" job="sh {{ scripts_dir }}/backup_rman_alldb.sh 2>&1 1>/dev/null"
tags: backup
- name: Ajout de la tâche cron Datapump
ansible.builtin.cron: name="Export Datapump des bases ouvertes" user=oracle minute="44" hour="21" job="sh {{ scripts_dir }}/export_datapump_alldb.sh 2>&1 1>/dev/null"
tags: backup
- name: Ajout de la tâche cron backup des binaires
ansible.builtin.cron: name="Backup des binaires" user=oracle minute="44" hour="20" day="1" job="sh {{ scripts_dir }}/backup_bin.sh 2>&1 1>/dev/null"
tags: backup
- name: Ajout de la tâche cron backup des AL si FRA >= seuil définit
ansible.builtin.cron: name="Backup des AL si FRA >= seuil définit" user=oracle minute="*/10" job="sh {{ scripts_dir }}/backup_rman_AL_fct_FRA_Usage.sh 2>&1 1>/dev/null"
tags: backup
# ---------------------------------------------------
# configuration Linux : config oracle pour logrotate
# Gestion des fichiers logs seulement (archivage et réinitialisation)
# ---------------------------------------------------
- name: Gestion des logs Oracle - copie du fichier de configuration pour logrotate
ansible.builtin.template: src=logrotate_oracle.j2 dest=/etc/logrotate.d/oracle mode=644 owner=root group=root
tags: logrotate
# ---------------------------------------------------
# configuration Linux : oracle cleaner dans le cron de l'utilisateur oracle
# Gestion des fichiers trace et xml : purge des anciens fichiers
# ---------------------------------------------------
- name: Netoyage ADR Oracle - copie du fichier de configuration pour cron
ansible.builtin.template: src=cron_oracle_cleaner.j2 dest={{ scripts_dir }}/oracle_cleaner.sh mode=755 owner=oracle group=oinstall
tags: oracle_cleaner
# ajout du script dans le crontab de l'utilisateur oracle
- name: Ajout de la tâche cron purge des fichiers trace et audit
ansible.builtin.cron: name="Purge des fichiers trace et audit" user=oracle minute="23" hour="23" day="1" job="sh {{ scripts_dir }}/oracle_cleaner.sh 2>&1 1>/dev/null"
tags: oracle_cleaner
# suppression de l'ancien fichier qui se trouve dans /etc/cron.daily si il existe
- name: suppression du fichier /etc/cron.daily/oracle_cleaner si il existe
ansible.builtin.file: path=/etc/cron.daily/oracle_cleaner state=absent
tags: oracle_cleaner
# ---------------------------------------------------
# copy du fichier dbora.service dans /lib/systemd/system pour redémmarage auto
# ---------------------------------------------------
- name: Copie du script de démarrage auto des bases Oracle
ansible.builtin.template: src=dbora.service.j2 dest=/lib/systemd/system/dbora.service owner=root mode=644
tags: dbora_init
- name: Activation par systemctl du script de démarrage auto des bases Oracle
ansible.builtin.systemd: name=dbora daemon_reload=yes enabled=yes
tags: dbora_init
- debug: msg="Pensez à mettre Y au lieu de N dans /etc/oratab pour les bases à démarreage automatique"
# ---------------------------------------------------
# Configuration des services système et cron
# ---------------------------------------------------
- name: Inclure les tâches de configuration des services
ansible.builtin.include_tasks: services.yml
tags: [dbora_init, oracle_cleaner, logrotate]

View File

@@ -0,0 +1,32 @@
---
#
# Gestion des scripts SQL pour Oracle
#
- name: Gérer le repository des scripts SQL
ansible.builtin.git:
repo: https://github.com/Yacine31/sql.git
dest: "{{ scripts_dir }}"
update: yes
force: yes
become: true
become_method: su
become_user: oracle
register: git_result
failed_when: git_result.failed and 'already exists' not in git_result.msg
tags: scripts
- name: Changement du propriétaire des scripts
ansible.builtin.file:
dest: "{{ scripts_dir }}"
owner: oracle
group: oinstall
recurse: yes
tags: scripts
- name: Ajout de la variable ORACLE_PATH dans .bash_profile
ansible.builtin.lineinfile:
path: /home/oracle/.bash_profile
line: "export ORACLE_PATH={{ scripts_dir }}"
create: yes
tags: oraclepath

View File

@@ -0,0 +1,58 @@
---
#
# Configuration des services système et tâches cron
#
- name: Copie du script de démarrage automatique des bases Oracle
ansible.builtin.template:
src: dbora.service.j2
dest: /lib/systemd/system/dbora.service
owner: root
mode: '0644'
tags: dbora_init
- name: Activation du service de démarrage automatique
ansible.builtin.systemd:
name: dbora
daemon_reload: yes
enabled: yes
tags: dbora_init
- name: Copie du script de nettoyage ADR Oracle
ansible.builtin.template:
src: cron_oracle_cleaner.j2
dest: "{{ scripts_dir }}/oracle_cleaner.sh"
owner: oracle
group: oinstall
mode: '0755'
tags: oracle_cleaner
- name: Ajout de la tâche cron de nettoyage des logs
ansible.builtin.cron:
name: "Purge des fichiers trace et audit"
user: oracle
minute: "23"
hour: "23"
day: "1"
job: "sh {{ scripts_dir }}/oracle_cleaner.sh 2>&1 1>/dev/null"
tags: oracle_cleaner
- name: Suppression de l'ancien fichier cron si existant
ansible.builtin.file:
path: /etc/cron.daily/oracle_cleaner
state: absent
tags: oracle_cleaner
- name: Copie de la configuration logrotate pour Oracle
ansible.builtin.template:
src: logrotate_oracle.j2
dest: /etc/logrotate.d/oracle
owner: root
group: root
mode: '0644'
tags: logrotate
- name: Message de rappel pour la configuration oratab
ansible.builtin.debug:
msg: "Pensez à mettre Y au lieu de N dans /etc/oratab pour les bases à démarrage automatique"
tags: dbora_init