LocalStack Extension: LocalStack Terraform Init
Project description
Use Terraform files in LocalStack init hooks
LocalStack Extension for using Terraform files in init hooks.
[!WARNING] This extension is experimental and subject to change.
[!NOTE] The extension is designed for simple self-contained terraform files, not complex projects or modules. If you have larger projects, then we recommend running them from the host.
Usage
- Start localstack with
EXTENSION_AUTO_INSTALL="localstack-extension-terraform-init" - Optionally specify
TERRAFORM_VERSION=1.13.2(currently defaults to 1.5.7) - Mount a
main.tffile into/etc/localstack/init/ready.d
When LocalStack starts up, it will install the extension, which in turn install terraform and tflocal into the container.
If one of the init stage directories contain a main.tf, the extension will run tflocal init and tflocal apply on that directory.
[!NOTE] Terraform state files will be created in your host directory if you mounted an entire folder into
/etc/localstack/init/ready.d. These files are created from within the container using the container user, so you may needsudoto remove the files from your host. If you only mount themain.tffile, not an entire directory, localstack will have to download the AWS terraform provider every time duringtflocal init.
Example
Example main.tf:
resource "aws_s3_bucket" "example" {
bucket = "my-tf-test-bucket"
tags = {
Name = "My bucket"
Environment = "Dev"
}
}
Start LocalStack Pro with mounted main.tf:
localstack start \
-e EXTENSION_AUTO_INSTALL="localstack-extension-terraform-init" \
-v ./main.tf:/etc/localstack/init/ready.d/main.tf
Or, if you use a docker-compose file:
services:
localstack:
container_name: "localstack-main"
image: localstack/localstack-pro # required for Pro
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
environment:
# Activate LocalStack Pro: https://docs.localstack.cloud/getting-started/auth-token/
- LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN:?}
- EXTENSION_AUTO_LOAD=localstack-extension-terraform-init"
volumes:
# you could also place your main.tf in `./ready.d` and set "./ready.d:/etc/localstack/init/ready.d"
- "./main.tf:/etc/localstack/init/ready.d/main.tf"
- "./volume:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
In a new terminal window, you can wait for localstack to complete and then print the created s3 buckets.
localstack wait && awslocal s3 ls
The logs should show something like:
2024-06-26T20:36:19.946 INFO --- [ady_monitor)] l.extension : Applying terraform project from file /etc/localstack/init/ready.d/main.tf
2024-06-26T20:36:19.946 DEBUG --- [ady_monitor)] localstack.utils.run : Executing command: ['tflocal', '-chdir=/etc/localstack/init/ready.d', 'init', '-input=false']
2024-06-26T20:36:26.864 DEBUG --- [ady_monitor)] localstack.utils.run : Executing command: ['tflocal', '-chdir=/etc/localstack/init/ready.d', 'apply', '-auto-approve']
Install local development version
To install the extension into localstack in developer mode, you will need Python 3.10, and create a virtual environment in the extensions project.
In the newly generated project, simply run
make install
Then, to enable the extension for LocalStack, run
localstack extensions dev enable .
You can then start LocalStack with EXTENSION_DEV_MODE=1 to load all enabled extensions:
EXTENSION_DEV_MODE=1 localstack start
Install from GitHub repository
To distribute your extension, simply upload it to your github account. Your extension can then be installed via:
localstack extensions install "git+https://github.com/localstack/localstack-extensions/#egg=localstack-extension-terraform-init&subdirectory=terraform-init"
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file localstack_extension_terraform_init-0.3.0.tar.gz.
File metadata
- Download URL: localstack_extension_terraform_init-0.3.0.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc37f922e062f255c421468c3ce52140344fd90d730c022b8cd5263d82c94b4c
|
|
| MD5 |
7a0beaf1cd54fd1a01a7bf10021b8c63
|
|
| BLAKE2b-256 |
f83b6aa6d441d72293ad9fb1338c187130fa1cf1e7de940cc4ab7ca0138406b9
|
File details
Details for the file localstack_extension_terraform_init-0.3.0-py3-none-any.whl.
File metadata
- Download URL: localstack_extension_terraform_init-0.3.0-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68769201ac482fc2b1cafa2e12cb51a5b47d1ed67e296ac3fcbf52bf3f754d9b
|
|
| MD5 |
57524613a815769412eabf3560e2db5c
|
|
| BLAKE2b-256 |
fffb6748ba81fd9d47c5023afafaae8e2d4107920ab6dd7bb25e9a1ca8459b1c
|