8000 GitHub - containerscrew/infratools: Container image with infra tools (terraform, tofu, aws cli, helm, kubectl...). Useful for CI/CD.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

containerscrew/infratools

Repository files navigation

logo

infratools

Container image with infra tools (tofu, terragrunt, aws cli, helm, kubectl...). Useful for CI/CD or local deployments.


> Available tags
> Latest tag:

DockerHub Badge


Architecture

Arch Supported Tested
amd64
arm64

Usage

Create a copy of the script run-infratools.sh in your repository and run it.

./run-infratools.sh
Usage: /usr/local/bin/run-infratools.sh [-i (info)] [-u (update)] [-a (attach or create)] [-v <host_path>:<container_path>]

Mapping volumes:

./run-infratools.sh -a -v ~/.lacework.toml:/home/infratools/.lacework.toml

Move this script to your bin path, and reuse it in other repos:

sudo cp run-infratools.sh /usr/local/bin/

With this script, you can run the container or attach to an existing, update the container to the latest tag version, or get the current version of the container.

Important

Running this script, ZSH history will be saved in /code repository to allow persistent command history. So, If you don't want to push the .zsh_history to git, add the file to .gitignore in the repo you are using.

Run the container directly, without mapping directories:

docker run -it --rm --name infratools containerscrew/infratools:v2.9.0

In a pipeline like .gitlab-ci.yml, you can use the image directly:

stages:
  - deploy

infratools:
  image: containerscrew/infratools:v2.9.0
  stage: deploy
  script:
    - aws --version
    - kubectl version --client
    #etc...

Persist variables in a container:

cd your-terraform-repo
mkdir .user/
touch .user/env
echo "FOO=BAR" >> .user/env
# Infratools container will use .user/env file as a --envfile
run-infratools.sh -a
echo $FOO

Important

Add .user/env to your .gitignore

Local

make local-build-run

Versioning

Versions of packages and tools are pinned in the Dockerfile. Take a look to the corresponding tag.

Important

Starting in version v2.9.0 terraform was removed in favour of opentofu, which is a drop-in replacement for terraform CLI. terragrunt will detect automatically tofu binary. tfenv stills works to manage versions of terraform. tofuenv will be installed in future versions of infratools to manage versions of opentofu.

If you want to use terraform instead of tofu:

tfenv use 1.9.5 # or the version you want
# If using Mac Apple Silicion, and want to use amd64 terraform binary
TFENV_ARCH="amd64" tfenv use 1.9.5
terragrunt init --tf-path=/usr/local/bin/terraform
terragrunt plan --tf-path=/usr/local/bin/terraform
# Or export the variable
TG_TF_PATH=/usr/local/bin/terraform
terragrunt plan

Git config for servers with self signed certificate

If using custom git repository with self signed certificate (eg: terraform modules in a private git server), just edit in your ~/.gitconfig:

[http "https://gitlab.server.internal"]
  ##################################
  # Self Signed Server Certificate #
  ##################################

  sslCAInfo = /path/to/your/certificate.crt
  #sslCAPath = /path/to/selfCA/
  sslVerify = true # or set to false if you trust

Or skip tls verify, run this inside the container:

git config --global http.sslVerify false # add this line if needed in run.sh script to run it automatically

LICENSE

infratools is distributed under the terms of the Apache 2.0 license.

About

Container image with infra tools (terraform, tofu, aws cli, helm, kubectl...). Useful for CI/CD.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0