biemond/biemond-orawls

View on GitHub
manifests/utils/fmwcluster.pp

Summary

Maintainability
Test Coverage
# == Define: orawls::utils::fmwcluster
#
# transform domain to a soa,osb,bam cluster
##
define orawls::utils::fmwcluster (
  $version                     = hiera('wls_version'               , 1111),  # 1036|1111|1211|1212|1213|1221
  $ofm_version                 = hiera('ofm_version'               , 1117),   # 1116|1117
  $weblogic_home_dir           = hiera('wls_weblogic_home_dir'), # /opt/oracle/middleware11gR1/wlserver_103
  $middleware_home_dir         = hiera('wls_middleware_home_dir'), # /opt/oracle/middleware11gR1
  $jdk_home_dir                = hiera('wls_jdk_home_dir'), # /usr/java/jdk1.7.0_45
  $wls_domains_dir             = hiera('wls_domains_dir'           , undef),
  $domain_name                 = hiera('domain_name'),
  $adminserver_name            = hiera('domain_adminserver'        , 'AdminServer'),
  $adminserver_address         = hiera('domain_adminserver_address', 'localhost'),
  $adminserver_port            = hiera('domain_adminserver_port'   , 7001),
  $nodemanager_port            = hiera('domain_nodemanager_port'   , 5556),
  $soa_cluster_name            = undef,
  $bam_cluster_name            = undef,
  $osb_cluster_name            = undef,
  $oam_cluster_name            = undef,
  $oim_cluster_name            = undef,
  $ess_cluster_name            = undef,
  $bi_cluster_name             = undef,
  $bpm_enabled                 = false, # true|false
  $bam_enabled                 = false, # true|false
  $osb_enabled                 = false, # true|false
  $soa_enabled                 = false, # true|false
  $oam_enabled                 = false, # true|false
  $oim_enabled                 = false, # true|false
  $b2b_enabled                 = false, # true|false
  $ess_enabled                 = false, # true|false
  $bi_enabled                  = false, # true|false
  $repository_prefix           = hiera('repository_prefix'         , 'DEV'),
  $weblogic_user               = hiera('wls_weblogic_user'         , 'weblogic'),
  $weblogic_password           = hiera('domain_wls_password'),
  $os_user                     = hiera('wls_os_user'), # oracle
  $os_group                    = hiera('wls_os_group'), # dba
  $download_dir                = hiera('wls_download_dir'), # /data/install
  $log_output                  = false, # true|false
  $retain_file_store           = hiera('retain_security_file_store', false), # true|false
  $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),
  $nodemanager_secure_listener = true,
)
{
  if ( $wls_domains_dir == undef or $wls_domains_dir == '') {
    $domains_dir = "${middleware_home_dir}/user_projects/domains"
  } else {
    $domains_dir =  $wls_domains_dir
  }

  $domain_dir = "${domains_dir}/${domain_name}"

  if ( $soa_enabled ) {
    # check if the soa is already targeted to the cluster on this weblogic domain
    $soa_found = soa_cluster_configured($domain_dir, $soa_cluster_name)

    if $soa_found == undef or $soa_found == true {
      $convert_soa = false
    } else {
      $convert_soa = true
    }
  } else {
    $convert_soa = false
  }

  if ( $osb_enabled ) {
    # check if the soa is already targeted to the cluster on this weblogic domain
    $osb_found = osb_cluster_configured($domain_dir, $osb_cluster_name)

    if $osb_found == undef or $osb_found == true {
      $convert_osb = false
    } else {
      $convert_osb = true
    }
  } else {
    $convert_osb = false
  }

  if ( $bam_enabled ) {
    # check if the soa is already targeted to the cluster on this weblogic domain
    $bam_found = bam_cluster_configured($domain_dir, $bam_cluster_name)

    if $bam_found == undef or $bam_found == true {
      $convert_bam = false
    } else {
      $convert_bam = true
    }
  } else {
    $convert_bam = false
  }

  if $convert_soa or $convert_osb or $convert_bam {

    $exec_path = "${jdk_home_dir}/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:"

    if ( $version == 1213 or $version >= 1221 ) {
      #shutdown adminserver for offline WLST scripts
      orawls::control{"ShutdownAdminServerForSoa${title}":
        middleware_home_dir         => $middleware_home_dir,
        weblogic_home_dir           => $weblogic_home_dir,
        jdk_home_dir                => $jdk_home_dir,
        wls_domains_dir             => $domains_dir,
        domain_name                 => $domain_name,
        server_type                 => 'admin',
        target                      => 'Server',
        server                      => $adminserver_name,
        adminserver_address         => $adminserver_address,
        adminserver_port            => $adminserver_port,
        nodemanager_secure_listener => $nodemanager_secure_listener,
        nodemanager_port            => $nodemanager_port,
        jsse_enabled                => $jsse_enabled,
        custom_trust                => $custom_trust,
        trust_keystore_file         => $trust_keystore_file,
        trust_keystore_passphrase   => $trust_keystore_passphrase,
        action                      => 'stop',
        weblogic_user               => $weblogic_user,
        weblogic_password           => $weblogic_password,
        os_user                     => $os_user,
        os_group                    => $os_group,
        download_dir                => $download_dir,
        log_output                  => $log_output,
      }
      if $version >= 1221 {
        $new_version = 1221
      } else {
        $new_version = $version
      }

      file { "${download_dir}/assignOsbSoaBpmBamToClusters${title}.py":
        ensure  => present,
        content => template("orawls/wlst/wlstexec/fmw/assignOsbSoaBpmBamToClusters_${new_version}.py.erb"),
        backup  => false,
        replace => true,
        mode    => '0775',
        owner   => $os_user,
        group   => $os_group,
      }

      # reorder all apps,libraries, startup , shutdown and datasources
      exec { "execwlst assignOsbSoaBpmBamToClusters.py ${title}":
        command   => "${middleware_home_dir}/oracle_common/common/bin/wlst.sh ${download_dir}/assignOsbSoaBpmBamToClusters${title}.py",
        path      => $exec_path,
        user      => $os_user,
        group     => $os_group,
        timeout   => 0,
        logoutput => $log_output,
        require   => [File["${download_dir}/assignOsbSoaBpmBamToClusters${title}.py"],
                      Orawls::Control["ShutdownAdminServerForSoa${title}"],],
      }
      #startup adminserver for offline WLST scripts
      orawls::control{"StartupAdminServerForSoa${title}":
        middleware_home_dir         => $middleware_home_dir,
        weblogic_home_dir           => $weblogic_home_dir,
        jdk_home_dir                => $jdk_home_dir,
        wls_domains_dir             => $domains_dir,
        domain_name                 => $domain_name,
        server_type                 => 'admin',
        target                      => 'Server',
        server                      => $adminserver_name,
        adminserver_address         => $adminserver_address,
        adminserver_port            => $adminserver_port,
        nodemanager_secure_listener => $nodemanager_secure_listener,
        nodemanager_port            => $nodemanager_port,
        action                      => 'start',
        jsse_enabled                => $jsse_enabled,
        custom_trust                => $custom_trust,
        trust_keystore_file         => $trust_keystore_file,
        trust_keystore_passphrase   => $trust_keystore_passphrase,
        weblogic_user               => $weblogic_user,
        weblogic_password           => $weblogic_password,
        os_user                     => $os_user,
        os_group                    => $os_group,
        download_dir                => $download_dir,
        log_output                  => $log_output,
        require                     => Exec["execwlst assignOsbSoaBpmBamToClusters.py ${title}"],
      }
    }
    elsif ( $version <= 1111 ) {

      case $::kernel {
        'Linux': {
          $java_statement = 'java'
        }
        'SunOS': {
          $java_statement = 'java -d64'
        }
        default: {
          fail("Unrecognized operating system ${::kernel}")
        }
      }
      $javaCommand = "${java_statement} -Dweblogic.security.SSL.ignoreHostnameVerification=true weblogic.WLST -skipWLSModuleScanning "

      if ( $osb_enabled  == true ) {
        $last_step = "execwlst osb-createUDD.py ${title}"
      } elsif ($oim_enabled == true ) {
        $last_step = "execwlst oim-createUDD.py ${title}"
      } else {
        $last_step = "execwlst soa-bpm-createUDD.py ${title}"
      }

      # only for soa suite 1036 or 1111 and not if OAM is already installed
      if ( $soa_enabled  == true and $oam_enabled == false and $retain_file_store == false) {
        # the domain.py used by the wlst
        file { "migrateSecurityStore.py ${domain_name} ${title}":
          ensure  => present,
          path    => "${download_dir}/migrateSecurityStore_${domain_name}.py",
          content => template('orawls/wlst/wlstexec/fmw/migrateSecurityStore.py.erb'),
          replace => true,
          backup  => false,
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }
        exec { "execwlst create OPSS store ${domain_name} ${title}":
          command     => "${middleware_home_dir}/oracle_common/common/bin/wlst.sh ${download_dir}/migrateSecurityStore_${domain_name}.py ${weblogic_password}",
          environment => ["JAVA_HOME=${jdk_home_dir}"],
          require     => File["migrateSecurityStore.py ${domain_name} ${title}"],
          timeout     => 0,
          before      => Orawls::Control["ShutdownAdminServerForSoa${title}"],
          logoutput   => $log_output,
        }
      }

      #shutdown adminserver for offline WLST scripts
      orawls::control{"ShutdownAdminServerForSoa${title}":
        middleware_home_dir         => $middleware_home_dir,
        weblogic_home_dir           => $weblogic_home_dir,
        jdk_home_dir                => $jdk_home_dir,
        wls_domains_dir             => $domains_dir,
        domain_name                 => $domain_name,
        server_type                 => 'admin',
        target                      => 'Server',
        server                      => $adminserver_name,
        adminserver_address         => $adminserver_address,
        adminserver_port            => $adminserver_port,
        nodemanager_secure_listener => $nodemanager_secure_listener,
        nodemanager_port            => $nodemanager_port,
        action                      => 'stop',
        jsse_enabled                => $jsse_enabled,
        custom_trust                => $custom_trust,
        trust_keystore_file         => $trust_keystore_file,
        trust_keystore_passphrase   => $trust_keystore_passphrase,
        weblogic_user               => $weblogic_user,
        weblogic_password           => $weblogic_password,
        os_user                     => $os_user,
        os_group                    => $os_group,
        download_dir                => $download_dir,
        log_output                  => $log_output,
      }

      file { "${download_dir}/assignOsbSoaBpmBamToClusters${title}.py":
        ensure  => present,
        content => template('orawls/wlst/wlstexec/fmw/assignOsbSoaBpmBamToClusters.py.erb'),
        backup  => false,
        replace => true,
        mode    => '0775',
        owner   => $os_user,
        group   => $os_group,
      }

      # reorder all apps,libraries, startup , shutdown and datasources
      exec { "execwlst assignOsbSoaBpmBamToClusters.py ${title}":
        command     => "${javaCommand} ${download_dir}/assignOsbSoaBpmBamToClusters${title}.py",
        environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                        "JAVA_HOME=${jdk_home_dir}"],
        path        => $exec_path,
        user        => $os_user,
        group       => $os_group,
        logoutput   => $log_output,
        require     => [File["${download_dir}/assignOsbSoaBpmBamToClusters${title}.py"],
                        Orawls::Control["ShutdownAdminServerForSoa${title}"],]
      }

      if ( $soa_enabled == true ){

        if $bam_enabled == true {
          $action = "--bamcluster ${bam_cluster_name} --soacluster ${soa_cluster_name}"
        } else {
          $action = "--soacluster ${soa_cluster_name}"
        }

        file { "${download_dir}/soa-createUDD${title}.py":
          ensure  => present,
          content => template('orawls/wlst/wlstexec/fmw/soa-createUDD.py.erb'),
          backup  => false,
          replace => true,
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }

        # execute WLST script
        exec { "execwlst soa-createUDD.py ${title}":
          command     => "${javaCommand} ${download_dir}/soa-createUDD${title}.py --domain_home ${domain_dir} ${action} --create_jms true",
          environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                          "JAVA_HOME=${jdk_home_dir}"],
          path        => $exec_path,
          user        => $os_user,
          group       => $os_group,
          logoutput   => $log_output,
          require     => [Orawls::Control["ShutdownAdminServerForSoa${title}"],
                          File["${download_dir}/soa-createUDD${title}.py"],
                          Exec["execwlst assignOsbSoaBpmBamToClusters.py ${title}"],],
        }
        # the py script used by the wlst
        file { "${download_dir}/soa-bpm-createUDD${title}.py":
          ensure  => present,
          content => template('orawls/wlst/wlstexec/fmw/soa-bpm-createUDD.py.erb'),
          backup  => false,
          replace => true,
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }

        # execute WLST script
        exec { "execwlst soa-bpm-createUDD.py ${title}":
          command     => "${javaCommand} ${download_dir}/soa-bpm-createUDD${title}.py",
          environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                          "JAVA_HOME=${jdk_home_dir}"],
          path        => $exec_path,
          user        => $os_user,
          group       => $os_group,
          logoutput   => $log_output,
          require     => [
                          File["${download_dir}/soa-bpm-createUDD${title}.py"],
                          Orawls::Control["ShutdownAdminServerForSoa${title}"],
                          Exec["execwlst assignOsbSoaBpmBamToClusters.py ${title}"],
                          Exec["execwlst soa-createUDD.py ${title}"],]
        }

        if( $oim_enabled == true ) {
          # the py script used by the wlst
          file { "${download_dir}/oim-createUDD${title}.py":
            ensure  => present,
            content => template('orawls/wlst/wlstexec/fmw/oim-createUDD.py.erb'),
            backup  => false,
            replace => true,
            mode    => '0775',
            owner   => $os_user,
            group   => $os_group,
          }

          # execute WLST script
          exec { "execwlst oim-createUDD.py ${title}":
            command     => "${javaCommand} ${download_dir}/oim-createUDD${title}.py",
            environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                            "JAVA_HOME=${jdk_home_dir}"],
            path        => $exec_path,
            user        => $os_user,
            group       => $os_group,
            logoutput   => $log_output,
            require     => [File["${download_dir}/oim-createUDD${title}.py"],
                            Exec["execwlst soa-bpm-createUDD.py ${title}"],]
          }
        }
      }

      if( $osb_enabled == true ) {

        if ( $soa_enabled  == true ) {
          $last_soa_step = "execwlst soa-bpm-createUDD.py ${title}"
        } else  {
          $last_soa_step = "execwlst assignOsbSoaBpmBamToClusters.py ${title}"
        }

        # the py script used by the wlst
        file { "${download_dir}/osb-createUDD${title}.py":
          ensure  => present,
          content => template('orawls/wlst/wlstexec/fmw/osb-createUDD.py.erb'),
          backup  => false,
          replace => true,
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }

        # execute WLST script
        exec { "execwlst osb-createUDD.py ${title}":
          command     => "${javaCommand} ${download_dir}/osb-createUDD${title}.py",
          environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                          "JAVA_HOME=${jdk_home_dir}"],
          path        => $exec_path,
          user        => $os_user,
          group       => $os_group,
          logoutput   => $log_output,
          require     => [File["${download_dir}/osb-createUDD${title}.py"],
                          Orawls::Control["ShutdownAdminServerForSoa${title}"],
                          Exec[$last_soa_step]],
        }
      }

      #startup adminserver for offline WLST scripts
      orawls::control{"StartupAdminServerForSoa${title}":
        middleware_home_dir         => $middleware_home_dir,
        weblogic_home_dir           => $weblogic_home_dir,
        jdk_home_dir                => $jdk_home_dir,
        wls_domains_dir             => $domains_dir,
        domain_name                 => $domain_name,
        server_type                 => 'admin',
        target                      => 'Server',
        server                      => $adminserver_name,
        adminserver_address         => $adminserver_address,
        adminserver_port            => $adminserver_port,
        nodemanager_secure_listener => $nodemanager_secure_listener,
        nodemanager_port            => $nodemanager_port,
        action                      => 'start',
        jsse_enabled                => $jsse_enabled,
        custom_trust                => $custom_trust,
        trust_keystore_file         => $trust_keystore_file,
        trust_keystore_passphrase   => $trust_keystore_passphrase,
        weblogic_user               => $weblogic_user,
        weblogic_password           => $weblogic_password,
        os_user                     => $os_user,
        os_group                    => $os_group,
        download_dir                => $download_dir,
        log_output                  => $log_output,
        require                     => Exec[$last_step],
      }

      # the py script used by the wlst
      file { "${download_dir}/changeWorkmanagers${title}.py":
        ensure  => present,
        content => template('orawls/wlst/wlstexec/fmw/changeWorkmanagers.py.erb'),
        backup  => false,
        replace => true,
        mode    => '0775',
        owner   => $os_user,
        group   => $os_group,
      }

      # execute WLST script
      exec { "execwlst changeWorkmanagers.py ${title}":
        command     => "${javaCommand} ${download_dir}/changeWorkmanagers${title}.py ${weblogic_password}",
        environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                        "JAVA_HOME=${jdk_home_dir}"],
        path        => $exec_path,
        user        => $os_user,
        group       => $os_group,
        logoutput   => $log_output,
        require     => [File["${download_dir}/changeWorkmanagers${title}.py"],
                        Orawls::Control["StartupAdminServerForSoa${title}"]],
      }

      if( $oim_enabled == true ) {
        # the py script used by the wlst
        file { "${download_dir}/changeWorkmanagersOim${title}.py":
          ensure  => present,
          content => template('orawls/wlst/wlstexec/fmw/changeWorkmanagersOim.py.erb'),
          backup  => false,
          replace => true,
          mode    => '0775',
          owner   => $os_user,
          group   => $os_group,
        }

        # execute WLST script
        exec { "execwlst changeWorkmanagersOim.py ${title}":
          command     => "${javaCommand} ${download_dir}/changeWorkmanagersOim${title}.py ${weblogic_password}",
          environment => ["CLASSPATH=${weblogic_home_dir}/server/lib/weblogic.jar",
                          "JAVA_HOME=${jdk_home_dir}"],
          path        => $exec_path,
          user        => $os_user,
          group       => $os_group,
          logoutput   => $log_output,
          require     => [File["${download_dir}/changeWorkmanagersOim${title}.py"],
                          Orawls::Control["StartupAdminServerForSoa${title}"],
                          Exec["execwlst changeWorkmanagers.py ${title}"]],
        }
      }
    }
    else {
      fail('unknown version')
    }
  }
}