Puppet Class: superset::install
- Defined in:
- manifests/install.pp
Summary
Overview
Creates the Superset user and configures a Python virtual environment for installing Apache Superset and its dependent Python libraries
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'manifests/install.pp', line 7
class superset::install {
group { $superset::user :
ensure => present,
}
user { $superset::user:
ensure => present,
gid => $superset::user,
managehome => true,
}
$superset_venv_dir = "${superset::install_dir}/apache-superset"
# Add script for exporting the SUPERSET_CONFIG_PATH
file { '/etc/profile.d/superset.sh':
ensure => file,
owner => $superset::user,
group => $superset::user,
mode => '0755',
content => epp('superset/superset.sh.epp', { superset_dir => $superset_venv_dir }),
}
# Create external fact for the install directory
file { '/opt/puppetlabs/facter/facts.d/superset_installdir.txt':
ensure => file,
owner => $superset::user,
group => $superset::user,
mode => '0755',
content => "superset_installdir=${$superset_venv_dir}",
}
$venv_python_ver = lookup('superset::python_version', String) ? {
/\Apython([0-9])([0-9]+)/ => "${1}.${2}",
/\Apython?([0-9])/ => "${1}",
/\Arh-python([0-9])([0-9]+)/ => "${1}.${2}",
/\Arh-python([0-9])/ => "${1}",
default => lookup('superset::python_version', String),
}
# Create virtual environment for apache superset
python::pyvenv { $superset_venv_dir:
ensure => present,
version => $venv_python_ver,
owner => $superset::user,
group => $superset::user,
venv_dir => $superset_venv_dir,
systempkgs => false,
}
# Update pip before install
python::pip { 'pip':
ensure => 'present',
pkgname => 'pip',
virtualenv => $superset_venv_dir,
owner => $superset::user,
group => $superset::user,
}
# Update wheel before install
python::pip { 'wheel':
ensure => 'present',
pkgname => 'wheel',
virtualenv => $superset_venv_dir,
owner => $superset::user,
group => $superset::user,
}
# Install apache superset
python::pip { 'apache-superset':
ensure => $superset::version,
pkgname => 'apache-superset',
virtualenv => $superset_venv_dir,
owner => $superset::user,
group => $superset::user,
}
$superset::additional_python_lib.each | String $pkgname | {
python::pip { $pkgname:
ensure => 'present',
pkgname => $pkgname,
virtualenv => $superset_venv_dir,
owner => $superset::user,
group => $superset::user,
}
}
# Install python libraries for managing the webserver
if $superset::manage_webserver {
if $superset::gunicorn_worker_class == 'sync' {
$webserver_venv_pip_pkg = ['gunicorn']
} else {
$webserver_venv_pip_pkg = ['gunicorn', $superset::gunicorn_worker_class]
}
$webserver_venv_pip_pkg.each | String $pkgname | {
python::pip { $pkgname:
ensure => 'present',
pkgname => $pkgname,
virtualenv => $superset_venv_dir,
owner => $superset::user,
group => $superset::user,
}
}
}
# Install required database drivers
$superset::db_drivers.each | String $pkgname | {
python::pip { $pkgname:
ensure => 'present',
pkgname => $pkgname,
virtualenv => $superset_venv_dir,
owner => $superset::user,
group => $superset::user,
}
}
}
|