Skip to content

Commit

Permalink
replaced dirtree and own manifests with a type for the creation of al…
Browse files Browse the repository at this point in the history
…l the oracle directories
  • Loading branch information
biemond committed Jan 20, 2015
1 parent b0c2755 commit b0d3347
Show file tree
Hide file tree
Showing 22 changed files with 305 additions and 228 deletions.
2 changes: 0 additions & 2 deletions .fixtures.yml
Expand Up @@ -2,7 +2,5 @@ fixtures:
repositories:
'stdlib':
repo: 'git://github.com/puppetlabs/puppetlabs-stdlib'
'dirtree':
repo: 'git://github.com/AlexCline/puppet-dirtree'
symlinks:
'oradb': '#{source_dir}'
3 changes: 3 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,8 @@
# Version updates

## 1.0.29
- Custom type for db/asm/client oracle directory structure instead of dirtree and some manifests

## 1.0.28
- fixed database install rsp 12.1.0.2
- db_listener custom puppet type/provider, listener.pp calls this type
Expand Down
1 change: 0 additions & 1 deletion README.md
Expand Up @@ -8,7 +8,6 @@ created by Edwin Biemond
Dependency with
- puppetlabs/concat >= 1.0.0
- puppetlabs/stdlib >= 3.2.0
- AlexCline/dirtree >= 0.2.1

Should work on Docker, for Solaris and on all Linux version like RedHat, CentOS, Ubuntu, Debian, Suse SLES or OracleLinux
- Docker image of Oracle Database 12.1 SE [Docker Oracle Database 12.1.0.1](https://github.com/biemond/docker-database-puppet)
Expand Down
66 changes: 43 additions & 23 deletions lib/puppet/parser/functions/opatch_version.rb
@@ -1,32 +1,52 @@
# restart the puppetmaster when changed
module Puppet::Parser::Functions
newfunction(:opatch_version, :type => :rvalue) do |args|
begin
require 'puppet/util/log'

oracleHomeArg = args[0].strip.downcase
oracleHome = oracleHomeArg.gsub("/","_").gsub("\\","_").gsub("c:","_c").gsub("d:","_d").gsub("e:","_e")
# restart the puppetmaster when changed
module Puppet
module Parser
module Functions
newfunction(:opatch_version, :type => :rvalue) do |args|

# check the oracle home opatch
lookup_db_var("oradb_inst_opatch#{oracleHome}")
oracleHomeArg = args[0].strip.downcase
oracleHome = oracleHomeArg.gsub('/', '_').gsub('\\', '_').gsub('c:', '_c').gsub('d:', '_d').gsub('e:', '_e')

log "lookup fact oradb_inst_opatch#{oracleHome}"
# check the oracle home opatch
found = lookup_db_var("oradb_inst_opatch#{oracleHome}")
log "found value #{found}"
return found
end
end
end
end
end

def lookup_db_var(name)
# puts "lookup fact "+name
if db_var_exists(name)
return lookupvar(name).to_s
def lookup_db_var(name)
# puts "lookup fact "+name
if db_var_exists(name)
return lookupvar(name).to_s
end
'empty'
end
'empty'
end

def db_var_exists(name)
# puts "lookup fact "+name
if lookupvar(name) != :undefined
if lookupvar(name).nil?
# puts "return false"
return false
def db_var_exists(name)
# puts "lookup fact "+name
if lookupvar(name) != :undefined
if lookupvar(name).nil?
# puts "return false"
return false
end
return true
end
return true
# puts "not found"
false
end

def log(msg)
Puppet::Util::Log.create(
:level => :info,
:message => msg,
:source => 'oracle_exists'
)
end
# puts "not found"
false

end
38 changes: 21 additions & 17 deletions lib/puppet/parser/functions/oracle_exists.rb
Expand Up @@ -2,26 +2,30 @@
require 'puppet/util/log'

# restart the puppetmaster when changed
module Puppet::Parser::Functions
newfunction(:oracle_exists, :type => :rvalue) do |args|
module Puppet
module Parser
module Functions
newfunction(:oracle_exists, :type => :rvalue) do |args|

ora = lookup_db_var('oradb_inst_products')
log "oracle_exists #{ora}"

if ora == 'empty' || ora == 'NotFound'
log 'oracle_exists return empty -> false'
return false
else
software = args[0].strip
log "oracle_exists compare #{ora} with #{software}"
if ora.include? software
log 'oracle_exists return true'
return true
end
end
log 'oracle_exists return false'
return false

ora = lookup_db_var('oradb_inst_products')
log "oracle_exists #{ora}"

if ora == 'empty' or ora == 'NotFound'
log 'oracle_exists return empty -> false'
return false
else
software = args[0].strip
log "oracle_exists compare #{ora} with #{software}"
if ora.include? software
log 'oracle_exists return true'
return true
end
end
log 'oracle_exists return false'
return false

end
end

Expand Down
@@ -0,0 +1,42 @@
require 'fileutils'

Puppet::Type.type(:db_directory_structure).provide(:db_directory_structure) do

def configure

name = resource[:name]
oracle_base = resource[:oracle_base_dir]
ora_inventory = resource[:ora_inventory_dir]
download_folder = resource[:download_dir]
user = resource[:os_user]
group = resource[:os_group]
Puppet.info "configure oracle folders for #{name}"

Puppet.info "create the following directories: #{oracle_base}, #{ora_inventory}, #{download_folder}"
make_directory oracle_base
ownened_by_oracle oracle_base, user, group

make_directory ora_inventory
ownened_by_oracle ora_inventory, user, group

make_directory download_folder
allow_everybody download_folder
end

def make_directory(path)
Puppet.info "creating directory #{path}"
FileUtils.mkdir_p path
end

def ownened_by_oracle(path, user, group)
Puppet.info "Setting oracle ownership for #{path} with 0775"
FileUtils.chmod 0775, path
FileUtils.chown user, group, path
end

def allow_everybody(path)
Puppet.info "Setting public permissions 0777 for #{path}"
FileUtils.chmod 0777, path
end

end
83 changes: 83 additions & 0 deletions lib/puppet/type/db_directory_structure.rb
@@ -0,0 +1,83 @@
module Puppet
newtype(:db_directory_structure) do
desc 'add all the directories needed by the oracle db or asm installation'

newparam(:name) do
desc <<-EOT
The title.
EOT
isnamevar
end

newproperty(:ensure) do
desc 'Whether to do something.'

newvalue(:present) do
provider.configure
end

def retrieve
oracle_base = resource[:oracle_base_dir]
ora_inventory = resource[:ora_inventory_dir]
download_folder = resource[:download_dir]

if File.exist?(oracle_base) && File.exist?(ora_inventory) && File.exist?(download_folder)
:present
else
:absent
end
end

end

newparam(:oracle_base_dir) do
desc <<-EOT
The oracle base folder.
EOT
validate do |value|
if value.nil?
fail ArgumentError, 'oracle_base_dir cannot be empty'
end
end
end

newparam(:ora_inventory_dir) do
desc <<-EOT
The oracle inventory folder.
EOT
validate do |value|
if value.nil?
fail ArgumentError, 'ora_inventory_dir cannot be empty'
end
end
end

newparam(:download_dir) do
desc <<-EOT
The download folder.
EOT
validate do |value|
if value.nil?
fail ArgumentError, 'download_dir cannot be empty'
end
end
end

newparam(:os_user) do
desc <<-EOT
The weblogic operating system user.
EOT

defaultto 'oracle'
end

newparam(:os_group) do
desc <<-EOT
The weblogic operating system group.
EOT

defaultto 'oinstall'
end

end
end
20 changes: 11 additions & 9 deletions manifests/client.pp
Expand Up @@ -33,12 +33,13 @@

$oraInventory = "${oracleBase}/oraInventory"

oradb::utils::dbstructure{"oracle structure ${version}":
oracle_base_home_dir => $oracleBase,
ora_inventory_dir => $oraInventory,
os_user => $user,
os_group_install => $group_install,
download_dir => $downloadDir,
db_directory_structure{"client structure ${version}":
ensure => present,
oracle_base_dir => $oracleBase,
ora_inventory_dir => $oraInventory,
download_dir => $downloadDir,
os_user => $user,
os_group => $group_install,
}

if ( $continue ) {
Expand All @@ -56,24 +57,24 @@
file { "${downloadDir}/${file}":
ensure => present,
source => "${mountPoint}/${file}",
require => Oradb::Utils::Dbstructure["oracle structure ${version}"],
before => Exec["extract ${downloadDir}/${file}"],
mode => '0775',
owner => $user,
group => $group,
require => Db_directory_structure["client structure ${version}"],
}
$source = $downloadDir
} else {
$source = $mountPoint
}
exec { "extract ${downloadDir}/${file}":
command => "unzip -o ${source}/${file} -d ${downloadDir}/client_${version}",
require => Oradb::Utils::Dbstructure["oracle structure ${version}"],
timeout => 0,
path => $execPath,
user => $user,
group => $group,
logoutput => false,
require => Db_directory_structure["client structure ${version}"],
}

oradb::utils::dborainst{"oracle orainst ${version}":
Expand All @@ -85,10 +86,11 @@
file { "${downloadDir}/db_client_${version}.rsp":
ensure => present,
content => template("oradb/db_client_${version}.rsp.erb"),
require => Oradb::Utils::Dborainst["oracle orainst ${version}"],
mode => '0775',
owner => $user,
group => $group,
require => [Oradb::Utils::Dborainst["oracle orainst ${version}"],
Db_directory_structure["client structure ${version}"],],
}
}

Expand Down
2 changes: 0 additions & 2 deletions manifests/database.pp
Expand Up @@ -113,7 +113,6 @@
owner => $user,
group => $group,
before => Exec["oracle database ${title}"],
require => File[$downloadDir],
}
}

Expand All @@ -126,7 +125,6 @@
owner => $user,
group => $group,
before => Exec["oracle database ${title}"],
require => File[$downloadDir],
}
}

Expand Down

0 comments on commit b0d3347

Please sign in to comment.