Installing Chaos Delegates in non interactive mode
Usage: Litmusctl v0.10.0
Notes:
- For litmusctl v0.10.0 or latest
- Compatible with Litmus 2.9.0 or latest
litmusctl Syntax​
litmusctl
has a syntax to use as follows:
litmusctl [command] [TYPE] [flags]
- Command: refers to what you do want to perform (create, get and config)
- Type: refers to the feature type you are performing a command against (chaos delegate, project etc.)
- Flags: It takes some additional information for resource operations. For example,
--installation-mode
allows you to specify an installation mode.
Litmusctl is using the .litmusconfig
config file to manage multiple accounts
- If the --config flag is set, then only the given file is loaded. The flag may only be set once and no merging takes place.
- Otherwise, the ${HOME}/.litmusconfig file is used, and no merging takes place.
Litmusctl supports both interactive and non-interactive(flag based) modes.
Only
litmusctl connect agent
command needs --non-interactive flag, other commands don't need this flag to be in non-interactive mode. If mandatory flags aren't passed, then litmusctl takes input in an interactive mode.
Installation modes​
Litmusctl can install an chaos delegate in two different modes.
cluster mode: With this mode, the chaos delegate can run the chaos in any namespace. It installs appropriate cluster roles and cluster role bindings to achieve this mode. It can be enabled by passing a flag
--installation-mode=cluster
namespace mode: With this mode, the chaos delegate can run the chaos in its namespace. It installs appropriate roles and role bindings to achieve this mode. It can be enabled by passing a flag
--installation-mode=namespace
Note: With namespace mode, the user needs to create the namespace to install the chaos delegate as a prerequisite.
Minimal steps to connect an chaos delegate​
- To setup an account with litmusctl
litmusctl config set-account --endpoint="" --username="" --password=""
- To connect a chaos delegate without a project in a cluster mode
Note: If the user doesn't have any project, it will create a random project and add the chaos delegate in that random project.
litmusctl connect agent --agent-name="" --non-interactive
Or,
- To connect a chaos delegate with an existing project
Note: To get
project-id
. Applylitmusctl get projects
litmusctl connect agent --agent-name="" --project-id="" --non-interactive
Verify the new Agent Connection​
To verify, if the connection process was successful you can view the list of connected chaos delegate from the Targets section on your ChaosCenter and ensure that the connected chaos delegate is in Active State.
Flags for connect agent
command​
Flag | Short Flag | Type | Description |
---|---|---|---|
--agent-description | String | Set the chaos delegate description (default "---") | |
--agent-name | String | Set the chaos delegate name | |
--cluster-type | String | Set the cluster-type to external for external chaos delegates | Supported=external/internal (default "external") | |
--installation-mode | String | Set the installation mode for the kind of chaos delegate | Supported=cluster/namespace (default "cluster") | |
--kubeconfig | -k | String | Set to pass kubeconfig file if it is not in the default location ($HOME/.kube/config) |
--namespace | String | Set the namespace for the chaos delegate installation (default "litmus") | |
--node-selector | String | Set the node-selector for chaos delegate components | Format: key1=value1,key2=value2) | |
--non-interactive | -n | String | Set it to true for non interactive mode | Note: Always set the boolean flag as --non-interactive=Boolean |
--ns-exists | Boolean | Set the --ns-exists=false if the namespace mentioned in the --namespace flag is not existed else set it to --ns-exists=true | Note: Always set the boolean flag as --ns-exists=Boolean | |
--platform-name | String | Set the platform name. Supported- AWS/GKE/Openshift/Rancher/Others (default "Others") | |
--sa-exists | Boolean | Set the --sa-exists=false if the service-account mentioned in the --service-account flag is not existed else set it to --sa-exists=true | Note: Always set the boolean flag as --sa-exists=Boolean" | |
--service-account | String | Set the service account to be used by the chaos delegate (default "litmus") | |
--config | String | config file (default is $HOME/.litmusctl) |
Additional commands​
- To view the current configuration of
.litmusconfig
, type:
litmusctl config view
Output:
accounts:
- users:
- expires_in: "1626897027"
token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjY4OTcwMjcsInJvbGUiOiJhZG1pbiIsInVpZCI6ImVlODZkYTljLTNmODAtNGRmMy04YzQyLTExNzlhODIzOTVhOSIsInVzZXJuYW1lIjoiYWRtaW4ifQ.O_hFcIhxP4rhyUN9NEVlQmWesoWlpgHpPFL58VbJHnhvJllP5_MNPbrRMKyFvzW3hANgXK2u8437u
username: admin
- expires_in: "1626944602"
token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjY5NDQ2MDIsInJvbGUiOiJ1c2VyIiwidWlkIjoiNjFmMDY4M2YtZWY0OC00MGE1LWIzMjgtZTU2ZDA2NjM1MTE4IiwidXNlcm5hbWUiOiJyYWoifQ.pks7xjkFdJD649RjCBwQuPF1_QMoryDWixSKx4tPAqXI75ns4sc-yGhMdbEvIZ3AJSvDaqTa47XTC6c8R
username: litmus-user
endpoint: https://preview.litmuschaos.io
apiVersion: v1
current-account: https://preview.litmuschaos.io
current-user: litmus-user
kind: Config
- To get an overview of the accounts available within
.litmusconfig
, use theconfig get-accounts
command:
litmusctl config get-accounts
Output:
CURRENT ENDPOINT USERNAME EXPIRESIN
https://preview.litmuschaos.io admin 2021-07-22 01:20:27 +0530 IST
* https://preview.litmuschaos.io raj 2021-07-22 14:33:22 +0530 IST
- To alter the current account use the
use-account
command with the --endpoint and --username flags:
litmusctl config use-account --endpoint="" --username=""
- To create a project, apply the following command with the
--name
flag:
litmusctl create project --name=""
- To view all the projects with the user, use the
get projects
command.
litmusctl get projects
Output:
PROJECT ID PROJECT NAME CREATEDAT
50addd40-8767-448c-a91a-5071543a2d8e Developer Project 2021-07-21 14:38:51 +0530 IST
7a4a259a-1ae5-4204-ae83-89a8838eaec3 DevOps Project 2021-07-21 14:39:14 +0530 IST
- To get an overview of the chaos delegate available within a project, issue the following command.
litmusctl get agents --project-id=""
Output:
AGENTID AGENTNAME STATUS REGISTRATION
55ecc7f2-2754-43aa-8e12-6903e4c6183a agent-1 ACTIVE REGISTERED
13dsf3d1-5324-54af-4g23-5331g5v2364f agent-2 INACTIVE NOT REGISTERED
- To disconnect a chaos delegate, issue the following command.
litmusctl disconnect agent 55ecc7f2-2754-43aa-8e12-6903e4c6183a --project-id=""
Output:
🚀 ChaosAgent successfully disconnected.