A CLI for managing declarative infrastructure.
Go to file
Alexey Odinokov bb7bd1c58e Substituting redfish-emulator and reverse-proxy with Apache
The current implementation of airship-libvirt-gate is using
sushy-emulator binary to emulate redfish. Sushy-emulator works
only for http and also can’t authenticate users out-of-box if
ran by itself. In order to check https and authentication the
reverse-proxy was introduced. This approach had several
drawbacks:
1) http still doesn’t check auth
2) to use apache for https only is too heavy solution for https
This change converts reverse proxy to apache running
sushy-emulator as wsgi backend, that gives an ability to check
authentication for both http and https.
We’re also getting rid of ad-hoc sushy-emulator service and
using out-of-box apache service implementation.
The code also introduces gathering of apache resulting configs
and logs for quicker debug if needed.
Right now authentication is disabled, since manifests are
written in a way so they don’t use them. If it’s necessary to
enable it, just set username here[1]

PS
There is ability to use apache for http-server [2], but it’s
better to do as a separate PR

[1]
roles/airship-libvirt-gate/defaults/main.yaml
[2]
roles/http-fileserver

Change-Id: I43b5bca41519c88b01535c156b2db0e9edaa81bb
2020-04-17 15:55:48 +00:00
.github Add SECURITY.md 2020-02-20 16:57:57 -06:00
cmd Merge "Remove getters/setters of AirshipCTLSettings" 2020-04-13 16:15:02 +00:00
docs Create documentation for new developers 2020-04-08 19:22:27 +05:00
manifests Merge "Fix ironic deployment template" 2020-04-03 14:59:02 +00:00
pkg Merge "Remove getters/setters of AirshipCTLSettings" 2020-04-13 16:15:02 +00:00
playbooks Substituting redfish-emulator and reverse-proxy with Apache 2020-04-17 15:55:48 +00:00
roles Substituting redfish-emulator and reverse-proxy with Apache 2020-04-17 15:55:48 +00:00
testdata/k8s [AIR-97] Adding initinfra subcommand 2020-02-27 08:38:51 -06:00
tests/ansible Substituting redfish-emulator and reverse-proxy with Apache 2020-04-17 15:55:48 +00:00
testutil Add copyright for missing files 2020-04-09 08:35:59 -05:00
tools Switching local gating scripts to Python3 to comply with Zuul 2020-04-11 06:53:40 +00:00
zuul.d Merge "Use 16GB flavor for gate job and let it vote" 2020-04-03 17:09:27 +00:00
.gitignore [#6] Add config init subcommand 2020-02-17 16:22:10 -06:00
.gitreview Gerrit: Add .gitreview file 2019-06-25 08:11:57 -05:00
.golangci.yaml Add copyright for missing files 2020-04-09 08:35:59 -05:00
CONTRIBUTING.md [#39] Add Zuul job for GitHub Issues integration 2020-03-02 09:49:27 -06:00
Dockerfile [#81] makefile to check for unused test data 2020-03-08 00:05:48 +00:00
go.mod Update Kustomize to v3.3.1 2020-04-03 12:11:33 -05:00
go.sum Update Kustomize to v3.3.1 2020-04-03 12:11:33 -05:00
LICENSE Add LICENSE 2019-10-19 14:16:05 -05:00
main.go Add copyright for missing files 2020-04-09 08:35:59 -05:00
Makefile [#81] makefile to check for unused test data 2020-03-08 00:05:48 +00:00
README.md [#37] Change issue tracker info to GitHub Issues 2020-02-12 11:13:14 -06:00
Vagrantfile [#32]: scripts for local run playbooks 2020-02-28 17:24:32 -08:00

airshipctl

What is airshipctl

The airshipctl project is a CLI tool and Golang library for declarative management of infrastructure and software.

The goal for the project is to provide a seamless experience to operators wishing to leverage the best of breed open source 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