9 releases (4 breaking)
0.6.0-beta.4 | Mar 28, 2023 |
---|---|
0.6.0-beta.3 | Mar 24, 2023 |
0.6.0-beta.2 | Feb 16, 2023 |
0.4.1 | Feb 1, 2023 |
0.1.0 | Feb 8, 2022 |
#1755 in Web programming
420KB
9K
SLoC
Seaplane CLI
The Seaplane CLI tool allows one to interact with our services through the command line and is the preferred method of interacting with the services.
We also have SDKs for various languages (in fact this CLI is built on top of the Seaplane Rust SDK).
Prerequisites
Before using the SDK you'll want to ensure you've completed a few steps:
- You've Signed up for a Seaplane Account (we're currently in private beta so this means you've received an invite link, and followed that link to create your account)
- You copied the API given to you after account sign-up (which can also be found at via our Flightdeck)
All service backends require a valid API Key to be used.
Installation
The Seaplane CLI tool seaplane
is a single binary that must be placed
somewhere in your $PATH
. One can either download pre-compiled binaries from
the Release Page or compile it from source.
Install from a Github Release
The first step is to download the tool, which is a single static binary, from our Github Releases page.
The CLI tool is supported on both x86_64, and arm64 for Linux and macOS, as well as x86_64 Windows. Ensure you download the appropriate archive for your system. This guide will be using a macOS variant as a demonstration.
We'll assume the download was saved in the Downloads directory of your home
folder (~/Downloads
).
We need to extract the binary and place it somewhere pointed to by your $PATH
variable. On macOS and Linux /usr/local/bin/
is a good location.
NOTE: You'll need to replace $ARCH
and $VERSION
with whichever
architecture and version you downloaded from the release page.
$ cd ~/Downloads
$ sudo unzip ./seaplane-$VERSION-$ARCH.zip -d /usr/local/bin/
Compile from crates.io
Ensure you have a Rust toolchain installed.
$ cargo install seaplane-cli
Compile from Source
Ensure you have a Rust toolchain installed.
$ git clone https://github.com/seaplane-io/seaplane
$ cd seaplane/seaplane-cli/
$ cargo build --release
$ sudo cp ../target/release/seaplane /usr/local/bin/
Usage of the Seaplane CLI Tool
We can ensure that installation worked by typing seaplane
which should
display a help message similar to below.
It's OK if the help message looks a little bit different, we're constantly iterating and trying to improve our product!
$ seaplane
seaplane v0.1.0 (f9f6dedab8)
Seaplane IO, Inc.
USAGE:
seaplane [OPTIONS] <SUBCOMMAND>
OPTIONS:
-A, --api-key <STRING> The API key associated with a Seaplane account used to access Seaplane API endpoints [env: SEAPLANE_API_KEY]
--color <COLOR> Should the output include color? [default: auto] [possible values: always, ansi, auto, never]
-h, --help Print help information
--no-color Do not color output (alias for --color=never)
-q, --quiet Suppress output at a specific level and below
-v, --verbose Display more verbose output
-V, --version Print version information
SUBCOMMANDS:
account Operate on your Seaplane account, including access tokens [aliases: acct]
flight Operate on Seaplane Flights (logical containers), which are the core component of Formations
formation Operate on Seaplane Formations
help Print this message or the help of the given subcommand(s)
image
init Create the Seaplane directory structure at the appropriate locations
license
shell-completion Generate shell completion script files for seaplane
Success!
Configure Your API Key
The final setup step is to ensure seaplane
knows about our API key. We can do
this in a few different ways:
- Set
api-key = "..."
in our configuration file - Set the
SEAPLANE_API_KEY
environment variable - Use the
--api-key
CLI flag
Which you choose depends on your preferences and needs. Each has different security and override-ability considerations.
Each of these options overrides the options above, meaning if you set an API key in your configuration file, it can be overridden by setting the environment variable or using the command line flag. This is helpful if you need to change your API key for just a few invocations.
We generally recommend the configuration file, when that's possible in your situation.
Security of SEAPLANE_API_KEY
Environment Variable
When the seaplane
process executes, it's possible for some other processes to
see environment that was given to seaplane
. Generally this requires elevated
privileges, but that may not always be the case.
Security of --api-key
CLI Flag
Like the environment variable when the seaplane
process executes, it's
possible for some other processes to see command line flags given to
seaplane
. Generally this requires elevated privileges, but that may not
always be the case.
However, unlike the environment variable the --api-key
flag supports a more
secure option of using the value -
which means "read the API key from STDIN"
which is generally considered secure, and not viewable by other processes on
the same system.
For example, if the API key was stored in a file called my_api_key.txt
and
using the short flag of --api-key
of -A
:
$ cat my_api_key.txt | seaplane -A-
Storing the API key in the Configuration File
We can use seaplane account login
to store our API key in the configuration
file. One could also just write the API key to the configuration file manually,
however then you have to find the configuration file, make sure it properly
formatted, etc. It's easier to just let us handle it!
You will be prompted to paste your API key which will be stored in the appropriate location of the configuration file.
$ seaplane account login
Enter your API key below.
(hint: it can be found by visiting https://flightdeck.cplane.cloud/)
InlifethevisiblesurfaceoftheSpermWhaleisnottheleastamongthemanymarvelshepresents
Successfully saved the API key!
Test!
Now that we have a shiny new API key installed, we can make sure it's working!
For this we'll perform silly test of asking our Access Token endpoint for a new access token. In general you'll never need to interact with this feature directly. However, internally especially in our SDK this is used quite heavily. If this works, we know everything is installed correctly.
$ seaplane account token
eyJ0eXAiOiJKV1QiLCJraWQiOiJhdXRoLXNpZ24ta2V5LTEiLCJhbGciOiJFZERTQSJ9.eyJpc3MiOi
Jpby5zZWFwbGFuZXQuZmxpZ2h0ZGVjayIsImF1ZCI6ImlvLnNlYXBsYW5ldCIsInN1YiI6IklubGlmZ
XRoZXZpc2libGVzdXJmYWNlb2Z0aGVTcGVybVdoYWxlaXNub3R0aGVsZWFzdGFtb25ndGhlbWFueW1h
cnZlbHNoZXByZXNlbnRzIiwiaWF0IjoxNjQ2NzUzODIwLCJleHAiOjE2NDY3NTM4ODAsInRlbmFudCI
6IklubGlmZXRoZXZpc2libGVzdXJmYWNlb2Z0aGVTcGVybVdoYWxlaXNub3R0aGVsZWFzdGFtb25ndG
hlbWFueW1hcnZlbHNoZXByZXNlbnRzIiwic2NvcGUiOiIifQ.epUyBWDiU2N6C7CBM7gnZPqoixd_ZH
dB8Khn_1BKwnjNxJaIba9PC9YTuDwYaFVs17aCWhY-oRDPpmo87YBrDQ
The access token is just a JWT and allows access to our public APIs derived from your API key. These tokens are only valid for a very short period of time. The token above should be long expired by the time you read this.
Congratulations! You now have a working Seaplane CLI ready to run some fantastic workloads!
License
Licensed under the Apache License, Version 2.0, LICENSE. Copyright 2022 Seaplane IO, Inc.
Dependencies
~17–32MB
~515K SLoC