Specification for the coasti installer and folder structureΒΆ

Getting started and CLIΒΆ

pip install coasti

# interactive, creates at least customer repo from template
coasti init

coasti configure # git dev / prod branches? maybe part of git init


# install coasti products
coasti product list # show whats installed etc
coasti product add  # should this install, or only add to config? [wrapper for more subcommands]
coasti product update
coasti product configure

# install stack components ('tools') like superset or sling
coasti tool add

Folder structureΒΆ

Root configΒΆ

  • no product specific configs, except how to install them, and which ones are enabled.

β”œβ”€β”€ coasti/
    β”œβ”€β”€ config/
        β”œβ”€β”€ secrets/
            β”œβ”€β”€ secret_one  # files, holding one secret each
            β”œβ”€β”€ secret_two
        β”œβ”€β”€ products.yml    # which to enable, how to get it
        β”œβ”€β”€ tools.yml       # which to enable, how to get it
        β”œβ”€β”€ [product]/      # symlink
    β”œβ”€β”€ products/
        β”œβ”€β”€ [product]/      # code of installed product, associated with remote content repo
    β”œβ”€β”€ tools/              # shared between products. TBD: or in products, weil eh images.
    β”œβ”€β”€ data/
        β”œβ”€β”€ [product]/      # symlink
    β”œβ”€β”€ logs/               # log on a per-product level as much as possible, and link.
        β”œβ”€β”€ [product]/      # symlink
        β”œβ”€β”€ [tool]/         # symlink
    β”œβ”€β”€ run_all.sh          # TBD, aim is: `coasti product run` and `coasti run` (for all products)
                            # to that end, think about how to have product-level full stack

Requirements for productsΒΆ

β”œβ”€β”€ [product]/
    β”œβ”€β”€ config/
        β”œβ”€β”€ secrets/
            β”œβ”€β”€ secret_one  # files, holding one secret each
            β”œβ”€β”€ secret_two
    β”œβ”€β”€ logs/               # log on a per-product level as much as possible, and link.
    β”œβ”€β”€ run_product.sh      # TBD
    β”œβ”€β”€ data/
    β”œβ”€β”€ tools/              # TBD
    β”œβ”€β”€ info.yml            # or coasti.yml information about this product. required, think pyproject.toml

Gotchas, Future ProofingΒΆ

  • all our self-designed yaml should have a version to reflect the coasti spec, just so our cli tool and conventions can go through changes.