bitovi / bitovi/bitops

Operations Repo Composability

Open
#322 2 comments 0 reactions 0 assignees View on GitHub
feature
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.