zulip-standalone

Description

Install a Zulip standalone server.

This uses the install script recommended by the Zulip project to setup a Zulip service and all dependencies.

TODO: configure email settings, use 'expect' instaed of patching the install script for letsencrypt

Variables

Name Type Default Description

email

string --

The email of the Zulip administrator. Required

hostname

string --

The domain name of the Zulip server. Required

version

string 2.0.3

The version of Zulip.

Code

doc:
  short_help: Install a Zulip standalone server.
  help: |
    Install a Zulip standalone server.

    This uses the install script recommended by the Zulip project to setup a Zulip service and all dependencies.

    #TODO: configure email settings, use 'expect' instaed of patching the install script for letsencrypt
args:
  version:
    doc:
      short_help: The version of Zulip.
    type: string
    default: 2.0.3
    required: false
  email:
    doc:
      short_help: The email of the Zulip administrator.
    type: string
    required: true
  hostname:
    doc:
      short_help: The domain name of the Zulip server.
    type: string
    required: true

frecklets:
- path-is-absent:
    path: /tmp/_zulip_install
    become: true
- archive-extracted:
    parent_dir_mode: '0700'
    owner: root
    group: root
    src: 'https://www.zulip.org/dist/releases/zulip-server-{{:: version ::}}.tar.gz'
    remote_src: true
    dest: /tmp/_zulip_install
- frecklet:
    name: lineinfile
    type: ansible-module
    properties:
      elevated: true
      idempotent: true
    desc:
      short: patch install script to agree to Letsencrypt TOS w/o user interaction
  task:
    become: true
    become_user: root
  vars:
    path: '/tmp/_zulip_install/zulip-server-{{:: version ::}}/scripts/lib/install'
    regexp: .*setup/setup-certbot.*
    line: '"$ZULIP_PATH"/scripts/setup/setup-certbot --agree-tos \'
- execute-shell:
    command: './zulip-server-{{:: version ::}}/scripts/setup/install --certbot --email={{::
      email ::}} --hostname={{:: hostname ::}}'
    chdir: /tmp/_zulip_install
    become_user: root
- path-is-absent:
    path: /tmp/_zulip_install
    become: true
frecklecute --community zulip-standalone --help

Usage: frecklecute zulip-standalone [OPTIONS]

  Install a Zulip standalone server.

  This uses the install script recommended by the Zulip project to setup a
  Zulip service and all dependencies.

  #TODO: configure email settings, use 'expect' instaed of patching the
  install script for letsencrypt

Options:
  --email EMAIL        The email of the Zulip administrator.  [required]
  --hostname HOSTNAME  The domain name of the Zulip server.  [required]
  --version VERSION    The version of Zulip.
  --help               Show this message and exit.
# -*- coding: utf-8 -*-


#
# module path: pycklets.zulip_standalone.ZulipStandalone
#


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

@dataclass
class ZulipStandalone(AutoPycklet):
    """Install a Zulip standalone server.

     This uses the install script recommended by the Zulip project to setup a Zulip service and all dependencies.

     #TODO: configure email settings, use 'expect' instaed of patching the install script for letsencrypt

       Args:
         email: The email of the Zulip administrator.
         hostname: The domain name of the Zulip server.
         version: The version of Zulip.

    """

    FRECKLET_ID = "zulip-standalone"

    email: str = None
    hostname: str = None
    version: str = None


    def __post_init__(self):
        super(ZulipStandalone, self).__init__(var_names=["email", "hostname", "version"])


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


#
# module path: pycklets.zulip_standalone.ZulipStandalone
#


from pyckles import AutoPycklet

class ZulipStandalone(AutoPycklet):
    """Install a Zulip standalone server.

     This uses the install script recommended by the Zulip project to setup a Zulip service and all dependencies.

     #TODO: configure email settings, use 'expect' instaed of patching the install script for letsencrypt

       Args:
         email: The email of the Zulip administrator.
         hostname: The domain name of the Zulip server.
         version: The version of Zulip.

    """

    FRECKLET_ID = "zulip-standalone"

    def __init__(self, email=None, hostname=None, version="2.0.3"):

        super(ZulipStandalone, self).__init__(var_names=["email", "hostname", "version"])
        self._email = email
        self._hostname = hostname
        self._version = version

    @property
    def email(self):
        return self._email

    @email.setter
    def email(self, email):
        self._email = email

    @property
    def hostname(self):
        return self._hostname

    @hostname.setter
    def hostname(self, hostname):
        self._hostname = hostname

    @property
    def version(self):
        return self._version

    @version.setter
    def version(self, version):
        self._version = version



frecklet_class = ZulipStandalone