diff --git a/.devcontainer/example/devcontainer.json b/.devcontainer/example/devcontainer.json old mode 100755 new mode 100644 diff --git a/.env.example b/.env.example old mode 100755 new mode 100644 index 34c9d63..9d7d73b --- a/.env.example +++ b/.env.example @@ -15,6 +15,7 @@ # # VERSION REFERENCE: # Terraform: https://releases.hashicorp.com/terraform +# Packer: https://releases.hashicorp.com/packer # kubectl: https://kubernetes.io/releases # k9s: https://github.com/derailed/k9s/releases # .NET: https://dotnet.microsoft.com/download/dotnet @@ -42,6 +43,7 @@ STERN_VERSION=v1.33.1 # Infrastructure as code tools ANSIBLE_VERSION=13.5.0 TERRAFORM_VERSION=1.14.8 +PACKER_VERSION=1.15.3 # Database clients POSTGRESQL_CLIENT_VERSION=18 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f456f43 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,14 @@ +# Enforce LF line endings for all text files. +# This repo targets Linux (Docker images) — CRLF in shell scripts or +# Dockerfiles causes hard-to-diagnose runtime failures inside containers. +* text=auto eol=lf + +# Explicitly mark binary files so Git never attempts line-ending conversion. +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.zip binary +*.gz binary +*.tar binary diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md old mode 100755 new mode 100644 diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md old mode 100755 new mode 100644 diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml old mode 100755 new mode 100644 diff --git a/Dockerfile b/Dockerfile old mode 100755 new mode 100644 index 20be557..2d62836 --- a/Dockerfile +++ b/Dockerfile @@ -144,11 +144,33 @@ ARG TERRAFORM_VERSION=1.14.8 RUN curl -fsSL \ "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip" \ -o /tmp/terraform.zip \ - && unzip /tmp/terraform.zip -d /usr/local/bin/ \ + && unzip /tmp/terraform.zip terraform -d /usr/local/bin/ \ && rm /tmp/terraform.zip \ && chmod +x /usr/local/bin/terraform \ && terraform version +# ----------------------------------------------------------------------------- +# Packer +# Machine image building tool by HashiCorp. Installed via HashiCorp's official +# binary release for exact version pinning. +# Packer uses amd64/arm64 naming — maps directly from TARGETARCH. +# URL: https://developer.hashicorp.com/packer +# ----------------------------------------------------------------------------- +ARG PACKER_VERSION=1.15.3 + +RUN curl -fsSL \ + "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_${TARGETARCH}.zip" \ + -o /tmp/packer.zip \ + && curl -fsSL \ + "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_SHA256SUMS" \ + -o /tmp/packer_SHA256SUMS \ + && EXPECTED=$(grep "packer_${PACKER_VERSION}_linux_${TARGETARCH}.zip" /tmp/packer_SHA256SUMS | awk '{print $1}') \ + && echo "${EXPECTED} /tmp/packer.zip" | sha256sum -c \ + && unzip /tmp/packer.zip packer -d /usr/local/bin/ \ + && rm /tmp/packer.zip /tmp/packer_SHA256SUMS \ + && chmod +x /usr/local/bin/packer \ + && packer version + # ----------------------------------------------------------------------------- # GitHub CLI (gh) # Installed via official GitHub binary release — single static binary. @@ -413,6 +435,15 @@ RUN kubectl completion bash > /etc/bash_completion.d/kubectl # ----------------------------------------------------------------------------- RUN terraform -install-autocomplete || true +# ----------------------------------------------------------------------------- +# Shell completions — Packer +# Uses complete -C (same approach as AWS CLI) rather than -autocomplete-install +# which only writes to root's shell RC, not system-wide. +# ----------------------------------------------------------------------------- +RUN packer_path=$(which packer) \ + && echo "complete -C '${packer_path}' packer" \ + > /etc/bash_completion.d/packer + # ----------------------------------------------------------------------------- # Shell completions — Ansible # ----------------------------------------------------------------------------- diff --git a/README.md b/README.md old mode 100755 new mode 100644 index e5bebc1..57eb1af --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ with Docker and VS Code — no local setup required. | Tool | Version | Purpose | |---|---|---| | [Terraform](https://www.terraform.io) | See [Dockerfile](./Dockerfile) | Infrastructure as code | +| [Packer](https://developer.hashicorp.com/packer) | See [Dockerfile](./Dockerfile) | Machine image building | | [kubectl](https://kubernetes.io/docs/reference/kubectl/) | See [Dockerfile](./Dockerfile) | Kubernetes cluster management | | [k9s](https://k9scli.io) | See [Dockerfile](./Dockerfile) | Kubernetes terminal UI | | [kubeseal](https://github.com/bitnami-labs/sealed-secrets) | See [Dockerfile](./Dockerfile) | Kubernetes SealedSecrets CLI | diff --git a/dependencies/ansible-requirements.yml b/dependencies/ansible-requirements.yml old mode 100755 new mode 100644 diff --git a/dependencies/python-ansible-requirements.txt b/dependencies/python-ansible-requirements.txt old mode 100755 new mode 100644