Giter Club home page Giter Club logo

terraform-alicloud-cr's Introduction

Alicloud Container Registry Terraform Module

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, 简体中文.


Architecture Diagram

After using this module, the following resources will be created:

terraform-alicloud-cr diagram

Usage

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.

Inputs

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.

Outputs

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

Docker Login

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

Terraform version 0.12.0+ is required for this module to work.

Authors

Created and maintained by Alberto Roura (@roura356a, albertoroura.com). Feel free to contribute.

Examples

Testing

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.

License

Apache 2 Licensed. See LICENSE for full details.

Reference

terraform-alicloud-cr's People

Contributors

rouralberto avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ryanoatz99

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.