Sign inSign up

cyclenerd/cloud-tools-container

By cyclenerd

Updated 5 days ago

📦 Ready-to-use image with cloud tools (AWS CLI, Google Cloud CLI, Terraform, Packer, Ansible)

Image
Integration & delivery
Developer tools
0

8.3K

cyclenerd/cloud-tools-container repository overview

Cloud Tools Container

Badge: Ansible Badge: AWS Badge: Bitbucket Badge: CircleCI Badge: Docker Badge: Firebase Badge: GitLab Badge: GNU Bash Badge: Go Badge: Google Cloud Badge: Hetzer Cloud Badge: Kubernetes Badge: Packer Badge: Perl Badge: Python Badge: Terraform Badge: Ubuntu Badge: Vault Badge:Last release Badge: License

Ready-to-use Docker container image for AWS CodeBuild/CodePipeline, Bitbucket Pipelines, CircleCI, GitHub Actions, GitLab runner jobs and Google Cloud Build.

Image:

cyclenerd/cloud-tools-container:latest

Multiarch support:

  • amd64 : Intel or AMD 64-Bit CPU (x86-64)
  • arm64 : Arm-based 64-Bit CPU (i.e. Apple silicon, AWS Graviton, Ampere Altra)

This project uses GitHub Actions for automated builds and deployments. The image is regularly rebuilt on the 15th of each month.

Software

This Docker container image is based on the Ubuntu 24.04 release (ubuntu:noble).

The following software is included and tested:

  • Ansible infrastructure as configuration (IaC) software tool (ansible and ansible-playbook)
  • AWS command line interface (CLI) tools (aws)
  • Firebase command line interface (CLI) tools (firebase)
  • fuego command line firestore client (fuego)
  • Hetzner Cloud CLI (hcloud)
  • GCR Cleaner deletes old container images on registries (gcr-cleaner-cli)
  • Google Cloud command line interface (CLI) tools (gcloud, gsutil and bq)
  • Open Policy Agent general-purpose policy engine, context-aware policy enforcement (opa)
  • Packer (packer)
  • ShellCheck analysis and linting tool for Shell/Bash scripts (shellcheck)
  • skopeo command line utility that performs various operations on container images and repositories (skopeo)
  • Terraform infrastructure as configuration (IaC) software tool (terraform)
    • terraform-docs generates documentation from Terraform modules (terraform-docs)
    • Terragrunt thin wrapper that provides extra tools (terragrunt)
    • tflint linting tool for Terraform code (tflint)
    • tfsec analysis security scanner for Terraform code (tfsec)
  • Kubernetes
  • Vault password manager and authentication tool (vault)
  • Base packages

Run

Runs a command in the container, pulling the image if needed and starting the container.

Docker 🐳

Docker run command:

docker run cyclenerd/cloud-tools-container:latest aws --version
Podman 🦭

Podman run command:

podman run docker.io/cyclenerd/cloud-tools-container:latest aws --version

Examples

Example configurations for various CI/CD tools.

AWS CodeBuild

AWS CodeBuild configuration:

{
  "environment": {
    "type": "LINUX_CONTAINER",
    "image": "cyclenerd/cloud-tools-container:latest",
    "computeType": "BUILD_GENERAL1_SMALL"
  },
}
Google Cloud Build

Google Cloud Build (cloudbuild.yaml) configuration file:

steps:
  - name: 'cyclenerd/cloud-tools-container:latest'
    entrypoint: 'gcloud'
    args: ['--version']
GitLab CI/CD
Google Cloud Service Account Key

GitLab CI/CD (.gitlab-ci.yml) configuration with Google Cloud Service Account Key:

variables:
  GOOGLE_APPLICATION_CREDENTIALS: "/tmp/service_account_key.json"

default:
  image: cyclenerd/cloud-tools-container:latest
  before_script:
    # Login
    - echo "$YOUR_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY" > "$GOOGLE_APPLICATION_CREDENTIALS"
    - gcloud auth activate-service-account --key-file="$GOOGLE_APPLICATION_CREDENTIALS"

stages:
  - auth

gcloud-auth-list:
  stage: auth
  script:
    - gcloud auth list
Google Cloud Workload Identity Federation

GitLab CI/CD (.gitlab-ci.yml) configuration with Google Cloud Workload Identity Federation login:

variables:
  WIF_PROVIDER: projects/1057256049272/locations/global/workloadIdentityPools/gitlab-com/providers/gitlab-com-oidc
  SERVICE_ACCOUNT: [email protected]
  GOOGLE_CREDENTIALS: gcp_temp_cred.json

default:
  image: cyclenerd/cloud-tools-container:latest
  before_script:
    # Login
    - echo "${CI_JOB_JWT_V2}" > gitlab_jwt_token.txt
    - gcloud iam workload-identity-pools create-cred-config "${WIF_PROVIDER}"
      --service-account="${SERVICE_ACCOUNT}"
      --output-file=${GOOGLE_CREDENTIALS}
      --credential-source-file=gitlab_jwt_token.txt
    - gcloud config set auth/credential_file_override "${GOOGLE_CREDENTIALS}"
stages:
  - auth

gcloud-auth-list:
  stage: auth
  script:
    - gcloud auth list
Bitbucket Pipelines
Google Cloud Workload Identity Federation

Bitbucket pipeline configuration (bitbucket-pipelines.yml) with Google Cloud Workload Identity Federation login:

image: cyclenerd/cloud-tools-container:latest

pipelines:
  default:
    - step:
        name: "Workload Identity Federation"
        # Enable OIDC
        oidc: true
        max-time: 5
        script:
          # Set variables
          - export WIF_PROVIDER='projects/753695557698/locations/global/workloadIdentityPools/bitbucket-org/providers/bitbucket-org-oidc'
          - export SERVICE_ACCOUNT='[email protected]'
          - export GOOGLE_CREDENTIALS='gcp_temp_cred.json'
          # Configure Workload Identity Federation via a credentials file.
          - echo ${BITBUCKET_STEP_OIDC_TOKEN} > .ci_job_jwt_file
          - gcloud iam workload-identity-pools create-cred-config "${WIF_PROVIDER}"
            --service-account="${SERVICE_ACCOUNT}"
            --output-file="${GOOGLE_CREDENTIALS}"
            --credential-source-file=.ci_job_jwt_file
          - gcloud config set auth/credential_file_override "${GOOGLE_CREDENTIALS}"
          # Now you can run gcloud commands authenticated as the impersonated service account.
GitHub Actions

GitHub Actions configuration:

jobs:
  cloud-tools-container:
    runs-on: 'ubuntu-latest'
    # Use container to run the steps in a job
    container:
      image: 'docker://cyclenerd/cloud-tools-container:latest'
    steps:
      - name: "Terraform"
        run: terraform --version
CircleCI

CircleCI configuration:

jobs:
  cloud-tools-container:
    docker:
      - image: cyclenerd/cloud-tools-container:latest
    steps:
      - run:
          name: Google Cloud CLI
          command: gcloud --version

Tag summary

Content type

Image

Digest

sha256:9254a2ca4

Size

1.6 GB

Last updated

5 days ago

docker pull cyclenerd/cloud-tools-container