# Oracle RAC setup # TODO: look at using a define to solve some of these deps # TODO: does this need to modify nsswitch.conf to set hosts: dns files? # REQUIRES: ## hosts file entries for dns names, pvt, and vip ###### ## ssh setup files # file { # '/u01/app/oracle/.ssh/authorized_keys': # ensure => file, # source => "puppet:///CLIENT/u01/app/oracle/dotssh/authorized_keys.${hostname}", # mode => 640, # owner => oracle, # require => File['/u01/app/oracle/.ssh']; # '/u01/app/oracle/.ssh/id_rsa.pub': # ensure => file, # source => "puppet:///CLIENT/u01/app/oracle/dotssh/id_rsa.pub.${hostname}", # mode => 640, # owner => oracle, # require => File['/u01/app/oracle/.ssh']; # # '/u01/11.2.0/grid/.ssh/authorized_keys': # ensure => file, # source => "puppet:///CLIENT/u01/11.2.0/grid/dotssh/authorized_keys.${hostname}", # mode => 640, # owner => grid, # require => File['/u01/11.2.0/grid/.ssh']; # '/u01/11.2.0/grid/.ssh/id_rsa.pub': # ensure => file, # source => "puppet:///CLIENT/u01/11.2.0/grid/dotssh/id_rsa.pub.${hostname}", # mode => 640, # owner => grid, # require => File['/u01/11.2.0/grid/.ssh']; # } ####### ## wallet setup # base::wallet { "unix-${hostname}-grid-ssh-rsa": # path => '/u01/11.2.0/grid/.ssh/id_rsa', # owner => grid, # group => oinstall, # type => "file", # mode => 600, # require => File['/u01/11.2.0/grid/.ssh']; # } # base::wallet { "unix-${hostname}-oracle-ssh-rsa": # path => '/u01/app/oracle/.ssh/id_rsa', # owner => oracle, # group => oinstall, # type => 'file', # mode => 600, # require => File['/u01/app/oracle/.ssh']; # } ## bonding setup for NICs to setup LACP mode 1 on nic pairs # file { '/etc/modprobe.d/bonding.conf': # source => 'puppet:///CLIENT/etc/modprobe.d/bonding.conf', # } class oracledb::rac inherits oracledb::rhel5 { include oracledb::rac::newsyslog include oracledb::rac::ntirety include oracledb::rac::ntpd include oracledb::rac::root include oracledb::rac::users include oracledb::rac::v11g include powerpath include base::ssh::pubkey if (! ( $::operatingsystem == 'redhat' and $::lsbmajdistrelease == '5' )) { fail 'Must be running RHEL5 to use RAC' } # Oracle modules need to be rewritten!!! This is hacked to work around it. if ! defined (Package['libaio-devel.i386']) { package { 'libaio-devel.i386': ensure => present } } if ! defined (Package['libaio-devel.x86_64']) { package { 'libaio-devel.x86_64': ensure => present } } if ! defined (Package['unixODBC.i386']) { package { 'unixODBC.i386': ensure => present } } if ! defined (Package['unixODBC.x86_64']) { package { 'unixODBC.x86_64': ensure => present } } if ! defined (Package['unixODBC-devel.i386']) { package { 'unixODBC-devel.i386': ensure => present } } if ! defined (Package['unixODBC-devel.x86_64']) { package { 'unixODBC-devel.x86_64': ensure => present } } if ! defined (Package['compat-libstdc++-33.x86_64']) { package { 'compat-libstdc++-33.x86_64': ensure => present } } File['/etc/security/limits.conf'] { source => 'puppet:///oracledb/etc/security/limits.conf' } file { '/etc/oraInst.loc': source => 'puppet:///oracledb/etc/oraInst.loc', require => User['oracle'], owner => 'root', mode => '0644'; } # link in sqlplus to /usr/local/bin file { '/usr/local/bin/sqlplus': ensure => link, target => '/u01/app/oracle/product/10.2.0/db_1/bin/sqlplus'; } # oracle and dba group needs access to powerpath devices exec { 'chown oracle:dba /dev/emcpower*': command => 'chown oracle:dba /dev/emcpower* && chmod 660 /dev/emcpower*', onlyif => 'ls -l /dev/emcpower* | egrep -q \'root|disk|brw-r-\'', require => Package['EMCpower.LINUX'], } # We need Oracle ASM for currently booted kernel and other req oracle pkgs. package { [ 'cvuqdisk', 'oracleasm-support', "oracleasm-${::kernelrelease}", 'oracleasmlib', ]: ensure => present; } # Start oracleasm service after the oracleasm kernel package is installed. service { 'oracleasm': ensure => running, enable => true, status => '/sbin/service oracleasm status | grep -q yes', require => Package["oracleasm-${::kernelrelease}"], } } # override ntp config file to use -x flag class oracledb::rac::ntpd inherits base::ntp { File['/etc/sysconfig/ntpd'] { source => 'puppet:///oracledb/etc/sysconfig/ntpd', } } class oracledb::rac::ntirety inherits user::ntirety { include group::asmadmin include group::asmdba include group::asmoper include group::oinstall User['ntirety'] { groups => ['asmadmin','asmdba','asmoper','oinstall'], } } class oracledb::rac::oracle-user inherits user::oracle { include group::oinstall include group::asmdba User['oracle'] { gid => 'dba', groups => ['oinstall','asmdba'], require => [ Group['dba'], Group['asmdba'], Group['oinstall'] ], } File['/u01/app/oracle'] { mode => '0640', } file { '/u01/app/oracle/.ssh': ensure => directory, mode => '0640', owner => 'oracle', require => [ User['oracle'], File['/u01/app/oracle'] ]; '/u02/app': ensure => directory, mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02'] ]; '/u02/app/oracle': ensure => directory, mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app'] ]; '/u02/app/oracle/cfgtoollogs': ensure => directory, mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app/oracle'] ]; '/u02/app/oracle/product': ensure => directory, mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app/oracle'] ]; '/u02/app/oracle/product/11.2.0': ensure => directory, mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app/oracle/product'] ]; '/u02/app/oracle/product/11.2.0/db_1': ensure => directory, mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app/oracle/product/11.2.0'] ]; } } # add grid to dba group class oracledb::rac::grid-user inherits user::grid { include group::dba User['grid'] { gid => 'dba', } } class oracledb::rac::users inherits user::virtual { include oracledb::ntirety include oracledb::rac::ntirety include oracledb::rac::v11g include oracledb::rac::grid-user include oracledb::rac::oracle-user file { '/etc/profile.d/oraclegrid.sh': ensure => file, source => 'puppet:///oracledb/etc/profile.d/oraclegrid.sh', mode => '0755', owner => 'root', group => 'root'; '/u01/11.2.0/grid/.ssh': ensure => directory, mode => '0640', owner => 'grid', require => [ File['/u01/11.2.0/grid'], User['grid'] ]; '/u01/app/oraInventory': ensure => directory, mode => '0664', owner => 'grid', group => 'oinstall', require => [ File['/u01/app'], User['grid'], Group['oinstall'] ]; } # TODO: separate into oracledb::grid? k5login { '/u01/11.2.0/grid/.k5login': purge => true, require => File['/u01/11.2.0/grid'], principals => $oracledb::ntirety::ntiretyusers, } } class oracledb::rac::v11g inherits oracledb::v11g { Base::Sysctl['net.core.rmem_default'] { ensure => '4194304' } Base::Sysctl['net.core.rmem_max'] { ensure => '4194304' } } class oracledb::rac::root inherits user::root::sa-crc-plus-sa-non-crc { include oracledb::ntirety K5login['/root/.k5login'] { principals +> $oracledb::ntirety::ntiretyusers, } } # Override default for messages log to set group => dba. class oracledb::rac::newsyslog inherits base::newsyslog { Base::Newsyslog::Config['messages'] { log_group => 'dba', require => Group['dba'], } }