The airshipctl tool is designed to work against declarative infrastructure housed in source control and manage the lifecycle of a site.

architecture diagram

Example Usage

In a nutshell, users of airshipctl should be able to do the following:

  1. Create an airshipctl Airship Configuration for their site - sort of like a kubeconfig file. Airshipctl can create a pre-configured config file by running airshipctl config init.

  2. Create a set of declarative documents representing the infrastructure (baremetal, cloud) and software.

  3. Run airshipctl document pull to clone the document repositories in your Airship Configuration.

  4. When deploying against baremetal infrastructure, run airshipctl baremetal isogen to generate a self-contained ISO that can be used to boot the first host in the cluster into an ephemeral Kubernetes node.

  5. When deploying against baremetal infrastructure, run airshipctl baremetal remotedirect to remotely provision the first machine in the cluster using the generated ISO, providing an ephemeral Kubernetes instance that airshipctl can communicate with for subsequent steps. This ephemeral host provides a foothold in the target environment so we can follow the standard cluster-api bootstrap flow.

  6. Run airshipctl phase run initinfra-ephemeral to bootstrap the new ephemeral cluster with enough of the chosen cluster-api provider components to provision the target cluster.

  7. Run airshipctl clusterctl to use the ephemeral Kubernetes host to provision at least one node of the target cluster using the cluster-api bootstrap flow.

  8. Run airshipctl cluster initinfra --clustertype=target to bootstrap the new target cluster with any remaining infrastructure necessary to begin running more complex workflows such as Argo.

  9. Run airshipctl workflow submit sitemanage to run the out of the box sitemanage workflow, which will leverage Argo to handle bootstrapping the remaining infrastructure as well as deploying and/or updating software.

As users evolve their sites declaration, whether adding additional infrastructure, or software declarations, they can re-run airshipctl workflow submit sitemanage to introduce those changes to the site.