superset-service

Description

Install a Superset business intelligence service.

This only installs the application, and a systemd service unit. For a full setup, check out the 'superset-standalone' frecklet.

Variables

Name Type Default Description

admin_email

string --

The email address of the admin user.

admin_firstname

string --

The first name of the admin user.

admin_lastname

string --

The last name of the admin user.

admin_password

string --

The service admin password.

admin_username

string admin

The username of the admin user.

db_host_ip

string 127.0.0.1

The db host ip address.

db_name

string superset

the db name.

db_password

string --

The db password.

db_type

string sqlite

The type of db to use.

db_user

string superset

The db username.

python_version

string 3.7.2

The version of Python to use for the Superset virtualenv.

superset_group

string superset

The superset group.

superset_user

string superset

The superset user.

superset_version

string 0.28.1

The version of superset.

Code

doc:
  short_help: Install a Superset service.
  help: |
    Install a Superset business intelligence service.

    This only installs the application, and a systemd service unit. For a full setup, check out the 'superset-standalone' frecklet.

args:
  db_type:
    doc:
      short_help: The type of db to use.
    type: string
    default: sqlite
    allowed:
    - sqlite
    - postgresql
    - mariadb
    - mysql
  db_user:
    doc:
      short_help: The db username.
    type: string
    required: false
    default: superset
  db_host_ip:
    doc:
      short_help: The db host ip address.
    type: string
    default: 127.0.0.1
    required: true
  db_name:
    doc:
      short_help: the db name.
    type: string
    default: superset
  db_password:
    doc:
      short_help: The db password.
    type: string
    required: false
  admin_username:
    doc:
      short_help: The username of the admin user.
    type: string
    required: false
    default: admin
  admin_firstname:
    doc:
      short_help: The first name of the admin user.
    type: string
    required: false
  admin_lastname:
    doc:
      short_help: The last name of the admin user.
    type: string
    required: false
  admin_email:
    doc:
      short_help: The email address of the admin user.
    type: string
    required: false
  admin_password:
    doc:
      short_help: The service admin password.
    type: string
    required: false
  superset_user:
    doc:
      short_help: The superset user.
    type: string
    default: superset
  superset_group:
    doc:
      short_help: The superset group.
    type: string
    default: superset
  python_version:
    doc:
      short_help: The version of Python to use for the Superset virtualenv.
    type: string
    default: 3.7.2
  superset_version:
    doc:
      short_help: The version of superset.
    type: string
    required: false
    default: 0.28.1


frecklets:
- python-virtualenv:
    user: '{{:: superset_user ::}}'
    group: '{{:: superset_group ::}}'
    system_user: true
    base_path: /var/lib/pyenv
    python_version: '{{:: python_version ::}}'
    venv_name: superset
    python_packages:
    - pandas==0.23.4
    - psycopg2-binary
    - gevent
    - SQLAlchemy==1.2.18
    - 'superset=={{:: superset_version ::}}'
    - pymssql
    - mysqlclient
    system_dependencies:
    - build-essential
    - libssl-dev
    - libffi-dev
    - libsasl2-dev
    - libldap2-dev
    - libmariadbclient-dev
- superset-service-configuration-file:
    path: /etc/superset/superset_config.py
    owner: superset
    group: superset
    mode: '0700'
    db_type: '{{:: db_type ::}}'
    db_user: '{{:: db_user ::}}'
    db_password: '{{:: db_password ::}}'
    db_host_ip: '{{:: db_host_ip ::}}'
    db_name: '{{:: db_name ::}}'
- superset-service-init:
    admin_username: '{{:: admin_username ::}}'
    admin_firstname: '{{:: admin_firstname ::}}'
    admin_lastname: '{{:: admin_lastname ::}}'
    admin_email: '{{:: admin_email ::}}'
    admin_password: '{{:: admin_password ::}}'
    superset_virtualenv: '/var/lib/pyenv/versions/{{:: python_version ::}}/envs/superset'
- systemd-service-unit:
    name: superset
    desc: Superset service daemon (gunicorn)
    service_user: superset
    service_group: superset
    service_exec_start: /var/lib/pyenv/versions/superset/bin/gunicorn -w 10 -k gevent
      --timeout 120 -b 0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size
      0 superset:app --pythonpath /etc/superset/ --pid /run/superset/superset.pid
    service_exec_reload: /bin/kill -s HUP $MAINPID
    service_exec_stop: /bin/kill -s TERM $MAINPID
    service_private_tmp: true
    service_working_directory: /var/lib/pyenv/versions/superset/
    service_exec_start_pre:
    - /bin/mkdir /run/superset
    - /bin/chown -R superset:superset /run/superset
    service_exec_stop_post:
    - /bin/rm -rf /run/superset
    service_permissions_start_only: true
    unit_after:
    - network.target
    install_wanted_by:
    - multi-user.target
    enabled: true
    started: true
    service_pid_file: /run/superset/superset.pid
frecklecute --community superset-service --help

Usage: frecklecute superset-service [OPTIONS]

  Install a Superset business intelligence service.

  This only installs the application, and a systemd service unit. For a full
  setup, check out the 'superset-standalone' frecklet.

Options:
  --admin-email ADMIN_EMAIL       The email address of the admin user.
  --admin-firstname ADMIN_FIRSTNAME
                                  The first name of the admin user.
  --admin-lastname ADMIN_LASTNAME
                                  The last name of the admin user.
  --admin-password ADMIN_PASSWORD
                                  The service admin password.
  --admin-username ADMIN_USERNAME
                                  The username of the admin user.
  --db-host-ip DB_HOST_IP         The db host ip address.
  --db-name DB_NAME               the db name.
  --db-password DB_PASSWORD       The db password.
  --db-type DB_TYPE               The type of db to use.
  --db-user DB_USER               The db username.
  --python-version PYTHON_VERSION
                                  The version of Python to use for the
                                  Superset virtualenv.
  --superset-group SUPERSET_GROUP
                                  The superset group.
  --superset-user SUPERSET_USER   The superset user.
  --superset-version SUPERSET_VERSION
                                  The version of superset.
  --help                          Show this message and exit.
# -*- coding: utf-8 -*-


#
# module path: pycklets.superset_service.SupersetService
#


from dataclasses import dataclass
from pyckles import AutoPycklet
from typing import *    # noqa

@dataclass
class SupersetService(AutoPycklet):
    """Install a Superset business intelligence service.

     This only installs the application, and a systemd service unit. For a full setup, check out the 'superset-standalone' frecklet.

       Args:
         admin_email: The email address of the admin user.
         admin_firstname: The first name of the admin user.
         admin_lastname: The last name of the admin user.
         admin_password: The service admin password.
         admin_username: The username of the admin user.
         db_host_ip: The db host ip address.
         db_name: the db name.
         db_password: The db password.
         db_type: The type of db to use.
         db_user: The db username.
         python_version: The version of Python to use for the Superset virtualenv.
         superset_group: The superset group.
         superset_user: The superset user.
         superset_version: The version of superset.

    """

    FRECKLET_ID = "superset-service"

    admin_email: str = None
    admin_firstname: str = None
    admin_lastname: str = None
    admin_password: str = None
    admin_username: str = None
    db_host_ip: str = None
    db_name: str = None
    db_password: str = None
    db_type: str = None
    db_user: str = None
    python_version: str = None
    superset_group: str = None
    superset_user: str = None
    superset_version: str = None


    def __post_init__(self):
        super(SupersetService, self).__init__(var_names=["admin_email", "admin_firstname", "admin_lastname", "admin_password", "admin_username", "db_host_ip", "db_name", "db_password", "db_type", "db_user", "python_version", "superset_group", "superset_user", "superset_version"])


frecklet_class = SupersetService
# -*- coding: utf-8 -*-


#
# module path: pycklets.superset_service.SupersetService
#


from pyckles import AutoPycklet

class SupersetService(AutoPycklet):
    """Install a Superset business intelligence service.

     This only installs the application, and a systemd service unit. For a full setup, check out the 'superset-standalone' frecklet.

       Args:
         admin_email: The email address of the admin user.
         admin_firstname: The first name of the admin user.
         admin_lastname: The last name of the admin user.
         admin_password: The service admin password.
         admin_username: The username of the admin user.
         db_host_ip: The db host ip address.
         db_name: the db name.
         db_password: The db password.
         db_type: The type of db to use.
         db_user: The db username.
         python_version: The version of Python to use for the Superset virtualenv.
         superset_group: The superset group.
         superset_user: The superset user.
         superset_version: The version of superset.

    """

    FRECKLET_ID = "superset-service"

    def __init__(self, admin_email=None, admin_firstname=None, admin_lastname=None, admin_password=None, admin_username="admin", db_host_ip="127.0.0.1", db_name="superset", db_password=None, db_type="sqlite", db_user="superset", python_version="3.7.2", superset_group="superset", superset_user="superset", superset_version="0.28.1"):

        super(SupersetService, self).__init__(var_names=["admin_email", "admin_firstname", "admin_lastname", "admin_password", "admin_username", "db_host_ip", "db_name", "db_password", "db_type", "db_user", "python_version", "superset_group", "superset_user", "superset_version"])
        self._admin_email = admin_email
        self._admin_firstname = admin_firstname
        self._admin_lastname = admin_lastname
        self._admin_password = admin_password
        self._admin_username = admin_username
        self._db_host_ip = db_host_ip
        self._db_name = db_name
        self._db_password = db_password
        self._db_type = db_type
        self._db_user = db_user
        self._python_version = python_version
        self._superset_group = superset_group
        self._superset_user = superset_user
        self._superset_version = superset_version

    @property
    def admin_email(self):
        return self._admin_email

    @admin_email.setter
    def admin_email(self, admin_email):
        self._admin_email = admin_email

    @property
    def admin_firstname(self):
        return self._admin_firstname

    @admin_firstname.setter
    def admin_firstname(self, admin_firstname):
        self._admin_firstname = admin_firstname

    @property
    def admin_lastname(self):
        return self._admin_lastname

    @admin_lastname.setter
    def admin_lastname(self, admin_lastname):
        self._admin_lastname = admin_lastname

    @property
    def admin_password(self):
        return self._admin_password

    @admin_password.setter
    def admin_password(self, admin_password):
        self._admin_password = admin_password

    @property
    def admin_username(self):
        return self._admin_username

    @admin_username.setter
    def admin_username(self, admin_username):
        self._admin_username = admin_username

    @property
    def db_host_ip(self):
        return self._db_host_ip

    @db_host_ip.setter
    def db_host_ip(self, db_host_ip):
        self._db_host_ip = db_host_ip

    @property
    def db_name(self):
        return self._db_name

    @db_name.setter
    def db_name(self, db_name):
        self._db_name = db_name

    @property
    def db_password(self):
        return self._db_password

    @db_password.setter
    def db_password(self, db_password):
        self._db_password = db_password

    @property
    def db_type(self):
        return self._db_type

    @db_type.setter
    def db_type(self, db_type):
        self._db_type = db_type

    @property
    def db_user(self):
        return self._db_user

    @db_user.setter
    def db_user(self, db_user):
        self._db_user = db_user

    @property
    def python_version(self):
        return self._python_version

    @python_version.setter
    def python_version(self, python_version):
        self._python_version = python_version

    @property
    def superset_group(self):
        return self._superset_group

    @superset_group.setter
    def superset_group(self, superset_group):
        self._superset_group = superset_group

    @property
    def superset_user(self):
        return self._superset_user

    @superset_user.setter
    def superset_user(self, superset_user):
        self._superset_user = superset_user

    @property
    def superset_version(self):
        return self._superset_version

    @superset_version.setter
    def superset_version(self, superset_version):
        self._superset_version = superset_version



frecklet_class = SupersetService