Control plane
A control plane acts as an API for provisioning and managing infrastructure. Well-known examples include AWS itself and Kubernetes (K8s).
There is a blog article about this proof of concept.
Requirements
Section titled “Requirements”ctlp (control plane) requires Clojure. It doesn’t work with Babashka. Direnv is not required but it is convinient.
brew install clojure/tools/clojuredevbox global add clojureGetting started
Section titled “Getting started”The best way to learn how it works is to install the Clojure tool in development mode.
- Clone the repo
Terminal window git clone -b control-plane https://github.com/amiorin/big-config.git big-config/control-plane && cd big-config/control-plane - Add ctrlp as tool to Clojure
Terminal window clojure -Ttools install big-config/control-plane '{:local/root "."}' :as ctlp - Show help
Terminal window alias p="clojure -Tctlp"p help
Project structure
Section titled “Project structure”Directorydist/
- main.tf.json The rendered Terraform code. This file is not committed.
Directorysrc/clj
- control_plane.clj The CLI tool.
- prevayler.clj The vendored library used for persistency.
- .envrc Direnv file to load the AWS env vars.
Control plan library Clojure functions to manage the desired state