Operations Repo Composability
- Dominant language
- Python
- Stars
- 37
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
# Purpose
Operations repos give an opportunity to configure sets of configurations across multiple IaC tools. Once you have a [catalog](https://github.com/bitovi/bitops/issues/321) (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:
```
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
```
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 specified `environment` 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.
Contributor guide
Research direction
The issue names no files, tests, or entry points. Start by reviewing the existing environment-level configuration and deploy-time execution flow, then resolve how external repositories, environments, versions, extraction, composition, and other configuration should work; done means an agreed design and an implemented, tested composability mechanism.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ansible, helm, kubernetes, python, terraform
- Domain
- cloud, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100