6.1 KiB
STACKIT Provider
The STACKIT provider is the official Terraform provider to integrate all the resources developed by STACKIT.
Example Usage
provider "stackit" {
region = "eu01"
}
# Authentication
# Token flow
provider "stackit" {
region = "eu01"
service_account_token = var.service_account_token
}
# Key flow
provider "stackit" {
region = "eu01"
service_account_key = var.service_account_key
private_key = var.private_key
}
# Key flow (using path)
provider "stackit" {
region = "eu01"
service_account_key_path = var.service_account_key_path
private_key_path = var.private_key_path
}
Authentication
To authenticate, you will need a service account. Create it in the STACKIT Portal an assign it the necessary permissions, e.g. project.owner. There are multiple ways to authenticate:
- Key flow (recommended)
- Token flow
When setting up authentication, the provider will always try to use the key flow first and search for credentials in several locations, following a specific order:
-
Explicit configuration, e.g. by seting the fiel
stackit_service_account_key_pathin the provider block (see example below) -
Environment variable, e.g. by setting
STACKIT_SERVICE_ACCOUNT_KEY_PATH -
Credentials file
The SDK will check the credentials file located in the path defined by the
STACKIT_CREDENTIALS_PATHenv var, if specified, or in$HOME/.stackit/credentials.jsonas a fallback. The credentials should be set using the same name as the environmnet variables. Example:{ "STACKIT_SERVICE_ACCOUNT_TOKEN": "foo_token", "STACKIT_SERVICE_ACCOUNT_KEY_PATH": "path/to/sa_key.json", "STACKIT_PRIVATE_KEY_PATH": "path/to/private_key.pem" }
Key flow
To use the key flow, you need to have a service account key and an RSA key-pair. To configure it, follow this steps:
The following instructions assume that you have created a service account and assigned it the necessary permissions, e.g. project.owner.
- In the Portal, go to
Service Account -> Service Account Keysand create a key.- You can create your own RSA key-pair or have the Portal generate one for you.
- Save the content of the service account key and the corresponding private key by copying them or saving them in a file. The expected format of the service account key is the following:
{ "id": "uuid", "publicKey": "public key", "createdAt": "2023-08-24T14:15:22Z", "validUntil": "2023-08-24T14:15:22Z", "keyType": "USER_MANAGED", "keyOrigin": "USER_PROVIDED", "keyAlgorithm": "RSA_2048", "active": true, "credentials": { "kid": "string", "iss": "my-sa@sa.stackit.cloud", "sub": "uuid", "aud": "string", (optional) "privateKey": "private key when generated by the SA service" } } - Configure the service account key and private key for authentication in the SDK:
- setting the fiels in the provider block:
service_account_keyorservice_account_key_path,private_keyorprivate_key_path - setting environment variables:
STACKIT_SERVICE_ACCOUNT_KEY_PATHandSTACKIT_PRIVATE_KEY_PATH - setting them in the credentials file (see above)
- setting the fiels in the provider block:
Token flow
Using this flow is less secure since the token is long-lived. You can provide the token in several ways:
- Setting the field
service_account_tokenin the provider - Setting the environment variable
STACKIT_SERVICE_ACCOUNT_TOKEN - Setting it in the credentials file (see above)
Schema
Optional
argus_custom_endpoint(String) Custom endpoint for the Argus servicecredentials_path(String) Path of JSON from where the credentials are read. Takes precedence over the env varSTACKIT_CREDENTIALS_PATH. Default value is~/.stackit/credentials.json.dns_custom_endpoint(String) Custom endpoint for the DNS servicejwks_custom_endpoint(String) Custom endpoint for the jwks API, which is used to get the json web key sets (jwks) to validate tokens when using the key flowlogme_custom_endpoint(String) Custom endpoint for the LogMe servicemariadb_custom_endpoint(String) Custom endpoint for the MariaDB serviceobjectstorage_custom_endpoint(String) Custom endpoint for the Object Storage serviceopensearch_custom_endpoint(String) Custom endpoint for the OpenSearch servicepostgresflex_custom_endpoint(String) Custom endpoint for the PostgresFlex servicepostgresql_custom_endpoint(String) Custom endpoint for the PostgreSQL serviceprivate_key(String) Private RSA key used for authentication. If set alongside the service account key, the key flow will be used to authenticate all operations.private_key_path(String) Path for the private RSA key used for authentication. If set alongside the service account key, the key flow will be used to authenticate all operations.rabbitmq_custom_endpoint(String) Custom endpoint for the RabbitMQ serviceredis_custom_endpoint(String)region(String) Region will be used as the default location for regional services. Not all services require a region, some are globalresourcemanager_custom_endpoint(String) Custom endpoint for the Resource Manager serviceservice_account_email(String) Service account email. It can also be set using the environment variable STACKIT_SERVICE_ACCOUNT_EMAILservice_account_key(String) Service account key used for authentication. If set alongside private key, the key flow will be used to authenticate all operations.service_account_key_path(String) Path for the service account key used for authentication. If set alongside the private key, the key flow will be used to authenticate all operations.service_account_token(String) Token used for authentication. If set, the token flow will be used to authenticate all operations.ske_custom_endpoint(String) Custom endpoint for the Kubernetes Engine (SKE) servicetoken_custom_endpoint(String) Custom endpoint for the token API, which is used to request access tokens when using the key flow