installdb.pp 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. # == Class: oradb::installdb
  2. #
  3. # The databaseType value should contain only one of these choices.
  4. # EE : Enterprise Edition
  5. # SE : Standard Edition
  6. # SEONE : Standard Edition One
  7. #
  8. #
  9. define oradb::installdb(
  10. $version = undef,
  11. $file = undef,
  12. $databaseType = 'SE',
  13. $oraInventoryDir = undef,
  14. $oracleBase = undef,
  15. $oracleHome = undef,
  16. $createUser = true,
  17. $user = 'oracle',
  18. $userBaseDir = '/home',
  19. $group = 'dba',
  20. $group_install = 'oinstall',
  21. $group_oper = 'oper',
  22. $downloadDir = '/install',
  23. $zipExtract = true,
  24. $puppetDownloadMntPoint = undef,
  25. $remoteFile = true,
  26. )
  27. {
  28. # check if the oracle software already exists
  29. $found = oracle_exists( $oracleHome )
  30. if $found == undef {
  31. $continue = true
  32. } else {
  33. if ( $found ) {
  34. $continue = false
  35. } else {
  36. notify {"oradb::installdb ${oracleHome} does not exists":}
  37. $continue = true
  38. }
  39. }
  40. if ( $continue ) {
  41. $execPath = "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:"
  42. if $puppetDownloadMntPoint == undef {
  43. $mountPoint = "puppet:///modules/oradb/"
  44. } else {
  45. $mountPoint = $puppetDownloadMntPoint
  46. }
  47. if $oraInventoryDir == undef {
  48. $oraInventory = "${oracleBase}/oraInventory"
  49. } else {
  50. $oraInventory = "${oraInventoryDir}/oraInventory"
  51. }
  52. oradb::utils::structure{"oracle structure ${version}":
  53. oracle_base_home_dir => $oracleBase,
  54. ora_inventory_dir => $oraInventory,
  55. os_user => $user,
  56. os_group => $group,
  57. os_group_install => $group_install,
  58. os_group_oper => $group_oper,
  59. download_dir => $downloadDir,
  60. log_output => true,
  61. user_base_dir => $userBaseDir,
  62. create_user => $createUser,
  63. }
  64. if ( $zipExtract ) {
  65. # In $downloadDir, will Puppet extract the ZIP files or is this a pre-extracted directory structure.
  66. if ( $version == '11.2.0.1' or $version == '12.1.0.1' ) {
  67. $file1 = "${file}_1of2.zip"
  68. $file2 = "${file}_2of2.zip"
  69. }
  70. if ( $version == '11.2.0.3' or $version == '11.2.0.4' ) {
  71. $file1 = "${file}_1of7.zip"
  72. $file2 = "${file}_2of7.zip"
  73. }
  74. if $remoteFile == true {
  75. file { "${downloadDir}/${file1}":
  76. ensure => present,
  77. source => "${mountPoint}/${file1}",
  78. mode => '0775',
  79. owner => $user,
  80. group => $group,
  81. require => Oradb::Utils::Structure["oracle structure ${version}"],
  82. before => Exec["extract ${downloadDir}/${file1}"],
  83. }
  84. # db file 2 installer zip
  85. file { "${downloadDir}/${file2}":
  86. ensure => present,
  87. source => "${mountPoint}/${file2}",
  88. mode => '0775',
  89. owner => $user,
  90. group => $group,
  91. require => File["${downloadDir}/${file1}"],
  92. before => Exec["extract ${downloadDir}/${file2}"]
  93. }
  94. $source = $downloadDir
  95. } else {
  96. $source = $mountPoint
  97. }
  98. exec { "extract ${downloadDir}/${file1}":
  99. command => "unzip -o ${source}/${file1} -d ${downloadDir}/${file}",
  100. timeout => 0,
  101. logoutput => false,
  102. path => $execPath,
  103. user => $user,
  104. group => $group,
  105. require => Oradb::Utils::Structure["oracle structure ${version}"],
  106. before => Exec["install oracle database ${title}"],
  107. }
  108. exec { "extract ${downloadDir}/${file2}":
  109. command => "unzip -o ${source}/${file2} -d ${downloadDir}/${file}",
  110. timeout => 0,
  111. logoutput => false,
  112. path => $execPath,
  113. user => $user,
  114. group => $group,
  115. require => Exec["extract ${downloadDir}/${file1}"],
  116. before => Exec["install oracle database ${title}"],
  117. }
  118. }
  119. oradb::utils::orainst{"database orainst ${version}":
  120. ora_inventory_dir => $oraInventory,
  121. os_group => $group_install,
  122. }
  123. if ! defined(File["${downloadDir}/db_install_${version}.rsp"]) {
  124. file { "${downloadDir}/db_install_${version}.rsp":
  125. ensure => present,
  126. content => template("oradb/db_install_${version}.rsp.erb"),
  127. mode => '0775',
  128. owner => $user,
  129. group => $group,
  130. require => Oradb::Utils::Orainst["database orainst ${version}"],
  131. }
  132. }
  133. if ( $version == '11.2.0.1' or
  134. $version == '12.1.0.1' or
  135. $version == '11.2.0.3' or
  136. $version == '11.2.0.4' ) {
  137. exec { "install oracle database ${title}":
  138. command => "/bin/sh -c 'unset DISPLAY;${downloadDir}/${file}/database/runInstaller -silent -waitforcompletion -ignoreSysPrereqs -ignorePrereq -responseFile ${downloadDir}/db_install_${version}.rsp'",
  139. creates => $oracleHome,
  140. timeout => 0,
  141. returns => [6,0],
  142. path => $execPath,
  143. user => $user,
  144. group => $group_install,
  145. logoutput => true,
  146. require => [Oradb::Utils::Orainst["database orainst ${version}"],
  147. File["${downloadDir}/db_install_${version}.rsp"]],
  148. }
  149. file { $oracleHome:
  150. ensure => directory,
  151. recurse => false,
  152. replace => false,
  153. mode => '0775',
  154. owner => $user,
  155. group => $group_install,
  156. require => Exec["install oracle database ${title}"],
  157. }
  158. }
  159. if ! defined(File["${userBaseDir}/${user}/.bash_profile"]) {
  160. file { "${userBaseDir}/${user}/.bash_profile":
  161. ensure => present,
  162. content => template("oradb/bash_profile.erb"),
  163. mode => '0775',
  164. owner => $user,
  165. group => $group,
  166. require => Oradb::Utils::Structure["oracle structure ${version}"],
  167. }
  168. }
  169. exec { "run root.sh script ${title}":
  170. command => "${oracleHome}/root.sh",
  171. user => 'root',
  172. group => 'root',
  173. path => $execPath,
  174. logoutput => true,
  175. require => Exec["install oracle database ${title}"],
  176. }
  177. }
  178. }