Add automated CLI documentation

This change creates a tool that generates CLI documentation each time
`make update-golden` is executed.

Change-Id: I4bcdf299cd424f4cff1ecf6503822d304e9a3947
Signed-off-by: Drew Walters <andrew.walters@att.com>
This commit is contained in:
Drew Walters 2020-05-12 17:47:43 +00:00
parent 392ff6a88e
commit 0d7dc4de24
38 changed files with 1353 additions and 574 deletions

View File

@ -41,6 +41,9 @@ USE_PROXY ?= false
# Godoc server options
GD_PORT ?= 8080
# Documentation location
DOCS_DIR ?= docs
.PHONY: depend
depend:
@go mod download
@ -154,6 +157,12 @@ godoc:
@echo "Follow this link to package documentation: http://localhost:${GD_PORT}/pkg/opendev.org/airship/airshipctl/"
@godoc -http=":${GD_PORT}"
.PHONY: cli-docs
cli-docs:
@echo "Generating CLI documentation..."
@go run $(DOCS_DIR)/tools/generate_cli_docs.go
@echo "CLI documentation generated"
.PHONY: releasenotes
releasenotes:
@echo "TODO"
@ -169,6 +178,7 @@ update-golden: delete-golden
update-golden: TESTFLAGS += -update
update-golden: PKG = opendev.org/airship/airshipctl/cmd/...
update-golden: unit-tests
update-golden: cli-docs
# The delete-golden target is a utility for update-golden
.PHONY: delete-golden

View File

@ -0,0 +1,28 @@
## airshipctl
A unified entrypoint to various airship components
### Synopsis
A unified entrypoint to various airship components
### Options
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
-h, --help help for airshipctl
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts
* [airshipctl cluster](airshipctl_cluster.md) - Manage Kubernetes clusters
* [airshipctl completion](airshipctl_completion.md) - Generate completion script for the specified shell (bash or zsh)
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file
* [airshipctl document](airshipctl_document.md) - Manage deployment documents
* [airshipctl phase](airshipctl_phase.md) - Manage phases
* [airshipctl secret](airshipctl_secret.md) - Manage secrets
* [airshipctl version](airshipctl_version.md) - Show the version number of airshipctl

View File

@ -0,0 +1,33 @@
## airshipctl baremetal
Perform actions on baremetal hosts
### Synopsis
Perform actions on baremetal hosts
### Options
```
-h, --help help for baremetal
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
* [airshipctl baremetal ejectmedia](airshipctl_baremetal_ejectmedia.md) - Eject media attached to a baremetal host
* [airshipctl baremetal isogen](airshipctl_baremetal_isogen.md) - Generate baremetal host ISO image
* [airshipctl baremetal poweroff](airshipctl_baremetal_poweroff.md) - Shutdown a baremetal host
* [airshipctl baremetal poweron](airshipctl_baremetal_poweron.md) - Power on a host
* [airshipctl baremetal powerstatus](airshipctl_baremetal_powerstatus.md) - Retrieve the power status of a baremetal host
* [airshipctl baremetal reboot](airshipctl_baremetal_reboot.md) - Reboot a host
* [airshipctl baremetal remotedirect](airshipctl_baremetal_remotedirect.md) - Bootstrap the ephemeral host

View File

@ -0,0 +1,33 @@
## airshipctl baremetal ejectmedia
Eject media attached to a baremetal host
### Synopsis
Eject media attached to a baremetal host
```
airshipctl baremetal ejectmedia [flags]
```
### Options
```
-h, --help help for ejectmedia
-l, --labels string Label(s) to filter desired baremetal host documents
-n, --name string Name to filter desired baremetal host document
--phase string airshipctl phase that contains the desired baremetal host document(s) (default "bootstrap")
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,30 @@
## airshipctl baremetal isogen
Generate baremetal host ISO image
### Synopsis
Generate baremetal host ISO image
```
airshipctl baremetal isogen [flags]
```
### Options
```
-h, --help help for isogen
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,33 @@
## airshipctl baremetal poweroff
Shutdown a baremetal host
### Synopsis
Shutdown a baremetal host
```
airshipctl baremetal poweroff [flags]
```
### Options
```
-h, --help help for poweroff
-l, --labels string Label(s) to filter desired baremetal host documents
-n, --name string Name to filter desired baremetal host document
--phase string airshipctl phase that contains the desired baremetal host document(s) (default "bootstrap")
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,33 @@
## airshipctl baremetal poweron
Power on a host
### Synopsis
Power on a host
```
airshipctl baremetal poweron [flags]
```
### Options
```
-h, --help help for poweron
-l, --labels string Label(s) to filter desired baremetal host documents
-n, --name string Name to filter desired baremetal host document
--phase string airshipctl phase that contains the desired baremetal host document(s) (default "bootstrap")
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,33 @@
## airshipctl baremetal powerstatus
Retrieve the power status of a baremetal host
### Synopsis
Retrieve the power status of a baremetal host
```
airshipctl baremetal powerstatus [flags]
```
### Options
```
-h, --help help for powerstatus
-l, --labels string Label(s) to filter desired baremetal host documents
-n, --name string Name to filter desired baremetal host document
--phase string airshipctl phase that contains the desired baremetal host document(s) (default "bootstrap")
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,33 @@
## airshipctl baremetal reboot
Reboot a host
### Synopsis
Reboot a host
```
airshipctl baremetal reboot [flags]
```
### Options
```
-h, --help help for reboot
-l, --labels string Label(s) to filter desired baremetal host documents
-n, --name string Name to filter desired baremetal host document
--phase string airshipctl phase that contains the desired baremetal host document(s) (default "bootstrap")
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,30 @@
## airshipctl baremetal remotedirect
Bootstrap the ephemeral host
### Synopsis
Bootstrap the ephemeral host
```
airshipctl baremetal remotedirect [flags]
```
### Options
```
-h, --help help for remotedirect
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl baremetal](airshipctl_baremetal.md) - Perform actions on baremetal hosts

View File

@ -0,0 +1,30 @@
## airshipctl cluster
Manage Kubernetes clusters
### Synopsis
This command provides capabilities for interacting with a Kubernetes cluster,
such as getting status and deploying initial infrastructure.
### Options
```
-h, --help help for cluster
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
* [airshipctl cluster init](airshipctl_cluster_init.md) - Deploy cluster-api provider components
* [airshipctl cluster initinfra](airshipctl_cluster_initinfra.md) - Deploy initinfra components to cluster

View File

@ -0,0 +1,77 @@
## airshipctl cluster init
Deploy cluster-api provider components
### Synopsis
Initialize cluster-api providers based on airshipctl document set.
document set must contain document of Kind: Clusterctl in phase initinfra.
Path to initinfra phase is built based on airshipctl config
<manifest.target-path>/<subpath>/ephemeral/initinfra.
Clusterctl document example:
---
apiVersion: airshipit.org/v1alpha1
kind: Clusterctl
metadata:
labels:
airshipit.org/deploy-k8s: "false"
name: clusterctl-v1
init-options:
core-provider: "cluster-api:v0.3.3"
bootstrap-providers:
- "kubeadm:v0.3.3"
infrastructure-providers:
- "metal3:v0.3.1"
control-plane-providers:
- "kubeadm:v0.3.3"
providers:
- name: "metal3"
type: "InfrastructureProvider"
versions:
v0.3.1: manifests/function/capm3/v0.3.1
- name: "kubeadm"
type: "BootstrapProvider"
versions:
v0.3.3: manifests/function/cabpk/v0.3.3
- name: "cluster-api"
type: "CoreProvider"
versions:
v0.3.3: manifests/function/capi/v0.3.3
- name: "kubeadm"
type: "ControlPlaneProvider"
versions:
v0.3.3: manifests/function/cacpk/v0.3.3
```
airshipctl cluster init [flags]
```
### Examples
```
# Initialize clusterctl providers and components
airshipctl cluster init
```
### Options
```
-h, --help help for init
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl cluster](airshipctl_cluster.md) - Manage Kubernetes clusters

View File

@ -0,0 +1,44 @@
## airshipctl cluster initinfra
Deploy initinfra components to cluster
### Synopsis
Deploy initial infrastructure to kubernetes cluster such as
metal3.io, argo, tiller and other manifest documents with appropriate labels
```
airshipctl cluster initinfra [flags]
```
### Examples
```
# Deploy infrastructure to a cluster
airshipctl cluster initinfra
```
### Options
```
--cluster-type string select cluster type to deploy initial infrastructure to; currently only ephemeral is supported (default "ephemeral")
--dry-run don't deliver documents to the cluster, simulate the changes instead
-h, --help help for initinfra
--prune if set to true, command will delete all kubernetes resources that are not defined in airship documents and have airshipit.org/deployed=initinfra label
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl cluster](airshipctl_cluster.md) - Manage Kubernetes clusters

View File

@ -0,0 +1,43 @@
## airshipctl completion
Generate completion script for the specified shell (bash or zsh)
### Synopsis
Generate completion script for airshipctl for the specified shell (bash or zsh).
```
airshipctl completion SHELL [flags]
```
### Examples
```
# Save shell completion to a file
airshipctl completion bash > $HOME/.airship_completions
# Apply completions to the current shell
source <(airshipctl completion bash)
```
### Options
```
-h, --help help for completion
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components

View File

@ -0,0 +1,35 @@
## airshipctl config
Manage the airshipctl config file
### Synopsis
Manage the airshipctl config file
### Options
```
-h, --help help for config
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
* [airshipctl config get-cluster](airshipctl_config_get-cluster.md) - Get cluster information from the airshipctl config
* [airshipctl config get-context](airshipctl_config_get-context.md) - Get context information from the airshipctl config
* [airshipctl config get-credential](airshipctl_config_get-credential.md) - Get user credentials from the airshipctl config
* [airshipctl config import](airshipctl_config_import.md) - Merge information from a kubernetes config file
* [airshipctl config init](airshipctl_config_init.md) - Generate initial configuration files for airshipctl
* [airshipctl config set-cluster](airshipctl_config_set-cluster.md) - Manage clusters
* [airshipctl config set-context](airshipctl_config_set-context.md) - Manage contexts
* [airshipctl config set-credentials](airshipctl_config_set-credentials.md) - Manage user credentials
* [airshipctl config use-context](airshipctl_config_use-context.md) - Switch to a different context

View File

@ -0,0 +1,48 @@
## airshipctl config get-cluster
Get cluster information from the airshipctl config
### Synopsis
Display a specific cluster or all defined clusters if no name is provided.
Note that if a specific cluster's name is provided, the --cluster-type flag
must also be provided.
Valid values for the --cluster-type flag are [ephemeral|target].
```
airshipctl config get-cluster [NAME] [flags]
```
### Examples
```
# List all clusters
airshipctl config get-clusters
# Display a specific cluster
airshipctl config get-cluster --cluster-type=ephemeral exampleCluster
```
### Options
```
--cluster-type string type of the desired cluster
-h, --help help for get-cluster
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,47 @@
## airshipctl config get-context
Get context information from the airshipctl config
### Synopsis
Display information about contexts such as associated manifests, users, and clusters.
```
airshipctl config get-context [NAME] [flags]
```
### Examples
```
# List all contexts
airshipctl config get-contexts
# Display the current context
airshipctl config get-context --current
# Display a specific context
airshipctl config get-context exampleContext
```
### Options
```
--current get the current context
-h, --help help for get-context
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,44 @@
## airshipctl config get-credential
Get user credentials from the airshipctl config
### Synopsis
Display a specific user's credentials, or all defined user
credentials if no name is provided.
```
airshipctl config get-credential [NAME] [flags]
```
### Examples
```
# List all user credentials
airshipctl config get-credentials
# Display a specific user's credentials
airshipctl config get-credential exampleUser
```
### Options
```
-h, --help help for get-credential
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,40 @@
## airshipctl config import
Merge information from a kubernetes config file
### Synopsis
Merge the clusters, contexts, and users from an existing kubeConfig file into the airshipctl config file.
```
airshipctl config import <kubeConfig> [flags]
```
### Examples
```
# Import from a kubeConfig file"
airshipctl config import $HOME/.kube/config
```
### Options
```
-h, --help help for import
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,35 @@
## airshipctl config init
Generate initial configuration files for airshipctl
### Synopsis
Generate an airshipctl config file and its associated kubeConfig file.
These files will be written to the $HOME/.airship directory, and will contain
default configurations.
NOTE: This will overwrite any existing config files in $HOME/.airship
```
airshipctl config init [flags]
```
### Options
```
-h, --help help for init
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,67 @@
## airshipctl config set-cluster
Manage clusters
### Synopsis
Create or modify a cluster in the airshipctl config files.
Since a cluster can be either "ephemeral" or "target", you must specify
cluster-type when managing clusters.
```
airshipctl config set-cluster NAME [flags]
```
### Examples
```
# Set the server field on the ephemeral exampleCluster
airshipctl config set-cluster exampleCluster \
--cluster-type=ephemeral \
--server=https://1.2.3.4
# Embed certificate authority data for the target exampleCluster
airshipctl config set-cluster exampleCluster \
--cluster-type=target \
--client-certificate-authority=$HOME/.airship/ca/kubernetes.ca.crt \
--embed-certs
# Disable certificate checking for the target exampleCluster
airshipctl config set-cluster exampleCluster
--cluster-type=target \
--insecure-skip-tls-verify
# Configure client certificate for the target exampleCluster
airshipctl config set-cluster exampleCluster \
--cluster-type=target \
--embed-certs \
--client-certificate=$HOME/.airship/cert_file
```
### Options
```
--certificate-authority string path to a certificate authority
--cluster-type string the type of the cluster to add or modify
--embed-certs if set, embed the client certificate/key into the cluster
-h, --help help for set-cluster
--insecure-skip-tls-verify if set, disable certificate checking (default true)
--server string server to use for the cluster
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,55 @@
## airshipctl config set-context
Manage contexts
### Synopsis
Create or modify a context in the airshipctl config files.
```
airshipctl config set-context NAME [flags]
```
### Examples
```
# Create a new context named "exampleContext"
airshipctl config set-context exampleContext \
--namespace=kube-system \
--manifest=exampleManifest \
--user=exampleUser
--cluster-type=target
# Update the manifest of the current-context
airshipctl config set-context \
--current \
--manifest=exampleManifest
```
### Options
```
--cluster string set the cluster for the specified context
--cluster-type string set the cluster-type for the specified context
--current update the current context
-h, --help help for set-context
--manifest string set the manifest for the specified context
--namespace string set the namespace for the specified context
--user string set the user for the specified context
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,64 @@
## airshipctl config set-credentials
Manage user credentials
### Synopsis
Create or modify a user credential in the airshipctl config file.
Note that specifying more than one authentication method is an error.
```
airshipctl config set-credentials NAME [flags]
```
### Examples
```
# Create a new user credential with basic auth
airshipctl config set-credentials exampleUser \
--username=exampleUser \
--password=examplePassword
# Change the client-key of a user named admin
airshipctl config set-credentials admin \
--client-key=$HOME/.kube/admin.key
# Change the username and password of the admin user
airshipctl config set-credentials admin \
--username=admin \
--password=uXFGweU9l35qcif
# Embed client certificate data of the admin user
airshipctl config set-credentials admin \
--client-certificate=$HOME/.kube/admin.crt \
--embed-certs
```
### Options
```
--client-certificate string path to a certificate
--client-key string path to a key file
--embed-certs if set, embed the client certificate/key into the credential
-h, --help help for set-credentials
--password string password for the credential; mutually exclusive with token flag.
--token string token to use for the credential; mutually exclusive with username and password flags.
--username string username for the credential; mutually exclusive with token flag.
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,40 @@
## airshipctl config use-context
Switch to a different context
### Synopsis
Switch to a different context defined in the airshipctl config file.
```
airshipctl config use-context NAME [flags]
```
### Examples
```
# Switch to a context named "exampleContext"
airshipctl config use-context exampleContext
```
### Options
```
-h, --help help for use-context
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl config](airshipctl_config.md) - Manage the airshipctl config file

View File

@ -0,0 +1,29 @@
## airshipctl document
Manage deployment documents
### Synopsis
Manage deployment documents
### Options
```
-h, --help help for document
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
* [airshipctl document plugin](airshipctl_document_plugin.md) - Run as a kustomize exec plugin
* [airshipctl document pull](airshipctl_document_pull.md) - Pulls documents from remote git repository
* [airshipctl document render](airshipctl_document_render.md) - Render documents from model

View File

@ -0,0 +1,64 @@
## airshipctl document plugin
Run as a kustomize exec plugin
### Synopsis
This command is meant to be used as a kustomize exec plugin.
The command reads the configuration file CONFIG passed as a first argument and
determines a particular plugin to execute. Additional arguments may be passed
to this command and can be used by the particular plugin.
CONFIG must be a structured kubernetes manifest (i.e. resource) and must have
'apiVersion' and 'kind' keys. If the appropriate plugin was not found, the
command returns an error.
```
airshipctl document plugin CONFIG [ARGS] [flags]
```
### Examples
```
# Perform a replacement on a deployment. Prior to running this command,
# the file '/tmp/replacement.yaml' should be created as follows:
---
apiVersion: airshipit.org/v1alpha1
kind: ReplacementTransformer
metadata:
name: notImportantHere
replacements:
- source:
value: nginx:newtag
target:
objref:
kind: Deployment
fieldrefs:
- spec.template.spec.containers[name=nginx-latest].image
# The replacement can then be performed. Output defaults to stdout.
airshipctl document plugin /tmp/replacement.yaml
```
### Options
```
-h, --help help for plugin
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl document](airshipctl_document.md) - Manage deployment documents

View File

@ -0,0 +1,30 @@
## airshipctl document pull
Pulls documents from remote git repository
### Synopsis
Pulls documents from remote git repository
```
airshipctl document pull [flags]
```
### Options
```
-h, --help help for pull
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl document](airshipctl_document.md) - Manage deployment documents

View File

@ -0,0 +1,35 @@
## airshipctl document render
Render documents from model
### Synopsis
Render documents from model
```
airshipctl document render [flags]
```
### Options
```
-a, --annotation stringArray filter documents by Annotations
-g, --apiversion stringArray filter documents by API version
-f, --filter string logical expression for document filtering
-h, --help help for render
-k, --kind stringArray filter documents by Kinds
-l, --label stringArray filter documents by Labels
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl document](airshipctl_document.md) - Manage deployment documents

View File

@ -0,0 +1,29 @@
## airshipctl phase
Manage phases
### Synopsis
This command provides capabilities for interacting with phases,
such as getting list and applying specific one.
### Options
```
-h, --help help for phase
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
* [airshipctl phase apply](airshipctl_phase_apply.md) - Apply phase to a cluster

View File

@ -0,0 +1,42 @@
## airshipctl phase apply
Apply phase to a cluster
### Synopsis
Apply specific phase to kubernetes cluster such as control-plane, workloads, initinfra
```
airshipctl phase apply PHASE_NAME [flags]
```
### Examples
```
# Apply initinfra phase to a cluster
airshipctl phase apply initinfra
```
### Options
```
--dry-run don't deliver documents to the cluster, simulate the changes instead
-h, --help help for apply
--prune if set to true, command will delete all kubernetes resources that are not defined in airship documents and have airshipit.org/deployed=apply label
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl phase](airshipctl_phase.md) - Manage phases

View File

@ -0,0 +1,27 @@
## airshipctl secret
Manage secrets
### Synopsis
Manage secrets
### Options
```
-h, --help help for secret
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components
* [airshipctl secret generate](airshipctl_secret_generate.md) - Generate various secrets

View File

@ -0,0 +1,27 @@
## airshipctl secret generate
Generate various secrets
### Synopsis
Generate various secrets
### Options
```
-h, --help help for generate
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl secret](airshipctl_secret.md) - Manage secrets
* [airshipctl secret generate masterpassphrase](airshipctl_secret_generate_masterpassphrase.md) - Generates a secure master passphrase

View File

@ -0,0 +1,30 @@
## airshipctl secret generate masterpassphrase
Generates a secure master passphrase
### Synopsis
Generates a secure master passphrase
```
airshipctl secret generate masterpassphrase [flags]
```
### Options
```
-h, --help help for masterpassphrase
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl secret generate](airshipctl_secret_generate.md) - Generate various secrets

View File

@ -0,0 +1,30 @@
## airshipctl version
Show the version number of airshipctl
### Synopsis
Show the version number of airshipctl
```
airshipctl version [flags]
```
### Options
```
-h, --help help for version
```
### Options inherited from parent commands
```
--airshipconf string Path to file for airshipctl configuration. (default "$HOME/.airship/config")
--debug enable verbose output
--kubeconfig string Path to kubeconfig associated with airshipctl configuration. (default "$HOME/.airship/kubeconfig")
```
### SEE ALSO
* [airshipctl](airshipctl.md) - A unified entrypoint to various airship components

View File

@ -1,573 +0,0 @@
..
All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
.. _airshipctl-cli:
==============
AirshipCTL CLI
==============
The AirshipCTL CLI is used in conjunction with the binary created by running
``make build``. This binary, by default, is created in the ``airshipctl/bin/``
directory.
CLI Options
===========
**-h / \\-\\-help**
Prints help for a specific command or command group.
**\\-\\-debug** (default: false)
Enables verbose output of commands.
**\\-\\-airshipconf** (default: `$HOME/.airship/config`)
Path to file for airshipctl configuration.
**\\-\\-kubeconfig** (default: `$HOME/.airship/kubeconfig`)
Path to kubeconfig associated with airshipctl configuration.
.. _root-group:
Root Group
==========
Allows you to perform top level commands
::
airshipctl <command>
Version
-------
Output the version of the airshipctl binary.
Usage:
::
airshipctl version
Completion
----------
Generate completion script for airshipctl for the specified shell (bash or zsh).
**shell** (Required)
Shell to generate completion script for. Supported values are `bash` and `zsh`
Usage:
::
airshipctl completion <shell>
Examples
^^^^^^^^
Save shell completion to a file
::
$ airshipctl completion bash > $HOME/.airship_completions
Apply completions to the current shell
::
$ source <(airshipctl completion bash)
.. _bootstrap-group:
Bootstrap Group
===============
Used to bootstrap the ephemeral Kubernetes cluster.
ISOgen
-------
Generate bootstrap ISO image.
Usage:
::
airshipctl bootstrap isogen
RemoteDirect
------------
Bootstrap ephemeral node.
Usage:
::
airshipctl bootstrap remotedirect
.. _cluster-group:
Cluster Group
=============
This command provides capabilities for interacting with a Kubernetes cluster,
such as getting status and deploying initial infrastructure.
InitInfra
------------
Deploy initinfra components to cluster.
**cluster-type** (default:"ephemeral")
Select cluster type to deploy initial infrastructure to, currently only ephemeral is supported.
**\\-\\-dry-run**
Don't deliver documents to the cluster, simulate the changes instead.
**\\-\\-prune** (default: false)
If set to true, command will delete all kubernetes resources that are not defined in airship documents and have
airshipit.org/deployed=initinfra label
Usage:
::
airshipctl cluster initinfra <flags>
.. _config-group:
Config Group
============
Manage the airshipctl config file
Get-Cluster
-----------
Get cluster information from the airshipctl config.
**name** (Optional, default: all defined clusters)
Display a specific cluster or all defined clusters if no name is provided.
**\\-\\-cluster-type** (Required if **name** is provided).
The type of the desired cluster. Valid values are from [ephemeral|target].
Usage:
::
airshipctl config get-cluster <name> --cluster-type=<cluster-type>
Examples
^^^^^^^^
List all the clusters:
::
airshipctl config get-cluster
Display a specific cluster:
::
airshipctl config get-cluster e2e --cluster-type=ephemeral
Get-Context
-----------
Display information about contexts such as associated manifests, users, and clusters.
**name** (Optional, default: all defined contexts)
Displays a named context, if no name is provided display all defined contexts.
**\\-\\-current-context** (default: false)
Display the current context, supersedes the `name` argument.
Usage:
::
airshipctl config get-context
Examples
^^^^^^^^
For all contexts:
::
airshipctl config get-context
For the current context:
::
airshipctl config get-context --current
For a named context:
::
airshipctl config get-context exampleContext
Get-Credentials
---------------
Get user credentials from the airshipctl config.
**name** (Optional, default: all defined users)
Display a specific user's credentials, or all defined user credentials if no name is provided.
Usage:
::
airshipctl config get-credentials <name>
Examples
^^^^^^^^
List all user credentials:
::
airshipctl config get-credentials
Display a specific user's credentials:
::
airshipctl config get-credentials exampleUser
Init
----
Generate an airshipctl config file and its associated kubeConfig file.
These files will be written to the $HOME/.airship directory, and will contain
default configurations.
.. note:: This will overwrite any existing config files in $HOME/.airship
Usage:
::
airshipctl config init
Set-Cluster
-----------
Create or modify a cluster in the airshipctl config files.
Since a cluster can be either "ephemeral" or "target", you must specify
cluster-type when managing clusters.
**name** (Required)
The name of the cluster to add or modify in the airshipctl config file.
**\\-\\-certificate-authority**
Path to a certificate authority file
**\\-\\-certificate-authority** (Required)
The type of the cluster to add or modify
**\\-\\-embed-certs** (default: false)
If set, embed the client certificate/key into the cluster
**\\-\\-insecure-skip-tls-verify** (default: true)
If set, disable certificate checking
**\\-\\-server**
Server to use for the cluster
Usage:
::
airshipctl config set-cluster <name> <flags>
Examples
^^^^^^^^
Set the server field on the ephemeral exampleCluster:
::
airshipctl config set-cluster exampleCluster \
--cluster-type=ephemeral \
--server=https://1.2.3.4
Embed certificate authority data for the target exampleCluster:
::
airshipctl config set-cluster exampleCluster \
--cluster-type=target \
--client-certificate-authority=$HOME/.airship/ca/kubernetes.ca.crt \
--embed-certs
Disable certificate checking for the target exampleCluster:
::
airshipctl config set-cluster exampleCluster
--cluster-type=target \
--insecure-skip-tls-verify
Configure client certificate for the target exampleCluster:
::
airshipctl config set-cluster exampleCluster \
--cluster-type=target \
--embed-certs \
--client-certificate=$HOME/.airship/cert_file
Set-Context
-----------
Create or modify a context in the airshipctl config files.
**name** (Required)
The name of the context to add or modify in the airshipctl config file.
**\\-\\-cluster**
Set the cluster for the specified context.
**\\-\\-cluster-type**
Set the cluster-type for the specified context.
**\\-\\-current**
Update the current context.
**\\-\\-manifest**
Set the manifest for the specified context.
**\\-\\-namespace**
Set the namespace for the specified context.
**\\-\\-user**
Set the user for the specified context.
Usage:
::
airshipctl config set-context <name> <flags>
Examples
^^^^^^^^
Create a new context named "exampleContext":
::
airshipctl config set-context exampleContext \
--namespace=kube-system \
--manifest=exampleManifest \
--user=exampleUser
--cluster-type=target
Update the manifest of the current-context:
::
airshipctl config set-context \
--current \
--manifest=exampleManifest
Set-Credentials
---------------
Create or modify a user credential in the airshipctl config file.
.. note:: Specifying more than one authentication method is an error.
**name** (Required)
The user entry to update in airshipctl config.
**\\-\\-client-certificate**
Path to a certificate file.
**\\-\\-client-key**
Path to a key file.
**\\-\\-embed-certs**
If set, embed the client certificate/key into the credential.
**\\-\\-password**
Password for the credential
.. note:: Username and Password flags are mutually exclusive with Token flag
**\\-\\-token**
Token to use for the credential
.. note:: Username and Password flags are mutually exclusive with Token flag
**\\-\\-username**
Username for the credential
.. note:: Username and Password flags are mutually exclusive with Token flag
Usage:
::
airshipctl config set-credentials <name> <flags>
Examples
^^^^^^^^
Create a new user credential with basic auth:
::
airshipctl config set-credentials exampleUser \
--username=exampleUser \
--password=examplePassword
Change the client-key of a user named admin
::
airshipctl config set-credentials admin \
--client-key=$HOME/.kube/admin.key
Change the username and password of the admin user
::
airshipctl config set-credentials admin \
--username=admin \
--password=uXFGweU9l35qcif
Embed client certificate data of the admin user
::
airshipctl config set-credentials admin \
--client-certificate=$HOME/.kube/admin.crt \
--embed-certs
.. _document-group:
Document Group
==============
Manages deployment documents.
Pull
----
Pulls documents from remote git repository.
Usage:
::
airshipctl document pull
Render
------
Render documents from model.
**-a / \\-\\-annotation**
Filter documents by Annotations.
**-g / \\-\\-apiversion**
Filter documents by API version.
**-f / \\-\\-filter**
Logical expression for document filtering.
**-k / \\-\\-kind**
Filter documents by Kinds.
**-l / \\-\\-label**
Filter documents by Labels.
Usage:
::
airshipctl document render <flags>
.. _secret-group:
Secret Group
============
Manages secrets.
Generate
--------
Generates various secrets.
MasterPassphrase
^^^^^^^^^^^^^^^^
Generates a secure master passphrase.
Usage:
::
airshipctl secret generate masterpassphrase

View File

@ -28,4 +28,4 @@ Welcome to airshipctl's Documentation!
developers
plugins
testing-guidelines
cli/cli
Commands <cli/airshipctl>

View File

@ -0,0 +1,40 @@
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"fmt"
"os"
"github.com/spf13/cobra/doc"
"opendev.org/airship/airshipctl/cmd"
)
func main() {
rootCmd, _, err := cmd.NewAirshipCTLCommand(os.Stdout)
if err != nil {
fmt.Fprintln(os.Stdout, err)
os.Exit(1)
}
// Remote auto-generated notice
rootCmd.DisableAutoGenTag = true
if err := doc.GenMarkdownTree(rootCmd, "./docs/source/cli"); err != nil {
fmt.Fprintln(os.Stdout, err)
os.Exit(1)
}
}

4
go.sum
View File

@ -94,7 +94,9 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@ -495,6 +497,7 @@ github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYe
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/securego/gosec v0.0.0-20191002120514-e680875ea14d/go.mod h1:w5+eXa0mYznDkHaMCXA4XYffjlH+cy1oyKbfzJXa2Do=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@ -504,6 +507,7 @@ github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lz
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=