client.pp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. # == Class: oradb::client
  2. #
  3. #
  4. define oradb::client(
  5. $version = undef,
  6. $file = undef,
  7. $oracleBase = undef,
  8. $oracleHome = undef,
  9. $createUser = true,
  10. $user = 'oracle',
  11. $userBaseDir = '/home',
  12. $group = 'dba',
  13. $group_install = 'oinstall',
  14. $downloadDir = '/install',
  15. $puppetDownloadMntPoint = undef,
  16. $remoteFile = true,
  17. $logoutput = true,
  18. )
  19. {
  20. # check if the oracle software already exists
  21. $found = oracle_exists( $oracleHome )
  22. if $found == undef {
  23. $continue = true
  24. } else {
  25. if ( $found ) {
  26. $continue = false
  27. } else {
  28. notify {"oradb::installdb ${oracleHome} does not exists":}
  29. $continue = true
  30. }
  31. }
  32. if ( $continue ) {
  33. $execPath = "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:"
  34. $oraInventory = "${oracleBase}/oraInventory"
  35. if $puppetDownloadMntPoint == undef {
  36. $mountPoint = "puppet:///modules/oradb/"
  37. } else {
  38. $mountPoint = $puppetDownloadMntPoint
  39. }
  40. oradb::utils::structure{"oracle structure ${version}":
  41. oracle_base_home_dir => $oracleBase,
  42. ora_inventory_dir => $oraInventory,
  43. os_user => $user,
  44. os_group => $group,
  45. os_group_install => $group_install,
  46. os_group_oper => undef,
  47. download_dir => $downloadDir,
  48. log_output => true,
  49. user_base_dir => $userBaseDir,
  50. create_user => $createUser,
  51. }
  52. # db file installer zip
  53. if $remoteFile == true {
  54. file { "${downloadDir}/${file}":
  55. ensure => present,
  56. source => "${mountPoint}/${file}",
  57. require => Oradb::Utils::Structure["oracle structure ${version}"],
  58. before => "extract ${downloadDir}/${file}",
  59. mode => '0775',
  60. owner => $user,
  61. group => $group,
  62. }
  63. $source = $downloadDir
  64. } else {
  65. $source = $mountPoint
  66. }
  67. exec { "extract ${downloadDir}/${file}":
  68. command => "unzip -o ${source}/${file} -d ${downloadDir}/client_${version}",
  69. require => Oradb::Utils::Structure["oracle structure ${version}"],
  70. timeout => 0,
  71. path => $execPath,
  72. user => $user,
  73. group => $group,
  74. logoutput => false,
  75. }
  76. oradb::utils::orainst{"oracle orainst ${version}":
  77. ora_inventory_dir => $oraInventory,
  78. os_group => $group_install,
  79. }
  80. if ! defined(File["${downloadDir}/db_client_${version}.rsp"]) {
  81. file { "${downloadDir}/db_client_${version}.rsp":
  82. ensure => present,
  83. content => template("oradb/db_client_${version}.rsp.erb"),
  84. require => Oradb::Utils::Orainst["oracle orainst ${version}"],
  85. mode => '0775',
  86. owner => $user,
  87. group => $group,
  88. }
  89. }
  90. # In $downloadDir, will Puppet extract the ZIP files or is this a pre-extracted directory structure.
  91. exec { "install oracle client ${title}":
  92. command => "/bin/sh -c 'unset DISPLAY;${downloadDir}/client_${version}/client/runInstaller -silent -waitforcompletion -ignoreSysPrereqs -ignorePrereq -responseFile ${downloadDir}/db_client_${version}.rsp'",
  93. require => [Oradb::Utils::Orainst["oracle orainst ${version}"],
  94. File["${downloadDir}/db_client_${version}.rsp"],
  95. Exec["extract ${downloadDir}/${file}"]],
  96. creates => $oracleHome,
  97. timeout => 0,
  98. returns => [6,0],
  99. path => $execPath,
  100. user => $user,
  101. group => $group_install,
  102. logoutput => $logoutput,
  103. }
  104. exec { "run root.sh script ${title}":
  105. command => "${oracleHome}/root.sh",
  106. user => 'root',
  107. group => 'root',
  108. require => Exec["install oracle client ${title}"],
  109. path => $execPath,
  110. logoutput => $logoutput,
  111. }
  112. file { "${downloadDir}/netca_client_${version}.rsp":
  113. ensure => present,
  114. content => template("oradb/netca_client_${version}.rsp.erb"),
  115. require => Exec["run root.sh script ${title}"],
  116. mode => '0775',
  117. owner => $user,
  118. group => $group,
  119. }
  120. exec { "install oracle net ${title}":
  121. command => "${oracleHome}/bin/netca /silent /responsefile ${downloadDir}/netca_client_${version}.rsp",
  122. require => [File["${downloadDir}/netca_client_${version}.rsp"],
  123. Exec["run root.sh script ${title}"],
  124. ],
  125. creates => "${oracleHome}/network/admin/sqlnet.ora",
  126. path => $execPath,
  127. user => $user,
  128. group => $group,
  129. logoutput => $logoutput,
  130. }
  131. if ! defined(File["${userBaseDir}/${user}/.bash_profile"]) {
  132. file { "${userBaseDir}/${user}/.bash_profile":
  133. ensure => present,
  134. content => template("oradb/bash_profile.erb"),
  135. mode => '0775',
  136. owner => $user,
  137. group => $group,
  138. }
  139. }
  140. }
  141. }