biemond/biemond-orawls

View on GitHub
manifests/copydomain.pp

Summary

Maintainability
Test Coverage
# == Define: orawls::copydomain
#
#   copydomain to an other nodes
##
define orawls::copydomain (
  $version                    = hiera('wls_version'               , 1111),  # 1036|1111|1211|1212|1221|12211|12212
  $middleware_home_dir        = hiera('wls_middleware_home_dir'), # /opt/oracle/middleware11gR1
  $weblogic_home_dir          = hiera('wls_weblogic_home_dir'), # /opt/oracle/middleware11gR1/wlserver_103
  $jdk_home_dir               = hiera('wls_jdk_home_dir'), # /usr/java/jdk1.7.0_45
  $wls_domains_dir            = hiera('wls_domains_dir'           , undef),
  $wls_apps_dir               = hiera('wls_apps_dir'              , undef),
  $use_ssh                    = true,
  $domain_pack_dir            = undef,
  $domain_name                = hiera('domain_name'),
  $adminserver_address        = hiera('domain_adminserver_address'),
  $adminserver_port           = hiera('domain_adminserver_port'   , 7001),
  $use_t3s                    = false,
  $user_config_file           = hiera('domain_user_config_file'   , undef),
  $user_key_file              = hiera('domain_user_key_file'      , undef),
  $weblogic_user              = hiera('wls_weblogic_user'         , 'weblogic'),
  $weblogic_password          = hiera('domain_wls_password'       , undef),
  $os_user                    = hiera('wls_os_user'), # oracle
  $os_group                   = hiera('wls_os_group'), # dba
  $download_dir               = hiera('wls_download_dir'), # /data/install
  $log_dir                    = hiera('wls_log_dir'               , undef), # /data/logs
  $log_output                 = false, # true|false
  $server_start_mode          = 'dev', # dev/prod
  $wls_domains_file           = hiera('wls_domains_file'          , undef),
  $puppet_os_user             = hiera('puppet_os_user','root'),
  $jsse_enabled               = hiera('wls_jsse_enabled'              , false),
  $custom_trust               = hiera('wls_custom_trust'              , false),
  $trust_keystore_file        = hiera('wls_trust_keystore_file'       , undef),
  $trust_keystore_passphrase  = hiera('wls_trust_keystore_passphrase' , undef),
  $extra_arguments            = '', # '-Dweblogic.security.SSL.minimumProtocolVersion=TLSv1'
)
{
  if ( $wls_domains_file == undef or $wls_domains_file == '' ){
    $wls_domains_file_location = '/etc/wls_domains.yaml'
  } else {
    $wls_domains_file_location = $wls_domains_file
  }

  if ( $wls_domains_dir == undef or $wls_domains_dir == '' ) {
    $domains_dir = "${middleware_home_dir}/user_projects/domains"
  } else {
    $domains_dir =  $wls_domains_dir
  }

  if ( $wls_apps_dir == undef or $wls_apps_dir == '') {
    $apps_dir = "${middleware_home_dir}/user_projects/applications"
  } else {
    $apps_dir =  $wls_apps_dir
  }

  if ( $version == 1036 or $version == 1111 or $version == 1211 ) {
    $nodeMgrHome = "${weblogic_home_dir}/common/nodemanager"

  } elsif ( $version == 1212 or $version == 1213 or $version >= 1221) {
    $nodeMgrHome = "${domains_dir}/${domain_name}/nodemanager"

  } else {
    $nodeMgrHome = "${weblogic_home_dir}/common/nodemanager"
  }

  if ( $domain_pack_dir == undef ) {
    $remote_or_share_domain_domain_dir = $download_dir
  } else {
    $remote_or_share_domain_domain_dir = $domain_pack_dir
  }

  # check if the domain already exists
  $found = domain_exists("${domains_dir}/${domain_name}")

  if $found == undef {
    $continue = true
  } else {
    if ($found) {
      $continue = false
    } else {
      notify { "orawls::wlsdomain ${title} ${domains_dir}/${domain_name} ${version} does not exists": }
      $continue = true
    }
  }

  if ($continue) {
    $exec_path = "${jdk_home_dir}/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"

    if $log_dir != undef {

      # create all log folders
      if !defined(Exec["create ${log_dir} directory"]) {
        exec { "create ${log_dir} directory":
          command => "mkdir -p ${log_dir}",
          unless  => "test -d ${log_dir}",
          user    => $puppet_os_user,
          path    => $exec_path,
        }
      }
      if !defined(File[$log_dir]) {
        file { $log_dir:
          ensure  => directory,
          recurse => false,
          replace => false,
          require => Exec["create ${log_dir} directory"],
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }
      }
    }

    if ( $domains_dir == "${middleware_home_dir}/user_projects/domains"){
      if !defined(File['weblogic_domain_folder']) {
          # check oracle install folder
          file { 'weblogic_domain_folder':
            ensure  => directory,
            path    => "${middleware_home_dir}/user_projects",
            recurse => false,
            replace => false,
            mode    => '0775',
            owner   => $os_user,
            group   => $os_group,
          }
        File['weblogic_domain_folder'] -> File[$domains_dir]
      }
    }

    if !defined(File[$domains_dir]) {
      # check oracle install folder
      file { $domains_dir:
        ensure  => directory,
        recurse => false,
        replace => false,
        mode    => '0775',
        owner   => $os_user,
        group   => $os_group,
      }
    }

    if $apps_dir != undef {
      if !defined(File[$apps_dir]) {
        # check oracle install folder
        file { $apps_dir:
          ensure  => directory,
          recurse => false,
          replace => false,
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }
      }
    }

    # copy domain from the adminserver to the this node ( with scp and without passwords )
    if ( $use_ssh == true ) {
      exec { "copy domain jar ${domain_name}":
        command   => "scp -oStrictHostKeyChecking=no -oCheckHostIP=no ${os_user}@${adminserver_address}:${remote_or_share_domain_domain_dir}/domain_${domain_name}.jar ${download_dir}/domain_${domain_name}.jar",
        path      => $exec_path,
        user      => $os_user,
        group     => $os_group,
        logoutput => $log_output,
      }
    } else {
      exec { "copy domain jar ${domain_name}":
        command   => "cp ${remote_or_share_domain_domain_dir}/domain_${domain_name}.jar ${download_dir}/domain_${domain_name}.jar",
        path      => $exec_path,
        user      => $os_user,
        group     => $os_group,
        logoutput => $log_output,
      }
    }

    $app_dir_arg = $apps_dir ? {
      undef      => '',
      default    => "-app_dir=${apps_dir}/${domain_name}"
    }

    $unPackCommand = "-domain=${domains_dir}/${domain_name} -template=${download_dir}/domain_${domain_name}.jar ${$app_dir_arg} -server_start_mode=${server_start_mode} -log=${download_dir}/domain_${domain_name}.log -log_priority=INFO"

    if ( $version >= 1221 ) {
      $bin_dir = "${middleware_home_dir}/oracle_common/common/bin/unpack.sh"
      $wlst_dir = "${middleware_home_dir}/oracle_common/common/bin/wlst.sh"
    } else {
      $bin_dir = "${weblogic_home_dir}/common/bin/unpack.sh"
      $wlst_dir = "${weblogic_home_dir}/common/bin/wlst.sh"
    }

    exec { "unpack ${domain_name}":
      command     => "${bin_dir} ${unPackCommand} -user_name=${weblogic_user} -password=${weblogic_password}",
      environment => ["JAVA_HOME=${jdk_home_dir}"],
      path        => $exec_path,
      user        => $os_user,
      group       => $os_group,
      logoutput   => $log_output,
      timeout     => 0,
      require     => [File[$domains_dir],
                    Exec["copy domain jar ${domain_name}"]],
    }

    yaml_setting { "domain ${title}":
      target =>  $wls_domains_file_location,
      key    =>  "domains/${domain_name}",
      value  =>  "${domains_dir}/${domain_name}",
    }

    # the enroll domain.py used by the wlst
    file { "enroll.py ${domain_name} ${title}":
      ensure  => present,
      path    => "${download_dir}/enroll_domain_${domain_name}.py",
      content => template('orawls/wlst/enrollDomain.py.erb'),
      replace => true,
      mode    => '0775',
      owner   => $os_user,
      group   => $os_group,
      backup  => false,
    }

    if $custom_trust == true {
      $config = "-Dweblogic.ssl.JSSEEnabled=${jsse_enabled} -Dweblogic.security.SSL.enableJSSE=${jsse_enabled} -Dweblogic.security.TrustKeyStore=CustomTrust -Dweblogic.security.CustomTrustKeyStoreFileName=${trust_keystore_file} -Dweblogic.security.CustomTrustKeystorePassPhrase=${trust_keystore_passphrase} ${extra_arguments}"
    }
    else {
      $config = "-Dweblogic.ssl.JSSEEnabled=${jsse_enabled} -Dweblogic.security.SSL.enableJSSE=${jsse_enabled} ${extra_arguments}"
    }

    exec { "execwlst ${domain_name} ${title}":
      command     => "${wlst_dir} ${download_dir}/enroll_domain_${domain_name}.py ${weblogic_password}",
      environment => ["JAVA_HOME=${jdk_home_dir}", "CONFIG_JVM_ARGS=${config}"],
      path        => $exec_path,
      user        => $os_user,
      group       => $os_group,
      logoutput   => $log_output,
      require     => [File["${download_dir}/enroll_domain_${domain_name}.py"],
                      Exec["unpack ${domain_name}"]],
    }

    exec { "domain.py ${domain_name} ${title}":
      command   => "rm ${download_dir}/enroll_domain_${domain_name}.py",
      path      => $exec_path,
      user      => $os_user,
      group     => $os_group,
      logoutput => $log_output,
      require   => Exec["execwlst ${domain_name} ${title}"],
    }

  }
}