Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • performance_analysis
  • devel
3 results

api_pynspect.gparser.rst

Blame
  • site.pp.tmpl 5.28 KiB
    $$distribution = '${distribution}' # cloudera, bigtop
    
    $$hdfs_deployed = ${hdfs_deployed}
    $$realm = '${realm}'
    $$ssl = false
    
    $$master = '${master_hostname}.${domain}'
    $$frontends = [
      '${master_hostname}.${domain}',
    ]
    $$nodes = suffix(${nodes}, '.${domain}')
    $$zookeepers = [
      $$master,
    ]
    
    if $$distribution == 'bigtop' {
      $$version = '1.5.0' # 1.4.0, 1.5.0
      $$hadoop_version = 2
    } elsif $$distribution == 'cloudera' {
      $$version = '6.3.0'
      $$hadoop_version = 3
    }
    
    $$principals = suffix(concat(
      prefix(concat([$$master], $$nodes), 'host/'),
      prefix(concat([$$master], $$nodes), 'HTTP/'),
      ["httpfs/$$master"],
      prefix($$nodes, 'dn/'),
      ["nfs/$$master"],
      ["nn/$$master"],
      ["zookeeper/$$master"]
    ), "@$${realm}")
    
    stage { 'kerberos':
      before => Stage['main'],
    }
    
    class{"kerberos":
      kadmin_hostname    => $$master,
      admin_principal    => "puppet/admin@$${realm}",
      admin_password     => '$kerberos_admin_password',
      master_password    => '$kerberos_master_password',
      realm              => $$realm,
      default_attributes => {
        'requires_preauth' => true,
      },
      default_policy     => 'default_host',
      stage              => 'kerberos',
    }
    
    class{'hadoop':
      acl                    => true,
      hdfs_hostname          => $$master,
      httpfs_hostnames       => [
        $$master,
      ],
      frontends              => $$frontends,
      oozie_hostnames        => [
        $$master,
      ],
      slaves                 => $$nodes,
      zookeeper_hostnames    => $$zookeepers,
      hdfs_name_dirs         => [
        '/data',
      ],
      hdfs_data_dirs         => $data_dirs,
      cluster_name           => '${domain}',
      https                  => $$ssl,
      realm                  => $$realm,
      features               => {
        'yellowmanager' => true,
        'aggregation'   => true,
      },
      properties             => {
        'dfs.replication' => 2,
        'hadoop.proxyuser.hive.groups' => "hive,impala,oozie,users",
        #'hadoop.proxyuser.hive.groups' => "*",
        'hadoop.proxyuser.hive.hosts' => "*",
        'yarn.app.mapreduce.am.env' => 'LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native:$$LD_LIBRARY_PATH',
        # increase virtual memory limit for Spark
        'yarn.nodemanager.vmem-pmem-ratio' => 5,
      },
      version                => $$hadoop_version,
      hdfs_deployed          => $$hdfs_deployed,
    }
    
    class { '::zookeeper':
      hostnames => $$zookeepers,
      realm     => $$realm,
    }
    
    class{'site_hadoop':
      distribution        => $$distribution,
      version             => $$version,
      accounting_enable   => false,
      hbase_enable        => false,
      hive_enable         => false,
      nfs_frontend_enable => false,
      oozie_enable        => false,
      pig_enable          => false,
      spark_enable        => false,
    }
    
    group{$image_user:
      ensure => 'present',
    }
    ->
    user{$image_user:
      gid        => $image_user,
      groups     => ['users'],
      managehome => true,
      shell      => '/bin/bash',
    }
    
    class local_kerberos {
      file{'/etc/security/keytab':
        ensure => 'directory',
        owner  => 'root',
        group  => 'root',
        mode   => '0755',
      }
    
      File['/etc/security/keytab'] -> Kerberos::Keytab <| |>
    
      file{'/etc/security/http-auth-signature-secret':
        content => '$http_signature_secret',
        mode    => '0600',
        owner   => 'root',
        group   => 'root',
      }
    }
    
    class local_kerberos_master {
      include local_kerberos
    
      kerberos::policy{'default':
        ensure    => 'present',
        minlength => 6,
        history   => 2,
      }
    
      kerberos::policy{'default_host':
        ensure    => 'present',
        minlength => 6,
      }
    
      kerberos::principal{$$::kerberos::admin_principal:
        ensure   => 'present',
        password => $$::kerberos::admin_password,
      }
    
      kerberos::principal{$$principals:}
    
      kerberos::keytab{'/etc/krb5.keytab':
        principals => ["host/$${::fqdn}@$${realm}"],
      }
      kerberos::keytab{'/etc/security/keytab/http.service.keytab':
        principals => ["HTTP/$${::fqdn}@$${realm}"],
      }
      kerberos::keytab{'/etc/security/keytab/httpfs.service.keytab':
        principals => ["httpfs/$${::fqdn}@$${realm}"],
      }
      # works only locally on Kerberos admin server!
      kerberos::keytab{'/etc/security/keytab/httpfs-http.service.keytab':
        principals => [
          "httpfs/$${::fqdn}@$${realm}",
          "HTTP/$${::fqdn}@$${realm}",
        ],
      }
      kerberos::keytab{'/etc/security/keytab/nfs.service.keytab':
        principals => ["nfs/$${::fqdn}@$${realm}"],
      }
      kerberos::keytab{'/etc/security/keytab/nn.service.keytab':
        principals => ["nn/$${::fqdn}@$${realm}"],
      }
      kerberos::keytab{'/etc/security/keytab/zookeeper.service.keytab':
        principals => ["zookeeper/$${::fqdn}@$${realm}"],
      }
    }
    
    class local_kerberos_node {
      include local_kerberos
    
      # this will use kerberos::admin_principal and kerberos::admin_password parameters
      kerberos::keytab{'/etc/krb5.keytab':
        principals => ["host/$${::fqdn}@$${realm}"],
        wait       => 600,
      }
      kerberos::keytab{'/etc/security/keytab/dn.service.keytab':
        principals => ["dn/$${::fqdn}@$${realm}"],
        wait       => 600,
      }
      kerberos::keytab{'/etc/security/keytab/http.service.keytab':
        principals => ["HTTP/$${::fqdn}@$${realm}"],
        wait       => 600,
      }
    }
    
    node /${master_hostname}\..*/ {
      include ::site_hadoop::role::master_hdfs
      include ::site_hadoop::role::frontend
      include ::hadoop::httpfs
    
      class{'local_kerberos_master':
        stage => 'kerberos',
      }
    }
    
    node /${node_hostname}\d*\..*/ {
      include ::site_hadoop::role::slave
    
      class{'local_kerberos_node':
        stage => 'kerberos',
      }
    }