A CLI for managing declarative infrastructure.
Go to file
Ian H. Pittwood 5b7de06eec Add proxy options to Makefile docker build
Adds options relating to proxy settings in the Makefile to be used
during the execution of docker build. The settings are optional to be
used and are set up similarly to other Airship projects such as [0] and
[1].

To set proxy settings during docker build, execute the command as
follows:

```
make docker-image \
  -e PROXY=<The proxy URL> \
  -e NO_PROXY=<comma-separated list of URLs/IPs not using the proxy> \
  -e USE_PROXY=true
```

[0] https://opendev.org/airship/pegleg/src/branch/master/Makefile
[1] https://opendev.org/airship/promenade/src/branch/master/Makefile

Change-Id: I92258465d9638b40797d38ba5d8b835fc38df23f
2019-12-19 18:22:41 +00:00
cmd Bump kubernetes 1.16.3 as a main dependency 2019-11-15 13:24:11 -06:00
docs Minor documentation cleanup 2019-12-16 09:48:04 -06:00
pkg Move all error structs to common package 'errors' 2019-12-01 14:14:09 +04:00
playbooks CI: Add a functional test for interacting with a existing k8s cluster 2019-07-09 21:04:15 +00:00
testutil Isolate unit tests by using temp directories 2019-11-12 15:37:29 -06:00
tools Add make tidy to check for up-to-date go.mod 2019-11-15 09:41:41 -06:00
zuul.d Add Zull job for mirroring to GitHub 2019-07-16 16:50:49 -05:00
.gitignore Remove old .gitignores 2019-06-06 09:30:51 -05:00
.gitreview Gerrit: Add .gitreview file 2019-06-25 08:11:57 -05:00
.golangci.yaml Initial commit for document pkg library 2019-10-04 14:22:26 -07:00
CONTRIBUTING.md Initial Contributions and Developer Docs 2019-11-07 10:48:32 -08:00
Dockerfile Utilize Docker caching to speed up image building 2019-11-19 14:00:01 -06:00
go.mod Bump kubernetes 1.16.3 as a main dependency 2019-11-15 13:24:11 -06:00
go.sum Bump kubernetes 1.16.3 as a main dependency 2019-11-15 13:24:11 -06:00
LICENSE Add LICENSE 2019-10-19 14:16:05 -05:00
main.go Rename module to reflect its new location 2019-07-01 12:15:29 -05:00
Makefile Add proxy options to Makefile docker build 2019-12-19 18:22:41 +00:00
README.md Minor README formatting fixes 2019-11-19 08:20:01 +01:00

airshipctl

What is airshipctl

The airshipctl project is a CLI tool and go-lang library for declaratively managing infrastructure and software.

The goal for the project is to provide a seamless experience to operators wishing to leverage the best of breed opensource options such as the Cluster API, Metal3-io, Kustomize, Kubeadm, and Argo -- into a straight forward and easily approachable tool.

This project is the heart of the effort to produce Airship 2.0, which has three main evolutions from 1.0:

  • Expand our use of Entrenched Upstream Projects.
  • Embrace Kubernetes Custom Resource Definitions (CRD) Everything becomes an Object in Kubernetes.
  • Make the Airship Control Plane Ephemeral.

To learn more about the Airship 2.0 evolution, please check out the Airship Blog Series.

Contributing

This project is under heavy active development to reach an alpha state.

New developers should read the contributing guide as well as the developer guide in order to get started.

Architecture

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.
  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 bootstrap 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 bootstrap 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 cluster initinfra --clustertype=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.

Project Resources