diff --git a/manifests/directories.pp b/manifests/directories.pp new file mode 100644 index 0000000000000000000000000000000000000000..5c322663fe24a75c434fce10d51586c7420d4002 --- /dev/null +++ b/manifests/directories.pp @@ -0,0 +1,13 @@ +# additional directories usually needed +class oracledb::directories { + file { + [ '/var/opt/oracle', + '/u02', + '/u03', + '/u01/app/rman', ]: + ensure => directory, + owner => 'oracle', + group => 'dba', + mode => '0770'; + } +} diff --git a/manifests/init.pp b/manifests/init.pp index 76e879b534ba560262b8582b060aa72368b10202..9e8921454f9ce244926e00492f8f435319de7e8f 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -2,220 +2,109 @@ # Handles an Oracle database system. All of our Oracle databases are run # essentially the same way and this module contains all the standard bits. -# TODO: parameterized class for Oracle versions (10 and 11). class oracledb { - # TODO: change to include each individual class, no commas - include compatlibs, - group::dba, - base::libstdc, - oracledb::directories, - oracledb::packages, - oracledb::oracleusers, - user::ntirety, - user::oracle + include compatlibs + include group::dba + include base::libstdc + include oracledb::directories + include oracledb::packages + include oracledb::oracleusers + include user::ntirety + include user::oracle + if ($::operatingsystem != 'redhat') { + fail ('Oracle only runs on Red Hat!') + } - # TODO: since this is only RH specific, just fail on non-RH instead of large case statement. - case $operatingsystem { - 'redhat': { - case $lsbmajdistrelease { - # rhel4 only required packages - # need to add openmotif . - '4': { - # TODO: switch to array of packages - package { - 'glibc-kernheaders': ensure => present; - 'gnome-libs': ensure => present; - 'openmotif21': ensure => present; - 'pdksh': ensure => present; - 'xorg-x11-deprecated-libs': ensure => present; - 'xscreensaver': ensure => present; - } - # TODO: verify <name>.ARCH doesn't work on RHEL4 with puppet now - # install i386 RPM - exec { - ' oracle 64 bit server required compat-db': - command => 'up2date --arch=i386 compat-db', - unless => "rpm -q --qf \"%{ARCH}\n\" compat-db | grep -q i386"; - 'oracle 64bit server required glibc-devel': - command => 'up2date --arch=i386 glibc-devel', - unless => "rpm -q --qf \"%{ARCH}\n\" glibc-devel | grep -q i386"; - 'oracle 64bit server required libaio': - command => 'up2date --arch=i386 libaio', - unless => "rpm -q --qf \"%{ARCH}\n\" libaio | grep -q i386"; - } - # TODO: verify this is needed on all RHEL versions - might not be needed on RHEL5/6 - # TODO: verify this should be different than RHEL5/6 - goal: unify - base::sysctl { "net.ipv4.ip_local_port_range": ensure => "1024 65000" } - - # Override limits.conf to increase stack size and nofiles. - file { '/etc/security/limits.conf': - source => $architecture ? { - 'x86_64' => "puppet:///oracledb/etc/limits.conf.$architecture", - default => 'puppet:///oracledb/etc/limits.conf', - } - } - } - ## this is for rhel5 - '5': { - include oracledb::rhel5 - file {'/etc/security/limits.conf': - source => "puppet:///oracledb/etc/limits.conf.rhel5" - } - base::sysctl { "net.ipv4.ip_local_port_range": ensure => "9000 65500" } - } - } - } - } + case $::lsbmajdistrelease { + ## rhel4 + '4': { + package { + [ 'glibc-kernheaders', + 'gnome-libs', + 'openmotif21', + 'pdksh', + 'xorg-x11-deprecated-libs', + 'xscreensaver', ]: + ensure => present; + } + + # Old workaround for up2date i386 arch packages on x86_64. + exec { + ' oracle 64 bit server required compat-db': + command => 'up2date --arch=i386 compat-db', + unless => "rpm -q --qf \"%{ARCH}\n\" compat-db | grep -q i386"; + 'oracle 64bit server required glibc-devel': + command => 'up2date --arch=i386 glibc-devel', + unless => "rpm -q --qf \"%{ARCH}\n\" glibc-devel | grep -q i386"; + 'oracle 64bit server required libaio': + command => 'up2date --arch=i386 libaio', + unless => "rpm -q --qf \"%{ARCH}\n\" libaio | grep -q i386"; + } - base::sysctl { - 'kernel.shmmax': ensure => '4294967295'; - 'kernel.sem': ensure => '250 32000 100 128'; - 'kernel.shmall': ensure => '2097152'; - 'kernel.shmmni': ensure => '4096'; - 'fs.file-max': ensure => '65536'; -# 'net.ipv4.ip_local_port_range': ensure => '1024 65000'; - 'net.core.rmem_default': ensure => '262144'; - 'net.core.rmem_max': ensure => '262144'; - 'net.core.wmem_default': ensure => '262144'; - 'net.core.wmem_max': ensure => '262144'; - } + base::sysctl { 'net.ipv4.ip_local_port_range': ensure => '1024 65000' } - # Drop in iptables rules to allow connections in to the listeners - #iptables::fragment { 'oracle-listeners': ensure => present } - - base::iptables::rule { 'oracle-listeners': - protocol => 'tcp', - source => [ '171.64.0.0/14', - '172.24.0.0/14', - '192.168.220.96/19', - '192.168.15.0/24'], - port => ['1533','1534','1535','1568','1542'], + # Override limits.conf to increase stack size and nofiles. + if ($::architecture == 'x86_64') { + $limitsfile = 'limits.conf.x86_64' + } else { + $limitsfile = 'limits.conf' + } + file { '/etc/security/limits.conf': + source => "puppet:///oracledb/etc/$limitsfile", + } } - - # init script and filter-syslog rules for oracle - file { - '/etc/init.d/oracle': - source => 'puppet:///oracledb/oracle.init', - mode => 755, - notify => Exec['chkconfig oracle']; - '/etc/filter-syslog/oracle': - source => 'puppet:///oracledb/filter-syslog'; + ## rhel5 + '5': { + include oracledb::rhel5 + + file {'/etc/security/limits.conf': + source => 'puppet:///oracledb/etc/limits.conf.rhel5' + } + base::sysctl { 'net.ipv4.ip_local_port_range': ensure => '9000 65500' } } - # TODO: use service - don't ensure running, just enabled - exec { 'chkconfig oracle': - command => 'chkconfig --add oracle', - refreshonly => true, + default: { + # TODO: confirm EL6 is supported, and if so, what package and kernel + # params are needed. } + } - # TODO: Cleanup leftover bits + base::sysctl { + 'kernel.shmmax': ensure => '4294967295'; + 'kernel.sem': ensure => '250 32000 100 128'; + 'kernel.shmall': ensure => '2097152'; + 'kernel.shmmni': ensure => '4096'; + 'fs.file-max': ensure => '65536'; + 'net.core.rmem_default': ensure => '262144'; + 'net.core.rmem_max': ensure => '262144'; + 'net.core.wmem_default': ensure => '262144'; + 'net.core.wmem_max': ensure => '262144'; + } - # Override limits.conf to increase stack size and nofiles. - - #file { '/etc/security/limits.conf': - # source => $architecture ? { - # 'x86_64' => "puppet:///oracledb/etc/limits.conf.$architecture", - # default => 'puppet:///oracledb/etc/limits.conf', - # } - #} -} + base::iptables::rule { 'oracle-listeners': + protocol => 'tcp', + source => [ '171.64.0.0/14', + '172.24.0.0/14', + '192.168.220.96/19', + '192.168.15.0/24'], + port => ['1533','1534','1535','1568','1542'], + } -# TODO: separate out into own file because: -# - it doesn't inherit/override from another class -# - and it is used outside this one class (well, not true here) -# - or if it is longer than ~10 lines -# -# It is all about logical separation. -# Is it easier to understand if you separate it into another file? + # init script and filter-syslog rules for oracle + file { + '/etc/init.d/oracle': + source => 'puppet:///oracledb/oracle.init', + mode => '0755', + notify => Exec['chkconfig oracle']; + '/etc/filter-syslog/oracle': + source => 'puppet:///oracledb/filter-syslog'; + } -class oracledb::packages { - # TODO: convert to array of packages - package { - 'binutils': ensure => present; - 'control-center': ensure => present; - 'gcc': ensure => present; - 'gcc-c++': ensure => present; - 'glibc': ensure => present; - 'glibc-common': ensure => present; - 'glibc-devel': ensure => present; - 'glibc-headers': ensure => present; - 'libgcc': ensure => present; - 'libaio': ensure => present; - 'make': ensure => present; -# 'pdksh': ensure => present; - 'sysstat': ensure => present; -# 'stanford-TDPO': ensure => present; -# 'TDP-Oracle': ensure => present; -# 'TDP-Oracle.Utility': ensure => present; - 'xorg-x11-xauth': ensure => present; - } -## tpdo rpms exist in rhel4 and rhel5. Need to create 64bits tdpo rpms for rhel6 -## install tdpo by hand in rhel6 - case $lsbmajdistrelease { - "4","5" : { - package { [ - 'stanford-TDPO', - 'TDP-Oracle', - 'TDP-Oracle.Utility' - ]: - ensure => present, - } - } - # rhel6 will give you an error if tdp BIN file not installed - default: { - exec { 'check el6 tdp bin installed': - command => 'echo TDP is not installed! Install it by hand from \ - /afs/ir/product/storage/TDPO_LINUX_LATEST', - unless => 'ls /opt/tivoli/tsm/client/oracle/properties/version/TSM_Data_Protection_Oracle.cmptag', - } - } - } -} -# TODO: separate file for this class -# TODO: use array for files -class oracledb::directories { - # additional directories usually needed - file { - '/var/opt/oracle': - ensure => directory, - owner => 'oracle', - group => 'dba', - mode => 770; - '/u02': - ensure => directory, - owner => 'oracle', - group => 'dba', - mode => 770; - '/u03': - ensure => directory, - owner => 'oracle', - group => 'dba', - mode => 770; - '/u01/app/rman': - ensure => directory, - owner => 'oracle', - group => 'dba', - mode => 770 - } -} + service { 'oracle': + enable => true, + require => File['/etc/init.d/oracle'], + } -# TODO: separate out to another file -class oracledb::oracleusers { - include oracledb::ntirety -# Standard sudoers file for Oracle DBAs. - # TODO: long term strategy is to use /etc/sudoers.d fragments - base::textline { - '%dba ALL = NOPASSWD: /usr/bin/dsmc q se': - ensure => "/etc/sudoers"; - 'oracle ALL= NOPASSWD: /usr/bin/tdpoconf PassWord *': - escaped_name => 'oracle ALL= NOPASSWD: /usr/bin/tdpoconf PassWord \*', - ensure => "/etc/sudoers"; - } +} - k5login { - '/u01/app/oracle/.k5login': - purge => true, - principals => $oracledb::ntirety::ntiretyusers, - } -} \ No newline at end of file diff --git a/manifests/local.pp b/manifests/local.pp index a36a5f5d5293e4907e680324d81e28b0c042d0df..8f2e758ba1c60a7d062d6494cd2e162e0d0651c3 100644 --- a/manifests/local.pp +++ b/manifests/local.pp @@ -4,47 +4,30 @@ # TODO: look into using a parameterized class here instead of override class oracledb::local::oracleuser inherits user::oracle { - File["/u01"] { ensure => "/opt/u01" } - file { - "/opt/u01": - ensure => directory, - owner => "oracle", - group => "dba"; - "/opt/u01/app": - ensure => directory, - owner => "oracle", - group => "dba"; - "/opt/u01/app/oracle": - ensure => directory, - owner => "oracle", - group => "dba", - } - -} -# TODO combine with oracledb::local -class oracledb::local::directories inherits oracledb::directories { - File["/u02"] { ensure => "/opt/u02" } - File["/u03"] { ensure => "/opt/u03" } - file { - "/opt/u01/app/rman": - ensure => directory, - owner => "oracle", - group => "dba", - mode => 770; - "/opt/u02": - ensure => directory, - owner => "oracle", - group => "dba", - mode => 770; - "/opt/u03": - ensure => directory, - owner => "oracle", - group => "dba", - mode => 770, - } + File['/u01'] { ensure => '/opt/u01' } + file { + [ '/opt/u01', + '/opt/u01/app', + '/opt/u01/app/oracle', ]: + ensure => directory, + owner => 'oracle', + group => 'dba'; + } } -class oracledb::local inherits oracledb { - include oracledb::local::oracleuser, - oracledb::local::directories -} \ No newline at end of file +class oracledb::local inherits oracledb::directories { + include oracledb + include oracledb::local::oracleuser + + File['/u02'] { ensure => '/opt/u02' } + File['/u03'] { ensure => '/opt/u03' } + file { + [ '/opt/u01/app/rman', + '/opt/u02', + '/opt/u03', ]: + ensure => directory, + owner => 'oracle', + group => 'dba', + mode => '0770', + } +} diff --git a/manifests/ntirety.pp b/manifests/ntirety.pp index 282669dfe963dc670ff8535d36b29552c32ec2fc..3b6478cde1e68c709bc1e79db02f3281687a1605 100644 --- a/manifests/ntirety.pp +++ b/manifests/ntirety.pp @@ -1,24 +1,24 @@ # define one var to be used in .k5logins class oracledb::ntirety { $ntiretyusers = [ - #'cgarcia5@stanford.edu', # win only - 'chapmci1@stanford.edu', - 'dcampoy@stanford.edu', - 'dwinsor@stanford.edu', - 'fabianek@stanford.edu', - 'hodgkins@stanford.edu', - 'jccorey@stanford.edu', - #'jhaas1@stanford.edu', # win only - 'jgims@stanford.edu', - 'jhussey@stanford.edu', - 'johnr2@stanford.edu', - 'nstha78@stanford.edu', - 'ntwingat@stanford.edu', - 'scosta3@stanford.edu', - 'swilkins@stanford.edu', - #'terriew@stanfor.edu', # win only - 'tiffanyv@stanford.edu', - 'vkalyana@stanford.edu', - #'wsheffie@stanford.edu', # win only - ] -} \ No newline at end of file + #'cgarcia5@stanford.edu', # win only + 'chapmci1@stanford.edu', + 'dcampoy@stanford.edu', + 'dwinsor@stanford.edu', + 'fabianek@stanford.edu', + 'hodgkins@stanford.edu', + 'jccorey@stanford.edu', + #'jhaas1@stanford.edu', # win only + 'jgims@stanford.edu', + 'jhussey@stanford.edu', + 'johnr2@stanford.edu', + 'nstha78@stanford.edu', + 'ntwingat@stanford.edu', + 'scosta3@stanford.edu', + 'swilkins@stanford.edu', + #'terriew@stanfor.edu', # win only + 'tiffanyv@stanford.edu', + 'vkalyana@stanford.edu', + #'wsheffie@stanford.edu', # win only + ] +} diff --git a/manifests/oracleusers.pp b/manifests/oracleusers.pp new file mode 100644 index 0000000000000000000000000000000000000000..55efc0877c41fc036432323881d9028c15e31c88 --- /dev/null +++ b/manifests/oracleusers.pp @@ -0,0 +1,19 @@ +# oracle users +class oracledb::oracleusers { + include oracledb::ntirety + + # Standard sudoers file for Oracle DBAs. + # TODO: long term strategy is to use /etc/sudoers.d fragments + base::textline { + '%dba ALL = NOPASSWD: /usr/bin/dsmc q se': + ensure => '/etc/sudoers'; + 'oracle ALL= NOPASSWD: /usr/bin/tdpoconf PassWord *': + ensure => '/etc/sudoers', + escaped_name => 'oracle ALL= NOPASSWD: /usr/bin/tdpoconf PassWord \*'; + } + + k5login { '/u01/app/oracle/.k5login': + purge => true, + principals => $oracledb::ntirety::ntiretyusers, + } +} diff --git a/manifests/packages.pp b/manifests/packages.pp new file mode 100644 index 0000000000000000000000000000000000000000..a8f0582532ee78bac00d0e4dac38d4d981ca636d --- /dev/null +++ b/manifests/packages.pp @@ -0,0 +1,40 @@ +# oracledb packages +class oracledb::packages { + package { + [ 'binutils', + 'control-center', + 'gcc', + 'gcc-c++', + 'glibc', + 'glibc-common', + 'glibc-devel', + 'glibc-headers', + 'libgcc', + 'libaio', + 'make', + 'sysstat', + 'xorg-x11-xauth', ]: + ensure => present; + } + ## TDPO rpms exist only for el4 and 5. Only BIN exists for el6, so install + ## by hand. + case $::lsbmajdistrelease { + '4','5' : { + package { [ + 'stanford-TDPO', + 'TDP-Oracle', + 'TDP-Oracle.Utility' + ]: + ensure => present, + } + } + # rhel6 will give you an error if tdp BIN file not installed + default: { + exec { 'check el6 tdp bin installed': + command => 'echo TDP is not installed! Install it by hand from \ + /afs/ir/product/storage/TDPO_LINUX_LATEST', + unless => 'ls /opt/tivoli/tsm/client/oracle/properties/version/TSM_Data_Protection_Oracle.cmptag', + } + } + } +} diff --git a/manifests/rac.pp b/manifests/rac.pp index 24971fcd32051f5f09f272ea257068e6c49ab10a..3b108b36728f57dabdaf286bf755839653c5c829 100644 --- a/manifests/rac.pp +++ b/manifests/rac.pp @@ -37,7 +37,7 @@ ## wallet setup # base::wallet { "unix-${hostname}-grid-ssh-rsa": # path => '/u01/11.2.0/grid/.ssh/id_rsa', -# owner => grid, +# owner => grid, # group => oinstall, # type => "file", # mode => 600, @@ -47,13 +47,13 @@ # path => '/u01/app/oracle/.ssh/id_rsa', # owner => oracle, # group => oinstall, -# type => "file", +# 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", +# file { '/etc/modprobe.d/bonding.conf': +# source => 'puppet:///CLIENT/etc/modprobe.d/bonding.conf', # } @@ -66,8 +66,8 @@ class oracledb::rac inherits oracledb::rhel5 { include powerpath include base::ssh::pubkey - if (! ( $operatingsystem == "redhat" and $lsbmajdistrelease == '5' )) { - fail "Must be running RHEL5 to use RAC" + 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. @@ -108,39 +108,40 @@ class oracledb::rac inherits oracledb::rhel5 { require => Group['dba'], } - file { "/etc/oraInst.loc": - source => "puppet:///oracledb/etc/oraInst.loc", + file { '/etc/oraInst.loc': + source => 'puppet:///oracledb/etc/oraInst.loc', require => User['oracle'], owner => 'root', - mode => 0644; + mode => '0644'; } # link in sqlplus to /usr/local/bin - file { "/usr/local/bin/sqlplus": + file { '/usr/local/bin/sqlplus': ensure => link, - target => "/u01/app/oracle/product/10.2.0/db_1/bin/sqlplus"; + 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-'", + 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": ensure => present; - "oracleasm-support": ensure => present; - "oracleasm-${kernelrelease}": ensure => present; - "oracleasmlib": ensure => present; + [ 'cvuqdisk', + 'oracleasm-support', + "oracleasm-${::kernelrelease}", + 'oracleasmlib', ]: + ensure => present; } } # 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", + source => 'puppet:///oracledb/etc/sysconfig/ntpd', } } @@ -150,7 +151,7 @@ class oracledb::rac::ntirety inherits user::ntirety { include group::asmoper include group::oinstall - User["ntirety"] { + User['ntirety'] { groups => ['asmadmin','asmdba','asmoper','oinstall'], } } @@ -159,55 +160,55 @@ class oracledb::rac::oracle-user inherits user::oracle { include group::oinstall include group::asmdba - User["oracle"] { + User['oracle'] { gid => 'dba', groups => ['oinstall','asmdba'], require => [ Group['dba'], Group['asmdba'], Group['oinstall'] ], } File['/u01/app/oracle'] { - mode => 0640 + mode => '0640', } file { '/u01/app/oracle/.ssh': ensure => directory, - mode => 0640, + mode => '0640', owner => 'oracle', require => [ User['oracle'], File['/u01/app/oracle'] ]; '/u02/app': ensure => directory, - mode => 0664, + mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02'] ]; '/u02/app/oracle': ensure => directory, - mode => 0664, + mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app'] ]; '/u02/app/oracle/cfgtoollogs': ensure => directory, - mode => 0664, + mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app/oracle'] ]; '/u02/app/oracle/product': ensure => directory, - mode => 0664, + 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, + 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, + mode => '0664', owner => 'oracle', group => 'oinstall', require => [ Group['oinstall'], User['oracle'], File['/u02/app/oracle/product/11.2.0'] ]; @@ -233,18 +234,18 @@ class oracledb::rac::users inherits user::virtual { file { '/etc/profile.d/oraclegrid.sh': ensure => file, - source => "puppet:///oracledb/etc/profile.d/oraclegrid.sh", - mode => 0755, + source => 'puppet:///oracledb/etc/profile.d/oraclegrid.sh', + mode => '0755', owner => 'root', group => 'root'; '/u01/11.2.0/grid/.ssh': ensure => directory, - mode => 0640, + mode => '0640', owner => 'grid', require => [ File['/u01/11.2.0/grid'], User['grid'] ]; '/u01/app/oraInventory': ensure => directory, - mode => 0664, + mode => '0664', owner => 'grid', group => 'oinstall', require => [ File['/u01/app'], User['grid'], Group['oinstall'] ]; @@ -259,14 +260,14 @@ class oracledb::rac::users inherits user::virtual { } class oracledb::rac::v11g inherits oracledb::v11g { - Base::Sysctl["net.core.rmem_default"] { ensure => "4194304" } - Base::Sysctl["net.core.rmem_max"] { ensure => "4194304" } + 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"] { + K5login['/root/.k5login'] { principals +> $oracledb::ntirety::ntiretyusers, } -} \ No newline at end of file +} diff --git a/manifests/rhel5.pp b/manifests/rhel5.pp index 550dad0fa7e0370dcba200d1e5ec01c0126e2f66..c739ff8ea533f9dea9d33a2e36a8fb80be14c216 100644 --- a/manifests/rhel5.pp +++ b/manifests/rhel5.pp @@ -1,45 +1,40 @@ -# -# This is for rhel5 oracle10g -# -# - class oracledb::rhel5 inherits oracledb { - if (! ( $operatingsystem == "redhat" and $lsbmajdistrelease == '5' )) { - fail "Must be running RHEL5 to use oracledb::rhel5 class" - } - - package { - 'gnome-screensaver': ensure => present; - 'libgnome': ensure => present; - 'kernel-headers': ensure => present; - 'libFS': ensure => present; - 'libgomp': ensure => present; - 'pdksh': ensure => present; - 'xorg-x11-utils': ensure => present; - } - # TODO: verify if you can use <name>.ARCH instead of exec. - exec { - ' R5.5 oracle 64 bit server required compat-db ': - command => 'yum -y install compat-db.i386 ', - unless => "rpm -q --qf \"%{ARCH}\n\" compat-db | grep -q i386"; - ' R5.5 oracle 64bit server required glibc-devel ': - command => 'yum -y install glibc-devel.i386 ', - unless => "rpm -q --qf \"%{ARCH}\n\" glibc-devel | grep -q i386"; - ' R5.5 oracle 64bit server required libaio': - command => 'yum -y install libaio.i386', - unless => "rpm -q --qf \"%{ARCH}\n\" libaio | grep -q i386"; - ' R5.5 oracle 64 bit server required libxTst ': - command => 'yum -y install libXtst.i386 ', - unless => "rpm -q --qf \"%{ARCH}\n\" libXtst | grep -q i386"; + if (! ( $::operatingsystem == 'redhat' and $::lsbmajdistrelease == '5' )) { + fail 'Must be running RHEL5 to use oracledb::rhel5 class' + } - } + package { + [ 'gnome-screensaver', + 'libgnome', + 'kernel-headers', + 'libFS', + 'libgomp', + 'pdksh', + 'xorg-x11-utils', ]: + ensure => present; + } + # TODO: verify if you can use <name>.ARCH instead of exec. + exec { + ' R5.5 oracle 64 bit server required compat-db ': + command => 'yum -y install compat-db.i386 ', + unless => 'rpm -q --qf \'%{ARCH}\n\' compat-db | grep -q i386'; + ' R5.5 oracle 64bit server required glibc-devel ': + command => 'yum -y install glibc-devel.i386 ', + unless => 'rpm -q --qf \'%{ARCH}\n\' glibc-devel | grep -q i386'; + ' R5.5 oracle 64bit server required libaio': + command => 'yum -y install libaio.i386', + unless => 'rpm -q --qf \'%{ARCH}\n\' libaio | grep -q i386'; + ' R5.5 oracle 64 bit server required libxTst ': + command => 'yum -y install libXtst.i386 ', + unless => 'rpm -q --qf \'%{ARCH}\n\' libXtst | grep -q i386'; + } - # setup oracle sources for ASM packages (needed for RAC) - file { '/etc/yum.repos.d/oracle.repo': - source => "puppet:///modules/base/rpm/oracle-EL5.repo", - } - base::rpm::import { 'oracle-rpmkey': - url => "http://yum.stanford.edu/RPM-GPG-KEY-oracle-el5", - signature => gpg-pubkey-1e5e0159-464d0428, - } -} \ No newline at end of file + # setup oracle sources for ASM packages (needed for RAC) + file { '/etc/yum.repos.d/oracle.repo': + source => 'puppet:///modules/base/rpm/oracle-EL5.repo', + } + base::rpm::import { 'oracle-rpmkey': + url => 'http://yum.stanford.edu/RPM-GPG-KEY-oracle-el5', + signature => 'gpg-pubkey-1e5e0159-464d0428', + } +} diff --git a/manifests/tivoli.pp b/manifests/tivoli.pp index 733cec31f4a3e5b77cacffac4b0be4508191170a..dd17a3f767d562759c845ba69829941868864832 100644 --- a/manifests/tivoli.pp +++ b/manifests/tivoli.pp @@ -4,40 +4,39 @@ class oracledb::tivoli { include compatlibs include base::libstdc - + package { [ - 'TIVsm-API64', + 'TIVsm-API64', 'TIVsm-BA' - ]: + ]: ensure => installed; - } - + file { '/opt/tivoli/tsm/client/ba/bin/dsm.sys': - target => '/etc/tivoli/dsm.sys', ensure => link, + target => '/etc/tivoli/dsm.sys', require => [ Package['TIVsm-API64'], Package['TIVsm-BA'] ]; '/opt/tivoli/tsm/client/ba/bin/dsm.opt': - target => '/etc/tivoli/dsm.opt', ensure => link, + target => '/etc/tivoli/dsm.opt', require => [ Package['TIVsm-API64'], Package['TIVsm-BA'] ]; '/opt/tivoli/tsm/client/ba/bin/inclexcl': - target => '/etc/tivoli/inclexcl', ensure => link, + target => '/etc/tivoli/inclexcl', require => [ Package['TIVsm-API64'], Package['TIVsm-BA'] ]; } # This is required for RMAN backups. Add dsm.sys under api. file { '/opt/tivoli/tsm/client/api/bin64/dsm.sys': - target => '/etc/tivoli/dsm.sys', ensure => link, + target => '/etc/tivoli/dsm.sys', require => [ Package['TIVsm-API64'], Package['TIVsm-BA'] ], } # Install the init script. file { '/etc/init.d/dsmc': source => 'puppet:///tivoli_client/init.dsmc.RedHat', - mode => 775, + mode => '0775', notify => Exec['add dsmc'], } exec { 'add dsmc': @@ -46,12 +45,12 @@ class oracledb::tivoli { unless => '/sbin/chkconfig --list dsmc', } - tivoli_client::inclexcl { "$fqdn": ensure => present } + tivoli_client::inclexcl { $::fqdn: ensure => present } # Ensure dsmc is running. service { 'dsmc': - require => File['/etc/init.d/dsmc'], ensure => running, + require => File['/etc/init.d/dsmc'], hasstatus => false, status => 'pidof dsmc || test ! -f /etc/adsm/TSM.PWD', } @@ -60,5 +59,5 @@ class oracledb::tivoli { file { '/etc/tivoli': ensure => directory } # Call the defintion file. - tivoli_client::config { "$fqdn": nodename => $hostname } -} \ No newline at end of file + tivoli_client::config { $::fqdn: nodename => $::hostname } +} diff --git a/manifests/v11g.pp b/manifests/v11g.pp index 1e6ec07be4abdc43d11524f34735d2b0ee00a88b..a5b19182e6b29b01c15d8c6aaab91f5656e8fd67 100644 --- a/manifests/v11g.pp +++ b/manifests/v11g.pp @@ -1,62 +1,66 @@ # -# This is for rhel5 oracle11g -# -# +# This is for rhel5 oracle11g # TODO: should be handled via parameterized class class oracledb::v11g inherits oracledb { - case $operatingsystem { - 'redhat': { - base::sysctl {'fs.aio-max-nr': ensure => 1048576 } - Base::Sysctl['net.core.wmem_max'] { ensure => 1048576 } - Base::Sysctl['net.core.rmem_max'] { ensure => 4194304 } - Base::Sysctl['fs.file-max'] { ensure => 6815744 } - package { [ - 'openmotif', - 'elfutils-libelf-devel', - 'libaio-devel', - ]: + if ( $::operatingsystem != 'redhat') { + fail 'Oracle only runs on Red Hat!' + } + + base::sysctl {'fs.aio-max-nr': ensure => 1048576 } + Base::Sysctl['net.core.wmem_max'] { ensure => 1048576 } + Base::Sysctl['net.core.rmem_max'] { ensure => 4194304 } + Base::Sysctl['fs.file-max'] { ensure => 6815744 } + + package { [ + 'openmotif', + 'elfutils-libelf-devel', + 'libaio-devel', + ]: ensure => installed, - } - case $lsbmajdistrelease { - "6" : { - package { [ - # Ntirety required packages - 'compat-libstdc++-33.i686', - 'glibc-devel.i686', - 'ksh', - 'libaio.i686', - 'libstdc++.i686', - 'numactl-devel', - 'xorg-x11-utils', - ]: - ensure => installed, - } - base::sysctl {'net.ipv4.ip_local_port_range': - ensure => "9000 65500" - } - file {'/etc/security/limits.conf': - source => "puppet:///oracledb/etc/limits.conf.rhel6" - } - } - "5" : { - package { [ - 'unixODBC', - 'unixODBC-devel', - ]: + } + + case $::lsbmajdistrelease { + '6' : { + package { [ + # Ntirety required packages + 'compat-libstdc++-33.i686', + 'glibc-devel.i686', + 'ksh', + 'libaio.i686', + 'libstdc++.i686', + 'numactl-devel', + 'xorg-x11-utils', + ]: ensure => installed, - } - Base::Sysctl["net.core.rmem_default"] { ensure => "4194304" } - Base::Sysctl['net.ipv4.ip_local_port_range'] { ensure => "9000 65500" } - } - "4": { - package { 'xorg-x11': ensure => present } - Base::Sysctl['net.ipv4.ip_local_port_range'] { ensure => "9000 65500" } - } + } + base::sysctl {'net.ipv4.ip_local_port_range': + ensure => '9000 65500' + } + file {'/etc/security/limits.conf': + source => 'puppet:///oracledb/etc/limits.conf.rhel6' + } + } + '5' : { + package { [ + 'unixODBC', + 'unixODBC-devel', ]: + ensure => installed, + } + + Base::Sysctl['net.core.rmem_default'] { ensure => '4194304' } + Base::Sysctl['net.ipv4.ip_local_port_range'] { + ensure => '9000 65500' + } + } + '4': { + package { 'xorg-x11': ensure => present } + Base::Sysctl['net.ipv4.ip_local_port_range'] { + ensure => '9000 65500' } } - 'default': { - fail ("oracle runs only on RHEL") + default: { + fail 'Unrecognized RHEL release!' } - } -} \ No newline at end of file + } +}