Role to install oracledb onto a centos ami.
system:
packages:
- required
- system
- packages
install_jdk: false # Oracle has its own JDK in the installer packages
system_groups:
- group: "{{ system_users.0.group }}"
gid: "{{ system_users.0.gid }}"
- group: dba
gid: 54322
- group: oper
gid: 54323
system_users:
- name: oracle
uid: 1200
group: oinstall
groups: "oinstall, dba, oper"
gid: 54321
profile: |
alias ll='ls -lah'
alias cp='cp -iv'
export ORACLE_HOSTNAME=localhost
export ORACLE_UNQNAME={{ database_global_database_name }}
export ORACLE_BASE={{ oracle_database_oracle_base }}
export ORACLE_HOME={{ oracle_database_oracle_home }}
export ORACLE_SID={{ database_sid }}
export ORACLE_TERM=xterm
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
mount_point: "/u01" # The mount point for our volume
device_name: "/dev/xvdb" # HVM volume so sdb maps to xvdb
mount_owner: "{{ system_users.0.name }}"
mount_group: "{{ system_users.0.group }}"
# installation variables
oracle_database_version: 11g # supported versions: [11g]
oracle_database_edition: EE # supported editions: [SE,EE]
database_selected_languages: "en,en_GB"
database_characterset: "AL32UTF8"
database_global_database_name: "example_db"
database_sid: "example_db"
database_memorylimit: "1000"
# installers
oracle_database_installer_directory: "{{ mount_point }}/software/11gR/database"
oracle_grid_installer_directory: "{{ mount_point }}/software/11gR/grid"
oracle_patch_installer_directory: "{{ mount_point }}/software/11gR/patches"
oracle_osbws_installer_directory: "{{ mount_point }}/software/11gR/osbws"
oracle_database_response_file: "db"
oracle_grid_response_file: "grid"
# oracle-database
oracle_database_inventory_location: "{{ mount_point }}/app/oraInventory"
oracle_database_oracle_base: "{{ mount_point }}/app/oracle"
#The path below has the version hardcoded we need to change this
oracle_database_oracle_home: "{{ oracle_database_oracle_base }}/product/11.2.0.4/db"
oracle_database_datalocation: "{{ oracle_database_oracle_base }}/oradata"
oracle_grid_oracle_base: "{{ mount_point }}/app/grid"
oracle_grid_oracle_home: "{{ oracle_grid_oracle_base }}/product/11.2.0.4/grid"
oracle_database_kernel_params:
# Shared memory and semaphore
# look for document 226209.1 in oracle support for details
kernel.sem: 250 32000 100 128
kernel.shmmni: 4096
# 1.5 GB Shared memory 500mb for linux kernel (for 2GB virtual machine)
kernel.shmall: 393216
# 1 GB Half of the physical memory (for 2GB virtual machine)
kernel.shmmax: 4398046511104
# For 1Gbps with 1ms latency 16MB buffer
net.core.rmem_max: 16777216
net.core.wmem_max: 16777216
net.ipv4.tcp_rmem: 4096 87380 16777216
net.ipv4.tcp_wmem: 4096 65536 16777216
# Minimize swap file use
vm.swappiness: 10
vm.dirty_background_ratio: 5
vm.dirty_ratio: 10
# Max open file descriptors 512 * db processes + room for os
fs.file-max: 409600
# Shorten keep alive of connections
net.ipv4.tcp_keepalive_time: 300
net.ipv4.tcp_keepalive_intvl: 60
net.ipv4.tcp_keepalive_probes: 10
# maximize port range
net.ipv4.ip_local_port_range: 9000 65500
# Oracle user limits
oracle_database_limits_soft_no_file: 4096
oracle_database_limits_hard_no_file: 65536
oracle_database_limits_soft_nproc: 2047
oracle_database_limits_hard_nproc: 16384
oracle_database_limits_soft_stack: 10240
oracle_database_limits_hard_stack: 32768
# mem lock 90% of RAM
oracle_database_limits_soft_memlock: 1887437
oracle_database_limits_hard_memlock: 1887437
artefact_path: "delius-core/oracle/rdbms"
oracledb_artefacts:
- name: 'archive-1.zip'
- name: 'archive-n.zip'
oracledb_patches:
- name: 'patch-1.zip'
- name: 'patch-n.zip'
oracledb_rpms:
- name: 'oracleasm-support-2.1.11-2.el7.x86_64.rpm'
- name: 'oracleasmlib-2.0.12-1.el7.x86_64.rpm'
oracledb_osbws:
- name: 'osbws_install_12.2.0.1.0.jar'
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: hmpps-delius-core-oracledb-installer, wl_artefact_bucket: "{{ ansible_env.ARTIFACT_S3_BUCKET }}" }
Before starting the services
oracle_database_limits_soft_memlock
and oracle_database_limits_hard_memlock
to 90% of the system memory
ansible_memtotal_mb
- name: Find out how much system memory we assign in kb cast to an integer
set_fact:
system_memory_kb: "{{ ((ansible_memtotal_mb/10)*9)*1024|int }}"
ignore_errors: true
/root/
as /tmp
is volatileMIT
An optional section for the role authors to include contact information, or a website (HTML is not allowed).