From f02204e026ce020336436bfc9f7259704300670e Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Tue, 2 Dec 2025 13:39:23 +0100 Subject: [PATCH] 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 --- roles/oracle-db-postinstall/tasks/backup.yml | 59 +++++++ roles/oracle-db-postinstall/tasks/main.yml | 144 ++++-------------- roles/oracle-db-postinstall/tasks/scripts.yml | 32 ++++ .../oracle-db-postinstall/tasks/services.yml | 58 +++++++ 4 files changed, 179 insertions(+), 114 deletions(-) create mode 100644 roles/oracle-db-postinstall/tasks/backup.yml create mode 100644 roles/oracle-db-postinstall/tasks/scripts.yml create mode 100644 roles/oracle-db-postinstall/tasks/services.yml diff --git a/roles/oracle-db-postinstall/tasks/backup.yml b/roles/oracle-db-postinstall/tasks/backup.yml new file mode 100644 index 0000000..46e18c8 --- /dev/null +++ b/roles/oracle-db-postinstall/tasks/backup.yml @@ -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 \ No newline at end of file diff --git a/roles/oracle-db-postinstall/tasks/main.yml b/roles/oracle-db-postinstall/tasks/main.yml index ec98501..1b32261 100644 --- a/roles/oracle-db-postinstall/tasks/main.yml +++ b/roles/oracle-db-postinstall/tasks/main.yml @@ -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: 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 +# --------------------------------------------------- +# 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] diff --git a/roles/oracle-db-postinstall/tasks/scripts.yml b/roles/oracle-db-postinstall/tasks/scripts.yml new file mode 100644 index 0000000..2e3bce6 --- /dev/null +++ b/roles/oracle-db-postinstall/tasks/scripts.yml @@ -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 \ No newline at end of file diff --git a/roles/oracle-db-postinstall/tasks/services.yml b/roles/oracle-db-postinstall/tasks/services.yml new file mode 100644 index 0000000..0d56e34 --- /dev/null +++ b/roles/oracle-db-postinstall/tasks/services.yml @@ -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 \ No newline at end of file