A Private Terraform Module Registry in the early stages of development.
To launch the registry server
$ ./citizen server
It will be launched at http://localhost:3000. You can check it at http://localhost:3000/health.
Because Terraform CLI works with only HTTPS server, you should set up HTTPS in front of the registry server.
If you want to test it at local, you need a tool which provides HTTPS like ngrok.
Environment variables:
-
CITIZEN_DATA_PATH
: A directory to save database file. The default isdata
directory in a current working directory (absolute/relative path can be used). -
CITIZEN_STORAGE
: Storage type to store module files. You can usefile
ors3
type. -
CITIZEN_STORAGE_PATH
: A directory to save module files only ifCITIZEN_STORAGE
isfile
(absolute/relative path can be used). -
CITIZEN_AWS_S3_BUCKET`
: A S3 bucket to save module files only ifCITIZEN_STORAGE
iss3
. -
AWS_ACCESS_KEY_ID
: Your AWS access key only ifCITIZEN_STORAGE
iss3
. -
AWS_SECRET_ACCESS_KEY
: Your AWS secret access key only ifCITIZEN_STORAGE
iss3
.
Since official Terraform Module Registry is integrated with GitHub, users can publish terraform modules if they just push it on GitHub.
Citizen provides a special command to publish a module onto citizen registry server instead integrating GitHub.
In a module directory, you can publish your terraform module via a command below:
$ ./citizen publish <namespace> <name> <provider> <version>
You should set CITIZEN_ADDR
as citizen registry server address which you will publish your modules to. e.g. https://registry.example.com
.
If you have ALB module in ./alb
directory and your registry server is launched at https://registry.example.com
, you run below command in ./alb
directory to publish ALB module.
$ CITIZEN_ADDR=https://registry.example.com \
citizen publish dev-team alb aws 0.1.0
Then, you can define it in your terraform file like this:
module "alb" { source = "registry.example.com/dev-team/alb/aws" version = "0.1.0" }
You can use docker to launch the registry server. The docker image is in outsideris/citizen.
$ docker run -d -p "3000:3000" outsideris/citizen:latest