STACKIT CLI (BETA)
Welcome to the STACKIT CLI, a command-line interface for the STACKIT services.
This CLI is in a BETA state. More services and functionality will be supported soon.
Your feedback is appreciated!
[!WARNING]
On July 9 2024, the new STACKIT Identity Provider (IDP) was released. We are happy to announce that on v0.9.0, the new IDP was integrated in the STACKIT CLI, where it is used for user authentication.
This also means that the user authentication on STACKIT CLI versions released before July 9 2024 is no longer guaranteed to work for all services.
Please make sure to update your STACKIT CLI to the latest version after July 9 2024 to ensure that you can continue to use all STACKIT services.
Installation
Please refer to our installation guide for instructions on how to install and get started using the STACKIT CLI.
Usage
A typical command is structured as:
stackit <GROUP> <SUB-GROUP> <COMMAND> <ARGUMENT> <PARAMETER FLAGS> [OPTION FLAGS]
<GROUP>
can be the name of a service, such as dns
or mongodbflex
, or other groups for additional functionality, such as config
to configure the CLI or auth
to authenticate.
<SUB-GROUP>
should be the name (singular form) of a service resource, when <GROUP>
is the name of a service. Examples: zone
, instance
.
<COMMAND>
is a command associated to the innermost group. Usually it's an action for the resource in question, such as list
(to show all resources of the given type) or the CRUD operations create
, describe
, update
and delete
.
<ARGUMENT>
is required by some commands to specify a resource identifier. Examples: stackit dns zone delete ZONE_ID
, stackit ske cluster create CLUSTER_NAME
.
<PARAMETER FLAGS>
is a list of inputs necessary to execute the command, in the format --[flag]
or --[flag] [value]
. Some are required, while others are optional.
[OPTION FLAGS]
is a set of optional settings that modify the command's execution context. Examples: --output-format=json
changes the format of the output to JSON, --assume-yes
skips confirmation prompts.
Examples:
stackit ske cluster describe my-cluster --project-id xxx --output-format json
stackit mongodbflex instance create --name my-instance --cpu 1 --ram 4 --acl 0.0.0.0/0 --assume-yes
stackit dns zone delete my-zone
Some commands are implemented at the root, group or subgroup level:
stackit config
to define variables to be used in future commands.
stackit ske enable
to enable the SKE engine on your project.
Help is available for any command by specifying the special flag --help
(or simply -h
):
stackit --help
stackit -h
stackit <GROUP> --help
stackit <GROUP> <SUB-GROUP> --help
stackit <GROUP> <SUB-GROUP> <COMMAND> --help
Available services
Below you can find a list of the STACKIT services already available in the CLI (along with their respective command names) and the ones that are currently planned to be integrated.
Service |
CLI Commands |
Status |
Argus |
argus |
✅ |
Infrastructure as a Service (IaaS) |
|
Will be integrated soon |
Authorization |
project , organization |
✅ |
DNS |
dns |
✅ |
Kubernetes Engine (SKE) |
ske |
✅ |
Load Balancer |
load-balancer |
✅ |
LogMe |
logme |
✅ |
MariaDB |
mariadb |
✅ |
MongoDB Flex |
mongodbflex |
✅ |
Object Storage |
object-storage |
✅ |
OpenSearch |
opensearch |
✅ |
PostgreSQL Flex |
postgresflex |
✅ |
RabbitMQ |
rabbitmq |
✅ |
Redis |
redis |
✅ |
Resource Manager |
project |
✅ |
Secrets Manager |
secrets-manager |
✅ |
Server Backup Management |
beta server backup |
✅ |
Service Account |
service-account |
✅ |
SQLServer Flex |
beta sqlserverflex |
✅ (beta) |
Authentication
Most of the commands will require you to be authenticated. Currently, it's possible to authenticate with your personal user or with a service account.
After successful authentication, the CLI stores credentials in your OS keychain. You won't need to log in again for the duration of your session, which is 2h by default but configurable by providing the --session-time-limit
flag on the config set
command (see Configuration).
Login with a personal user account
To authenticate as a user, run the command below and follow the steps in your browser.
stackit auth login
Activate a service account
To authenticate using a service account, run:
stackit auth activate-service-account
For more details on how to set up authentication using a service account, check our authentication guide.
Configuration
You can configure the CLI using the command:
stackit config
The configuration is saved in a file. The file's location varies depending on the operating system:
- Unix -
$XDG_CONFIG_HOME/stackit/cli-config.json
- MacOS -
$HOME/Library/Application Support/stackit/cli-config.json
- Windows -
%AppData%\stackit\cli-config.json
The configuration options apply to all commands and can be set using the stackit config set
command. For example, you can set a default project-id
by running:
stackit config set --project-id xxxx-xxxx-xxxxx
To remove it, you can run:
stackit config unset --project-id
Run the config set
command with the flag --help
to get a list of all the available configuration options.
You can look up your current configuration by checking the configuration file or by running:
stackit config list
You can also edit the configuration file manually.
Customization
To specify a custom pager, use the PAGER
environment variable.
If the variable is not set, STACKIT CLI uses the less
as default pager.
When using less
as a pager, STACKIT CLI will automatically pass following options
- -F, --quit-if-one-screen - Less will automatically exit if the entire file can be displayed on the first screen.
- -S, --chop-long-lines - Lines longer than the screen width will be chopped rather than being folded.
- -w, --hilite-unread - Temporarily highlights the first "new" line after a forward movement of a full page.
- -R, --RAW-CONTROL-CHARS - ANSI color and style sequences will be interpreted.
These options will not be added automatically if a custom pager is defined.
In that case, users can define the parameters by using the specific environment variable required by the PAGER
(if supported).
For example, if user sets the PAGER
environment variable to less
and would like to pass some arguments, LESS
environment variable must be used as following:
export PAGER="less"
export LESS="-R"
Autocompletion
If you wish to set up command autocompletion in your shell for the STACKIT CLI, please refer to our autocompletion guide.
Reporting issues
If you encounter any issues or have suggestions for improvements, please open an issue in the repository.
Contribute
Your contribution is welcome! For more details on how to contribute, refer to our contribution guide.
License
Apache 2.0
Useful Links