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
versionto reflect the coasti spec, just so our cli tool and conventions can go through changes.