Open mickmcgrath13 opened 1 year ago
You could add stackstorm like:
default-environments:
- repo: https://github.com/bitops-operations-repos/kubernetes
environment: eks
version: 1.0.0
- repo: https://github.com/bitops-operations-repos/observability
environment: promStack
version: 1.2.0
- repo: https://github.com/bitops-operations-repos/observability
environment: grafanaStack
version: 1.1.0
- repo: https://github.com/bitops-operations-repos/k8s-ingress
environment: nginx
version: 1.0.0
- repo: https://github.com/bitops-operations-repos/k8s-service-mesh
environment: istio
version: 1.0.5
- repo: https://github.com/bitops-operations-repos/stackstorm
environment: ha-k8s
version: 1.0.0
You could have a VM-based HA stackstorm like:
default-environments:
- repo: https://github.com/bitops-operations-repos/stackstorm
environment: ha-vm-aws
version: 1.0.0
this would pull in terraform to spin up a set of VMs and then use ansible to provision StackStorm in a HA setup
Purpose
Operations repos give an opportunity to configure sets of configurations across multiple IaC tools. Once you have a catalog (either your own set of ops repos/ops repo environments or a community provided set), it becomes easier to quick-start with stacks of configurations. The problem even with a catalog is that users still need to copy configuration into their own ops repo environments.
This issue is to outline an approach to allow referencing external ops repos/ops repo environments rather than having to copy them directly.
Implementation thoughts
Introduce a
bitops.config.yaml
at the environment level (which has other benefits as well) which has a block to the effect of:In this example, the deploy time execution of bitops against the environment in which this
bitops.config.yaml
is specified would first pull each of the external repos, then it would extract the specifiedenvironment
contents, and then it would include the contents into the deployment configuration.The above example would be sufficient to spin up an EKS cluster and add a prometheus stack (prom, node-exporter, alertmanager, etc), a grafana stack (grafana, loki, etc), an nginx ingress controller, and istio.
Obviously, much discussion should be had on exactly how these mechanisms work and what else can/should be specified.