From 49265ea380cd06ee15ae7ea94dbec3aa9a3d3c75 Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Wed, 14 Dec 2022 00:27:31 +0100 Subject: [PATCH] Initial commit --- .gitattributes | 2 + hosts | 2 + oracle-db-install.yml | 10 + oracle-db-postinstall.yml | 10 + oracle-db-preinstall.yml | 8 + readme | 77 ++ roles/oracle-db-install/files/backup_rman.sh | 208 +++++ roles/oracle-db-install/files/cvu_prereq.xml | 799 ++++++++++++++++++ .../tasks/install_database.yml | 99 +++ roles/oracle-db-install/tasks/main.yml | 12 + .../tasks/scripts_exploitation.yml | 36 + .../templates/cron_oracle_cleaner.j2 | 13 + .../templates/db_install_19.0.0.j2 | 18 + .../templates/dbora.service.j2 | 15 + .../templates/logrotate_oracle.j2 | 14 + .../templates/oraInst.loc.j2 | 2 + .../templates/run_db_install.sh.j2 | 12 + roles/oracle-db-install/vars/main.yml | 23 + .../files/backup_rman.sh | 208 +++++ roles/oracle-db-postinstall/files/login.sql | 1 + roles/oracle-db-postinstall/tasks/main.yml | 64 ++ .../templates/cron_oracle_cleaner.j2 | 13 + .../templates/dbora.service.j2 | 15 + .../templates/logrotate_oracle.j2 | 14 + roles/oracle-db-postinstall/vars/main.yml | 12 + .../oracle-db-preinstall/files/00-vidage.conf | 2 + .../files/hugepages_settings.sh | 97 +++ .../files/z_bash_aliases.sh | 14 + roles/oracle-db-preinstall/files/z_oracle.sh | 64 ++ .../tasks/dir_creation.yml | 28 + .../tasks/grub_configuration.yml | 97 +++ roles/oracle-db-preinstall/tasks/main.yml | 49 ++ .../tasks/network_configuration.yml | 28 + .../tasks/os_configuration.yml | 128 +++ roles/oracle-db-preinstall/tasks/rlwrap.yml | 22 + .../tasks/secure_configuration.yml | 17 + .../tasks/users_configuration.yml | 47 ++ .../templates/cron_oracle_cleaner.j2 | 17 + .../templates/dbora.service.j2 | 15 + .../templates/logrotate_oracle.j2 | 14 + .../oracle-db-preinstall/templates/sudoers.j2 | 1 + roles/oracle-db-preinstall/vars/RedHat_7.yml | 200 +++++ roles/oracle-db-preinstall/vars/RedHat_8.yml | 175 ++++ roles/oracle-db-preinstall/vars/main.yml | 43 + 44 files changed, 2745 insertions(+) create mode 100644 .gitattributes create mode 100644 hosts create mode 100644 oracle-db-install.yml create mode 100644 oracle-db-postinstall.yml create mode 100644 oracle-db-preinstall.yml create mode 100644 readme create mode 100644 roles/oracle-db-install/files/backup_rman.sh create mode 100644 roles/oracle-db-install/files/cvu_prereq.xml create mode 100644 roles/oracle-db-install/tasks/install_database.yml create mode 100644 roles/oracle-db-install/tasks/main.yml create mode 100644 roles/oracle-db-install/tasks/scripts_exploitation.yml create mode 100644 roles/oracle-db-install/templates/cron_oracle_cleaner.j2 create mode 100644 roles/oracle-db-install/templates/db_install_19.0.0.j2 create mode 100644 roles/oracle-db-install/templates/dbora.service.j2 create mode 100644 roles/oracle-db-install/templates/logrotate_oracle.j2 create mode 100644 roles/oracle-db-install/templates/oraInst.loc.j2 create mode 100644 roles/oracle-db-install/templates/run_db_install.sh.j2 create mode 100644 roles/oracle-db-install/vars/main.yml create mode 100644 roles/oracle-db-postinstall/files/backup_rman.sh create mode 100644 roles/oracle-db-postinstall/files/login.sql create mode 100644 roles/oracle-db-postinstall/tasks/main.yml create mode 100644 roles/oracle-db-postinstall/templates/cron_oracle_cleaner.j2 create mode 100644 roles/oracle-db-postinstall/templates/dbora.service.j2 create mode 100644 roles/oracle-db-postinstall/templates/logrotate_oracle.j2 create mode 100644 roles/oracle-db-postinstall/vars/main.yml create mode 100644 roles/oracle-db-preinstall/files/00-vidage.conf create mode 100644 roles/oracle-db-preinstall/files/hugepages_settings.sh create mode 100644 roles/oracle-db-preinstall/files/z_bash_aliases.sh create mode 100644 roles/oracle-db-preinstall/files/z_oracle.sh create mode 100644 roles/oracle-db-preinstall/tasks/dir_creation.yml create mode 100644 roles/oracle-db-preinstall/tasks/grub_configuration.yml create mode 100644 roles/oracle-db-preinstall/tasks/main.yml create mode 100644 roles/oracle-db-preinstall/tasks/network_configuration.yml create mode 100644 roles/oracle-db-preinstall/tasks/os_configuration.yml create mode 100644 roles/oracle-db-preinstall/tasks/rlwrap.yml create mode 100644 roles/oracle-db-preinstall/tasks/secure_configuration.yml create mode 100644 roles/oracle-db-preinstall/tasks/users_configuration.yml create mode 100644 roles/oracle-db-preinstall/templates/cron_oracle_cleaner.j2 create mode 100644 roles/oracle-db-preinstall/templates/dbora.service.j2 create mode 100644 roles/oracle-db-preinstall/templates/logrotate_oracle.j2 create mode 100644 roles/oracle-db-preinstall/templates/sudoers.j2 create mode 100644 roles/oracle-db-preinstall/vars/RedHat_7.yml create mode 100644 roles/oracle-db-preinstall/vars/RedHat_8.yml create mode 100644 roles/oracle-db-preinstall/vars/main.yml diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/hosts b/hosts new file mode 100644 index 0000000..13cfabe --- /dev/null +++ b/hosts @@ -0,0 +1,2 @@ +[local] +localhost ansible_connection=local diff --git a/oracle-db-install.yml b/oracle-db-install.yml new file mode 100644 index 0000000..6e92097 --- /dev/null +++ b/oracle-db-install.yml @@ -0,0 +1,10 @@ +--- + - name: Install Oracle Software (grid + db) + hosts: all + # user: root + # become: yes + become_user: root + become_method: sudo + + roles: + - oracle-db-install diff --git a/oracle-db-postinstall.yml b/oracle-db-postinstall.yml new file mode 100644 index 0000000..a01270c --- /dev/null +++ b/oracle-db-postinstall.yml @@ -0,0 +1,10 @@ +--- + - name: Host configuration + hosts: all +# user: root +# become: yes + become_user: root + become_method: sudo + + roles: + - oracle-db-postinstall diff --git a/oracle-db-preinstall.yml b/oracle-db-preinstall.yml new file mode 100644 index 0000000..5977cbe --- /dev/null +++ b/oracle-db-preinstall.yml @@ -0,0 +1,8 @@ +--- + - name: Host configuration + hosts: all + user: root + become: yes + + roles: + - oracle-db-preinstall diff --git a/readme b/readme new file mode 100644 index 0000000..f399eb2 --- /dev/null +++ b/readme @@ -0,0 +1,77 @@ +===== +INSTALLATION ANSIBLE DIRECT SUR LA MACHINE +===== + +yum install -y oracle-epel-release-el8 +yum install -y git wget ansible + +cloner le repository : +====================== +# git clone git clone https://github.com/Yacine31/oracle_ansible +# cd oracle_ansible/ + +3 books à jour : +================ +- oracle-db-preinstall.yml => configuration de Linux pour une installation Oracle +- oracle-db-install.yml => installation d'Oracle 19 SE +- oracle-db-postinstall.yml => ajout des scripts d'exploitation + +Exécution : +=========== +cd oracle_ansible +ansible-playbook -i hosts oracle-db-preinstall.yml + +Les valuers par défaut sont dans : + - oracle_version: "19.0.0" + - oracle_base: "/u01/app/oracle" + - oracle_home: "{{ oracle_base }}/product/{{oracle_version}}/dbhome_1" + - oracle_inventory: "/u01/app/oraInventory" + - oracle_sources: "/u01/sources" + - oracle_oradata: "/u02/oradata/" + - oracle_fra: "/u03/fast_recovery_area/" + +Pour l'exécuter avec des variables différentes : + +ansible-playbook -i hosts oracle-db-preinstall.yml --extra-vars "oracle_version=19c oracle_base=/opt/oracle oracle_home=/opt/oracle/product/19c/dbhome_1" + +Mise à jour : +============= +Pour mettre à jour le contenu du répertoire suite à une mise à jour : +cd oracle_ansible/ +git pull + +===== +deux books : +- configure_OS +- install-oracle-sw +- fichier hosts avec les ip/nom des serveurs cibles + +Pour une première configuration, faire ssh-copy-id root@ip => pour copier la clé ssh vers la cible + +Le premier configure l'OS seulement +Le second va créer les users (grid et/ou oracle) et faire l'installation DB et/ou GI + + +Pour la configuration de l'Os tout est automatisé, rien à configurer juste exécuter le book : + +# ansible-playbook -i hosts book-configure_OS.yml + + + +Pour l'installation GI + DB : +aller dans le fichier roles/install-oracle-sw/vars/main.yml + +1 - Les chemins vers les sources d'Oracle : + oracle_sw_source_local: "/media/sf_Oracle_Software/Oracle_Database" + et voir s'il faut adapter aussi les variables : gi_software et db_software +2 - Ensuite : + install_grid_infra: true ou false + install_database: true ou false + gi_version: "11.2.0.4" ou "12.1.0.2" + db_version: "12.1.0.2" ou "11.2.0.4" + +3 - executer le book : ansible-playbook -i hosts book-install-oracle-sw.yml + + + + diff --git a/roles/oracle-db-install/files/backup_rman.sh b/roles/oracle-db-install/files/backup_rman.sh new file mode 100644 index 0000000..7046d49 --- /dev/null +++ b/roles/oracle-db-install/files/backup_rman.sh @@ -0,0 +1,208 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ORACLE DATABASE : BACKUP RMAN DB + AL +#------------------------------------------------------------------------------ +# Historique : +# 14/09/2011 : YAO - Creation +# 12/10/2015 : YAO - adaptation à l'ensemble des bases +# 13/10/2015 : YAO - ajout des params en ligne de commande +# 03/05/2016 : YAO - adaptation a l'environnement SOM +# 04/05/2016 : YAO - ajout du niveau de sauvegarde : incrementale 0 ou 1 +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# fonction init : c'est ici qu'il faut modifier toutes les variables liées +# à l'environnement +#------------------------------------------------------------------------------ +f_init() { + + export ORACLE_OWNER=oracle + + # les différents répertoires + export SCRIPTS_DIR=/home/oracle/scripts + export BKP_LOG_DIR=$SCRIPTS_DIR/logs + export BKP_LOCATION=/orasave/$(hostname)_${ORACLE_SID}/backup_rman + + # nombre de sauvegarde RMAN en ligne à garder + export BKP_REDUNDANCY=1 + export DATE_JOUR=$(date +%Y.%m.%d-%H.%M) + export BKP_LOG_FILE=${BKP_LOG_DIR}/backup_rman_${ORACLE_SID}_${BKP_TYPE}_${DATE_JOUR}.log + export RMAN_CMD_FILE=${SCRIPTS_DIR}/rman_cmd_file_${ORACLE_SID}_${BKP_TYPE}.rman + + # nombre de jours de conservation des logs de la sauvegarde + export BKP_LOG_RETENTION=15 + + # nombre de jours de conservation des archivelog sur disque + export ARCHIVELOG_RETENTION=1 + + # nombre de canaux à utiliser + export PARALLELISM=3 + +} # f_init + +#------------------------------------------------------------------------------ +# fonction d'aide +#------------------------------------------------------------------------------ +f_help() { + + cat < backup full (database + archivelog) + -t AL => backup des archivelog seulement + +-l -t full => backup complet + -t incr => backup incrementale 1 + +CATEOF +exit $1 + +} #f_help + +#------------------------------------------------------------------------------ +# fonction d'affichage de la date ds les logs +#------------------------------------------------------------------------------ +f_print() +{ + echo "[`date +"%Y/%m/%d %H:%M:%S"`] : $1" >> $BKP_LOG_FILE +} #f_print + +#------------------------------------------------------------------------------ +# fonction de traitement des options de la ligne de commande +#------------------------------------------------------------------------------ +f_options() { + + case ${BKP_TYPE} in + DB) + BKP_DB_PLUS_AL=TRUE; + ;; + AL) + BKP_DB_PLUS_AL=FALSE; + ;; + *) f_help 2; + ;; + esac + + case ${BKP_LEVEL} in + "FULL") + BKP_FULL=TRUE; + ;; + "INCR") + BKP_FULL=FALSE; + ;; + *) f_help 2; + ;; + esac + +} #f_options + + +#---------------------------------------- +#------------ MAIN ---------------------- +#---------------------------------------- + +# s, l et t suivis des : => argument attendu +# h => pas d'argument attendu +while getopts s:t:l:h o +do + case $o in + t) BKP_TYPE=$OPTARG; + ;; + s) ORACLE_SID=$OPTARG; + ;; + l) BKP_LEVEL=$OPTARG; + ;; + h) f_help 0; + ;; + *) f_help 2; + ;; + esac +done + +# traitement de la ligne de commande + +[ "${BKP_TYPE}" ] || f_help 2; +[ "${BKP_LEVEL}" ] || BKP_LEVEL=FULL; +[ "${ORACLE_SID}" ] || f_help 2; + +BKP_LEVEL=$(echo ${BKP_LEVEL} | tr [a-z] [A-Z]) +BKP_TYPE=$(echo ${BKP_TYPE} | tr [a-z] [A-Z]) + +f_options + +# positionner les variables d'environnement ORACLE +export ORACLE_SID +ORAENV_ASK=NO +PATH=/usr/local/bin:$PATH +. oraenv -s + +# inititalisation des variables d'environnement +f_init + +# si ce n'est pas le user oracle qui lance le script, on quitte +if (test `whoami` != $ORACLE_OWNER) +then + echo + echo "-----------------------------------------------------" + echo "Vous devez etre $ORACLE_OWNER pour lancer ce script" + echo + echo "-----------------------------------------------------" + exit 2 +fi + +# initialisation des chemins, s'ils n'existent pas ils seront créés par la commande install +install -d ${BKP_LOCATION} +install -d ${BKP_LOG_DIR} + +# génération du script de la sauvegarde RMAN +echo " +run { +CONFIGURE DEVICE TYPE DISK PARALLELISM $PARALLELISM ; +CONFIGURE RETENTION POLICY TO REDUNDANCY ${BKP_REDUNDANCY}; +" > ${RMAN_CMD_FILE} + +# si sauvegarde DB (-t db) on ajoute cette ligne +if [ "${BKP_DB_PLUS_AL}" == "TRUE" ]; then + + # si backup incrementale + if [ "${BKP_FULL}" == "TRUE" ]; then + echo " + BACKUP DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/data_%T_%t_%s_%p' TAG 'DATA_${DATE_JOUR}' as compressed backupset database; + " >> ${RMAN_CMD_FILE} + else + echo " + BACKUP INCREMENTAL LEVEL 1 DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/data_%T_%t_%s_%p' TAG 'DATA_${DATE_JOUR}' as compressed backupset database; + " >> ${RMAN_CMD_FILE} + fi # if BKP_FULL + +fi # if BKP_DB_PLUS_AL + +# on continue avec la partie commune : backup des archivelog + spfile + controlfile +echo " +SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; +BACKUP DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/arch_%T_%t_%s_%p' TAG 'ARCH_${DATE_JOUR}' AS COMPRESSED BACKUPSET ARCHIVELOG +UNTIL TIME 'SYSDATE-${ARCHIVELOG_RETENTION}' ALL DELETE ALL INPUT; + +BACKUP CURRENT CONTROLFILE FORMAT '${BKP_LOCATION}/control_%T_%t_%s_%p' TAG 'CTLFILE_${DATE_JOUR}'; + +DELETE NOPROMPT OBSOLETE; +DELETE NOPROMPT EXPIRED BACKUPSET; + +SQL 'ALTER DATABASE BACKUP CONTROLFILE TO TRACE'; +SQL \"CREATE PFILE=''${BKP_LOCATION}/pfile_${ORACLE_SID}_$(date +%Y.%m.%d).ora'' FROM SPFILE\"; +} +" >> ${RMAN_CMD_FILE} + +# Execution du script RMAN +f_print "------------------------- DEBUT DE LA BACKUP -------------------------" +${ORACLE_HOME}/bin/rman target / cmdfile=${RMAN_CMD_FILE} log=${BKP_LOG_FILE} + +# Nettoyage auto des logs : durée de concervation déterminée par la variable : ${BKP_LOG_RETENTION} +f_print "------------------------- NETTOYAGE DES LOGS -------------------------" +find ${BKP_LOG_DIR} -type f -iname "backup_rman_${BKP_TYPE}*.log" -mtime +${BKP_LOG_RETENTION} -exec rm -fv "{}" \; >> $BKP_LOG_FILE + +f_print "------------------------- BACKUP ${BKP_TYPE} TERMINE -------------------------" + diff --git a/roles/oracle-db-install/files/cvu_prereq.xml b/roles/oracle-db-install/files/cvu_prereq.xml new file mode 100644 index 0000000..70ffb91 --- /dev/null +++ b/roles/oracle-db-install/files/cvu_prereq.xml @@ -0,0 +1,799 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +