openziti / fablab

The Fabulous Laboratory
Apache License 2.0
11 stars 4 forks source link

Pluggable Infrastructure Strategies #4

Closed michaelquigley closed 4 years ago

michaelquigley commented 4 years ago

The 0.3.x series is currently hardcoded to use terraform as it's framework for expressing infrastructure. The infrastructure expression lifecycle stage is currently idempotent, because terraform apply itself is idempotent.

We're going to want to be able to swap in different infrastructure expression strategies. In a lot of cases, we may want multiple models to share a single chunk of infrastructure (characterization, for example). So, we may want to be able to express additional models on shared infrastructure.

Possibly co-develop an "inventory-based" infrastructure expression strategy. The existing terraform-based strategy could emit inventory data, which could then be re-used to express additional models on top of.

michaelquigley commented 4 years ago

First cut will be a "linked" infrastructure strategy, that allows a model to be initialized from the label of an existing, initialized model.

The first model (zitilab/characterization/ziti, for example) will be expressed using the terraform strategy. The second model (zitilab/characterization/internet) will be expressed using the linked strategy. Then anytime the infrastructure is expressed in the internet model, it will update the linked expression from the parent model.

This will allow us to keep models relatively independent and covariant, sharing the same infrastructure.

michaelquigley commented 4 years ago

Closing for now, as we now incorporate the linked infrastructure strategy, allowing models to piggyback on the expressed infrastructure of other models.

Future enhancement issues will express requirements for specific strategy implementations.