- CLI Utility to query/manage TFE inspired by tfe-cli
- Copy the binary (either Windows or Linux) to a path on your machine. Add the
.exeextension if using it on WindowsPS> .\tfectl.exe Query TFE from the command line. Usage: tfectl [command] Available Commands: completion Generate the autocompletion script for the specified shell help Help about any command run Manage TFE runs team Manage TFE teams variable Manage TFE workspace variables workspace Manage TFE workspaces Flags: -h, --help help for tfectl -l, --log string log level (debug, info, warn, error, fatal, panic) -o, --organization string terraform organization or set TFE_ORG -q, --query string JMESPath compatible query to parse JSON output -t, --token string terraform token or set TFE_TOKEN -v, --version version for tfectl Use "tfectl [command] --help" for more information about a command.
TFE_ADDRESS: TFE URL defaults tohttps://app.terraform.io/TFE_ORG: TFE OrganizationTFE_TOKEN: token with read access to Organization specified inTFE_ORG- Additionally
TFE_ORGandTFE_TOKENvariables can be passed via CLI
- To see available options
# /sbin/tfectl --help
Query TFE from the command line.
Usage:
tfectl [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
run Manage TFE runs
team Manage TFE teams
variable Manage TFE workspace variables
workspace Manage TFE workspaces
Flags:
-h, --help help for tfectl
-l, --log string log level (debug, info, warn, error, fatal, panic)
-o, --organization string terraform organization or set TFE_ORG
-q, --query string JMESPath compatible query to parse JSON output
-t, --token string terraform token or set TFE_TOKEN
-v, --version version for tfectl
Use "tfectl [command] --help" for more information about a command.-
- Run with no arguments returns workspaceName and workspaceID for all workspaces in org
- Run with
--filter
$ tfectl workspace list --filter workspace-1 [ { "name": "workspace-1", "id": "ws-RZP914jsX1Hmc9Yo" "locked": false, "execution_mode": "remote", "terraform_version": "1.3.0" } ]- Run with
--detail
$ tfectl workspace list --filter workspace-1 --detail [ { "name": "workspace-1", "id": "ws-RZP914jsX1Hmc9Yo", "locked": false, "terraform_version": "1.3.0", "created_days_ago": "819.167082", "updated_days_ago": "2.279692", "last_remote_run_days_ago": "2.281231", "last_state_update_days_ago": "30.174812" } ] -
- Run with a comma-separated string of workspaceIDs or a workspaceName filter (mutually exclusive)
$ tfectl workspace lock --ids ws-SxWNNcYPkLD48ZC7 [ { "id": "ws-SxWNNcYPkLD48ZC7", "locked": true, "name": "test-workspace-1" } ]- Operation can be run against a workspace that is already locked
$ tfectl workspace lock --filter dev-workspace [ { "id": "ws-5xUNCXVKrryoPcEp", "locked": true, "name": "dev-workspace" } ]- Optionally the
lockoperation takes a--reasonargument
-
- Locks/Unlocks all workspaces in the specified org
$ tfectl workspace lockall [ { "id": "ws-SxWNNcYPkLD48ZC7", "locked": true, "name": "test-workspace-1" }, { "id": "ws-LXkPCWnJKJ1FSgjs", "locked": true, "name": "uat-workspace" }, { "id": "ws-E9o8VitHDAvCp3wj", "locked": true, "name": "uat-2-workspace" }, { "id": "ws-5xUNCXVKrryoPcEp", "locked": true, "name": "dev-workspace" } ]
-
runsub-command lets you manage runs against one or more workspaces -
- Bulk queue plans against one or many workspaces
$ tfectl run queue --filter workspace-sandbox [ { "id": "run-pX9Lrq5KCrsgCYFH", "workspace_id": "ws-DpeRu7KpazXEWKoJ", "workspace_name": "workspace-sandbox", "status": "pending" } ] -
- Apply pending plans - takes a comma-separated-string of runIDs
$ tfectl run apply --ids run-UowKQd1cF7bgNfCp [ { "id": "run-UowKQd1cF7bgNfCp", "workspace_id": "ws-N2qoyJxF1TkfeRYy", "workspace_name": "test-workspace-2", "status": "applying" } ] -
- Query/Get run-details from runIDs
$ tfectl run get --ids run-UowKQd1cF7bgNfCp [ { "id": "run-UowKQd1cF7bgNfCp", "workspace_id": "ws-N2qoyJxF1TkfeRYy", "workspace_name": "test-workspace-2", "status": "applied" } ]
-
CRUD operations on workspace variables
-
$ tfectl variable list --workspace-filter workspace-sandbox [ { "workspace_id": "ws-DpeRu7KpazXEWKoJ", "workspace_name": "workspace-sandbox", "variables": [ { "id": "var-RH7Q9pyD8gtgabtz", "key": "WORKSPACE_VAR_1", "value": "", "description": "", "category": "env", "hcl": false, "sensitive": false }, { "id": "var-wQutb5uQeSb4SwRn", "key": "workspace_tf_var", "value": "", "description": "", "category": "terraform", "hcl": false, "sensitive": true }, { "id": "var-cSB5E11TRewuyfd9", "key": "WORKSPACE_VAR_2", "value": "", "description": "", "category": "env", "hcl": false, "sensitive": false }, { "id": "var-SP4Lcue83mCKVvHW", "key": "WORKSPACE_SECRET_VAR", "value": "", "description": "", "category": "env", "hcl": false, "sensitive": true } ] } ] -
$ tfectl variable create --workspace-id ws-DpeRu7KpazXEWKoJ --description "test" --key "testCLI" --value "testCLI value" --sensitive true --type terraform --hcl { "id": "var-uCgZrzkPhis6qXTS", "key": "testCLI", "value": "", "description": "test", "category": "terraform", "hcl": true, "sensitive": true }
-
$ tfectl variable update --variable-id var-uCgZrzkPhis6qXTS --workspace-id ws-DpeRu7KpazXEWKoJ --value "test CLI Value 2" --key "testCLI" --hcl --sensitive true { "id": "var-uCgZrzkPhis6qXTS", "key": "testCLI", "value": "", "description": "Variable Updated by tfectl", "category": "terraform", "hcl": true, "sensitive": true }
-
$ tfectl variable delete --variable-id var-uCgZrzkPhis6qXTS --workspace-id ws-DpeRu7KpazXEWKoJ # Returns current variables (similar to variable list) [ { "workspace_id": "ws-DpeRu7KpazXEWKoJ", "workspace_name": "workspace-sandbox", "variables": [ { "id": "var-RH7Q9pyD8gtgabtz", "key": "WORKSPACE_VAR_1", "value": "", "description": "", "category": "env", "hcl": false, "sensitive": false }, { "id": "var-wQutb5uQeSb4SwRn", "key": "workspace_tf_var", "value": "", "description": "", "category": "terraform", "hcl": false, "sensitive": true }, { "id": "var-cSB5E11TRewuyfd9", "key": "WORKSPACE_VAR_2", "value": "", "description": "", "category": "env", "hcl": false, "sensitive": false }, { "id": "var-SP4Lcue83mCKVvHW", "key": "WORKSPACE_SECRET_VAR", "value": "", "description": "", "category": "env", "hcl": false, "sensitive": true } ] } ]
-
$ tfectl variable create from-file --file variables.json --workspace-id ws-DpeRu7KpazXEWKoJ [ { "id": "var-oDNV14eJf9ijjcc2", "key": "test1", "value": "value1", "description": "Test Variable 1", "category": "env", "hcl": false, "sensitive": false }, { "id": "var-e1vFqg3ooToLi5xR", "key": "test2", "value": "", "description": "Test Variable 2 - sensitive", "category": "env", "hcl": false, "sensitive": true } ]
- Using GNU Make
make build- Linux
$ make linux- Windows
$ make windows- see
CONTRIBUTING.md