A terraform module to create a private Container Registry namespace and a RAM role able to pull/push from the namespace created.
NOTE: This module uses AccessKey and SecretKey from profile and shared_credentials_file. If you have not set
them yet, please install aliyun-cli and configure it.
Read this in other languages: English, Español, 简体中文.
After using this module, the following resources will be created:
provider "alicloud" {}
module "cr" {
source = "roura356a/cr/alicloud"
version = "1.3.0"
namespace = "cr_repo_namespace"
}After running terraform apply, a file called cr-{namespace}-ak.json will be generated with the AccessKey &
SecretKey needed to query the GetAuthorizationToken API for cr and be able to push/pull to/from the repositories
inside the namespace created.
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| region | The region used to launch this module resources | string | "" | no |
| profile | The profile name as set in the shared credentials file. If not set, it will be sourced from the ALICLOUD_PROFILE environment variable |
string | "default" | no |
| shared_credentials_file | This is the path to the shared credentials file. If this is not set and a profile is specified, $HOME/.aliyun/config.json will be used |
string | "" | no |
| skip_region_validation | Skip static validation of region ID. Used by users of alternative AlibabaCloud-like APIs or users w/ access to regions that are not public (yet) | bool | false | no |
| namespace | Name of Container Registry namespace | string | - | yes |
| password | Password for the Container Registry | string | "" | no |
| repositories | List of optional repositories to be created on apply | list(string) | ["default"] | no |
| repo_autocreate | Boolean, when it set to true, repositories are automatically created when pushing new images. If it set to false, you create repository for images before pushing |
bool | true | no |
You can create repositories by populating the repositories variable with a list of strings.
| Name | Description |
|---|---|
| cr_namespace | The CR Namespace's ID |
| cr_access_key | The CR Namespace's Access Key |
| cr_user | The CR Namespace's User |
| cr_endpoint | Public endpoint of the registry |
| ram_user | The RAM User |
| ram_policy_name | The RAM policy name |
| repository_ids | List of repository IDs created |
| ram_console_username | Console login username |
| disposable_password | Password to activate the console login profile, forces to reset it |
| access_key_status | Status of the created AccessKey |
| ram_policy_type | The RAM policy type |
| ram_policy_attachment | The RAM policy attachment ID |
In order to activate the newly created RAM user on the Registry, only for the first time and due to a security measure
by Alibaba Cloud (this may change in the future), you need to navigate to the
Container Registry Console using the newly created RAM user (with the one-time
password outputted on terraform apply as disposable_password) and follow the on-screen instructions to activate the
account.
After that, with the cr-{namespace}-ak.json file credentials, you can get, by using the aliyun-cli SDK, a temporary
secure login credentials by running aliyun cr GetAuthorizationToken.
Terraform version 0.12.0+ is required for this module to work.
Created and maintained by Alberto Roura (@roura356a, albertoroura.com). Feel free to contribute.
This Terrafom module uses terratest to test the IaC resources created. To
test, go into the test folder, run go mod init cr, go mod tidy and then go test.
Apache 2 Licensed. See LICENSE for full details.
