ttest will create and configure Teleport clusters for testing. It can use either a local source copy of Teleport or use a Teleport binary for setting up the clusters with Teleport. It is capable of adding child nodes to a Teleport server automatically.
Config files are basically an amalgamation of Teleport configs along with a variety of
provider specific configs. Golang's text/template
is used for interpolating individual
Teleport configs.
For a detailed example can be found in the examples directory.
ttest
expects cluster config files to live in src/ttest-clusters
by default. This
can be customized by setting the TTEST_CLUSTERS_DIR
environment variable. The config
files are expected to be named <cluster-name>.yaml
.
Once a config file has been placed into the clusters directory, you can create it by running:
$ ttest create <cluster-name>
This will provision the infrastructure, build/distribute Teleport and then configure the cluster.
To update the Teleport binaries/configs on a cluster without attempting to re-provision the infrastructure, you can run:
$ ttest deploy <cluster-name>
This will build/distribute Teleport and then configure the cluster.
This will remove all of the underlying infrastructure for the cluster. To do this, run:
$ ttest destroy <cluster-name>
You can list all nodes with their associated host names (if they're present) by running:
$ ttest nodes ls <cluster-name>
...
Node Name Host
------------------------------
server 1.2.3.4
node1 1.2.3.5
node2 1.2.3.6
In order to SSH into a node, you can run:
$ ttest nodes ssh <cluster-name> <node-name> [command]
Running without a supplied command will give you an interactive shell. Running with a command will print the output and exit.
To see where the Terraform state is for a particular cluster, you can run:
$ ttest store dir
This will output the terraform store directory.
The clusters created by this tool only have access enabled for the IP address that you're currently on. If this changes you may have to adjust it manually or re-provision.