terrakube cli is Terrakube on the command line. It brings organizations, workspaces and other Terrakube concepts to the terminal.
Installation
You can find installation instructions here Install
Getting help
When you are working with terrakube cli probably you will need some help with the supported commands and flags and you can use Commands sections for that, however a better option is to use the same cli to get help using --help flag or -h shortand. The embedded help provides you more detail for each command and some examples you can use as reference
# using help flagterrakube--help# using shorthandterrakube-h# getting help for an specific commandterrakubeorganization-h# getting help for an specific sub commandterrakubeorganizationcreate-h
Authentication
Run terrakube login to authenticate with your account. But first you need to set some environment variables.
You can also pass this values using terrakube login however is recommended to use environment variables in the case you need to authenticate several times or if you are running an automatic script.
Open your terminal and execute the following commands in order to setup your terrakube environment and get authenticated. You can get the server, path, scheme, tenant id and client id values during the Terrakube server deployment
For more commands and options in organization see the full documentation for terrakube organization
Working with Teams
Once you create your organization you will probably want to define the teams and permissions for the organization, so you can use the team command for that.
terrakube team create --organization-id 8a6e9998-165c-49f0-953c-d3fb0924731a --name AZB_USER --manage-workspace=true --manage-module=true --manage-provider=true
In the previous command we are creating a new team inside our new Organization and for this case we are providing permissions to manage workspaces, modules and providers. In the name flag we are using an Azure AD Group, so all the team members are defined inside the AD group. For more details about teams and permissions you can see Security Page.
Create a Workspace
After having given permissions to our teams we can create a workspace.
If you want to avoid entering the organization or the workspace in each command you can use environment variables, so the previous commands would be simplified as follows.
Now that you have a workspace with all the variables defined, you can execute a job, basically a job is a remote terraform apply, plan or destroy. So if you want to run apply we can execute the following command.
In order to simplify the commands when you are working with the cli, you can use shortands and alias and some environment variables. See the following sections for more details.
Use the --help flag to get the details about available shorthands and alias for each command
Using shorthands
# without shorthandterrakubeorganizationcreate--nameMyOrganization--description"Getting started Organization"# using shorthandterrakubeorganizationcreate-nMyOrganization-d"Getting started Organization"
Using alias
# without aliasterrakubeorganizationcreate--nameMyOrganization--description"Getting started Organization"# using alias and shorthandterrakubeorgcreate-nMyOrganization-d"Getting started Organization"
Using environment variables
# creating multiple modules without env variablesterrakubemodulecreate--organization-id8a6e9998-165c-49f0-953c-d3fb0924731a--namemyModule--description"module description"--providerazurerm--sourcehttps://github.com/AzBuilder/terraform-sample-repository.gitterrakubemodulecreate--organization-id8a6e9998-165c-49f0-953c-d3fb0924731a--namemyModule2--description"module description 2"--providerazurerm--sourcehttps://github.com/AzBuilder/terraform-sample-repository.gitterrakubemodulecreate--organization-id8a6e9998-165c-49f0-953c-d3fb0924731a--namemyModule3--description"module description 3"--providerazurerm--sourcehttps://github.com/AzBuilder/terraform-sample-repository.git# creating multiple modules using shorthand, alias and env variablesexport TERRAKUBE_ORGANIZATION_ID=8a6e9998-165c-49f0-953c-d3fb0924731aterrakubemodcreate-nmyModule-d"module description"-pazurerm-shttps://github.com/AzBuilder/terraform-sample-repository.gitterrakubemodcreate-nmyModule2-d"module description 2"-pazurerm-shttps://github.com/AzBuilder/terraform-sample-repository.gitterrakubemodcreate-nmyModule3-d"module description 3"-pazurerm-shttps://github.com/AzBuilder/terraform-sample-repository.git