diff --git a/README.md b/README.md index 3fa3c6c09..9113f7783 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -Project Banner
+# (deprecated) Packages +Deprecated + -

Auto Update StatusSlack Community -

-Cloud Posse distribution of awesome apps. - - - - -## Introduction - - -Use this repo to easily install releases of popular Open Source apps. We provide a few ways to use it. - -1. **Make Based Installer.** This installer works regardless of your OS and distribution. It downloads packages directly from their GitHub source repos and installs them to your `INSTALL_PATH`. -2. **Alpine Linux Packages.** Use our Alpine repository to install prebuilt packages that use the original source binary (where possible) from the maintainers' official GitHub repo releases. -3. **Docker Image.** Use our docker image as a base-image or as part of a multi-stage docker build. The docker image always distributes the latest linux binaries for `x86_64` architectures. - -See examples below for usage. - -**Is one of our packages out of date?** - -Open up an [issue](https://github.com/cloudposse/packages/issues) or submit a PR (*preferred*). We'll review quickly! - -## Sponsorship [](https://cloudsmith.io/) - -Package repository hosting is graciously provided by [cloudsmith](https://cloudsmith.io/). Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that enables your organization to create, store and share packages in any format, to any place, with total confidence. We believe there’s a better way to manage software assets and packages, and they’re making it happen! - - - - -## Usage - - -## Debian Repository (recommended) - -A public Debian repository is provided by [Cloud Posse](https://cloudposse.com). -The repository is hosted by [Cloudsmith](https://cloudsmith.com/) -Using this Debian repository is ultimately more reliable than depending on [GitHub for availability](https://twitter.com/githubstatus) -and provides an easier way to manage dependencies pinned at multiple versions. - -### Configure the Debian repository: - -#### The Easy Way - -Cloudsmith provides an installation script to configure the Debian repository for your version of Debian. - -``` -curl -1sLf 'https://dl.cloudsmith.io/public/cloudposse/packages/cfg/setup/bash.deb.sh' | bash -``` -__NOTE__: Requires `bash` and `curl` to run: - -#### For Docker - -Add the following to your `Dockerfile` near the top. -``` -# Install the cloudposse Debian repository -RUN apt-get update && apt-get install -y apt-utils curl -RUN curl -1sLf 'https://dl.cloudsmith.io/public/cloudposse/packages/cfg/setup/bash.deb.sh' | bash -``` - -### Installing Debian Packages - -When adding packages, we recommend using `apt-get update && apt-get install -yq $package` to update the repository index before installing packages. - -Simply install any package as normal: -``` -apk-get install -y terraform -``` - -But we recommend that you use version pinning (the `-\*` is important, as it gets you the latest version of the package): -``` -apt-get install gomplate=3.0.0-\* -``` - -## RPM Repository - -We publish RPM packages corresponding to all the Debian packages we publish. Installing the repository is almost the same as above. - -``` -curl -1sLf 'https://dl.cloudsmith.io/public/cloudposse/packages/cfg/setup/bash.rpm.sh' | bash -``` - -Install packages as normal. `yum` automatically updates the repository index before installing packages. -``` -yum install -y terraform -``` - -Note that unlike other package systems, `yum` automatically updates the repository index before installing packages. - -We still recommend version pinning, but `yum` makes it hard. You can use this command to list all the available versions of a package: -``` -yum --showduplicate list $package -``` -Then you can install the package with a version pinning: -``` -VERSION=1.3.0 -RELEASE=1 -yum install -y $package-$VERSION-$RELEASE.$(uname -m) -``` - -## Alpine Repository - -A public Alpine repository is provided by [Cloud Posse](https://cloudposse.com). -The repository is hosted by [Cloudsmith](https://cloudsmith.com/) -Using this Alpine repository is ultimately more reliable than depending on [GitHub for availability](https://twitter.com/githubstatus) -and provides an easier way to manage dependencies pinned at multiple versions. +## Deprecated -### Configure the Alpine repository: +This repository is scheduled for archival. We recommend switching to the [Atmos Toolchain](https://atmos.tools/cli/commands/toolchain/usage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=deprecation-notice) for CLI tool management. -#### The Easy Way +Atmos provides native version-controlled tool management with support for 1,000+ tools from the Aqua registry. -Cloudsmith provides an installation script to configure the Alpine repository for your version of Alpine. +**What this means:** +- We stop publishing new packages upon archival +- Existing packages remain available on [Cloudsmith](https://cloudsmith.io/~cloudposse/repos/packages/packages/) +- The exact archival date has not been determined -``` -apk add --no-cache bash curl -curl -1sLf \ -'https://dl.cloudsmith.io/public/cloudposse/packages/setup.alpine.sh' \ -| bash -``` - -### Installing Alpine Packages - -When adding packages, we recommend using `apk add --update $package` to update the repository index before installing packages. - -Simply install any package as normal: -``` -apk add --update terraform -``` - -But we recommend that you use version pinning: -``` -apk add --update terraform==1.0.0-r0 -``` - -And maybe even repository pinning, so you know that you get our versions: -``` -apk add --update terraform@cloudposse==1.0.0-r0 -``` - -## Makefile Interface +**Learn more:** +- [Atmos Toolchain Usage](https://atmos.tools/cli/commands/toolchain/usage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=deprecation-notice) +- [Toolchain Management Changelog](https://atmos.tools/changelog/toolchain-management?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=deprecation-notice) -The `Makefile` interface works on OSX and Linux. It's a great way to distribute binaries in an OS-agnostic way which does not depend on a package manager (e.g. no `brew` or `apt-get`). +We literally have *hundreds of other terraform modules* that are Open Source and well-maintained. Check them out! -This method is ideal for [local development environments](https://docs.cloudposse.com/local-dev-environments/) (which is how we use it) where you need the dependencies installed natively for your OS/architecture, such as installing a package on OSX. -See all available packages: -``` -make -C install help -``` - -Install everything... -``` -make -C install all -``` - -Install specific packages: -``` -make -C install aws-vault chamber -``` - -Install to a specific folder: -``` -make -C install aws-vault INSTALL_PATH=/usr/bin -``` - -Uninstall a specific package -``` -make -C uninstall yq -``` +### Historical Description -### Rebuilding GitHub Action Workflows - -The GitHub Action workflows are compiled from the `.github/package-template.yml` file by running `make -C .github workflows`. It's also run automatically when rebuilding the `README.md` with `make readme`. - -Run this make target anytime the `package-template.yml` changes or any new packages are added to the `vendor/` folder. - -__IMPORTANT__: The `package-template.yml` supports a single macro for interpolation `%PACKAGE_NAME%` which is replaced using a `sed` expression. -Since the workflow uses a combation of gotemplate-like interpolations as well as inlines shell scripts, we used the `%VAR%` form of interpolation to avoid -the need for endless escaping of interpolation specifiers. - -### Testing Locally - -#### Alpine - -```sh -$ make docker/build/apk/shell -$ make -C vendor/ apk -``` - -#### Debian - -```sh -$ make docker/build/deb/shell -$ make -C vendor/ deb -``` - -#### RPM - -```sh -$ make docker/build/rpm/shell -$ make -C vendor/ rpm -``` - -### Mac +Cloud Posse distribution of awesome apps. -```sh -$ make -C vendor/ install -``` -## Examples -### Docker Multi-stage Build -Add this to a `Dockerfile` to install packages using a multi-stage build process: -``` -FROM cloudposse/packages:latest AS packages -COPY --from=packages /packages/bin/kubectl /usr/local/bin/ -``` -### Docker with Git Clone - -Or... add this to a `Dockerfile` to easily install packages on-demand: -``` -RUN git clone --depth=1 -b main https://github.com/cloudposse/packages.git /packages && \ - rm -rf /packages/.git && \ - make -C /packages/install kubectl -``` -### Makefile Inclusion -Sometimes it's necessary to install some binary dependencies when building projects. For example, we frequently -rely on `gomplate` or `helm` to build chart packages. - -Here's a stub you can include into a `Makefile` to make it easier to install binary dependencies. - -``` -export PACKAGES_VERSION ?= main -export PACKAGES_PATH ?= packages/ -export INSTALL_PATH ?= $(PACKAGES_PATH)/bin - -## Install packages -packages/install: - @if [ ! -d $(PACKAGES_PATH) ]; then \ - echo "Installing packages $(PACKAGES_VERSION)..."; \ - rm -rf $(PACKAGES_PATH); \ - git clone --depth=1 -b $(PACKAGES_VERSION) https://github.com/cloudposse/packages.git $(PACKAGES_PATH); \ - rm -rf $(PACKAGES_PATH)/.git; \ - fi - -## Install package (e.g. helm, helmfile, kubectl) -packages/install/%: packages/install - @make -C $(PACKAGES_PATH)/install $(subst packages/install/,,$@) - -## Uninstall package (e.g. helm, helmfile, kubectl) -packages/uninstall/%: - @make -C $(PACKAGES_PATH)/uninstall $(subst packages/uninstall/,,$@) -``` - -### Contributing Additional Packages -In addition to following the Contributing section, the following steps can be used to add new packages for review (via a PR). -If possible (and it usually is), you want to find an existing package with similarly packaged release (`.tar`, `.gz`, uncompressed binary, etc.), -and copy and edit its Makefile. -1. Copy the Makefile from an existing, similar, package within the vendors directory. Name the new folder with the same name as the binary package being installed. -2. Edit the Makefile, ensuring the `DOWNLOAD_URL` is properly formatted -3. Run `make init` from within the directory to create the `DESCRIPTION`, `LICENSE`, `RELEASE`, and `VERSION` files. -4. Ensure that a test task exists in the package Makefile. It should check the version number of the installed binary if possible. -5. Test the install and ensure that it downloads and runs as expected (`make -C install INSTALL_PATH=/tmp`) -6. Test the apk build (see below) -7. Update the `README.md` (`make init readme/deps readme`) - -### Testing apk builds - -To validate that a new package will build into an apk you can use the following steps; - -```bash -make docker/build/apk/shell -make -C vendor/ apk -# Some temp build files in the volume mount set user/group to nobody/nobody for apk building. -# It is easier to remove them while within the docker container. -rm -rf ./tmp/build.* -exit -``` -### Troubleshooting Package Addition -Here are some solutions to several common problems that may occur when adding a new package: - -1.
When adding a new app, the `make -C vendor/ apk` command fails, claiming it can't find the app's binary file, even though it is in the expected place. - - Part of the `make -C vendor/ apk` command is building a package for the binary file inside an Alpine Linux container. Since Alpine Linux uses `musl` as its C library, this often leads to situations where binaries built against `libc` might not function on Alpine. What's more, binaries from projects written in `Go` will not be found by the Alpine package builder at all if they are missing any necessary libraries, like `libc`. The solution to this problem is to add an `export APKBUILD_DEPENDS += libc6-compat` line to the top of your new package's associated `Makefile`. -
-2.
When adding a new binary, the `make builder TARGETS=readme` command fails with `Unable to find image 'cloudposse/build-harness:sha-[some_SHA_stub]' locally`. - - This can occur when you have the `cloudposse/build-harness` repository checked out somewhere on your machine. `make builder TARGETS=readme` will end up looking for a docker image tagged with the SHA that the `HEAD` ref of your `buld-harness` points to. To correct this behavior, just run `make init` in the `cloudposse/packages` directory prior to running `make builder TARGETS=readme`. -
- - - - - - - - -## Package Build Status -| Build Status (* means `amd64` only) | Version | Description | -| ----------------------------------- | ------- | ----------- | -[![amazon-ecr-credential-helper](https://github.com/cloudposse/packages/actions/workflows/amazon-ecr-credential-helper.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aamazon-ecr-credential-helper) | 0.11.0 | Automatically gets credentials for Amazon ECR on docker push/docker pull -[![amtool](https://github.com/cloudposse/packages/actions/workflows/amtool.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aamtool) | 0.30.0 | Tool for interacting with the Alertmanager API -[![argocd](https://github.com/cloudposse/packages/actions/workflows/argocd.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aargocd) | 3.2.3 | Declarative GitOpts for Kubernetes -[![assume-role](https://github.com/cloudposse/packages/actions/workflows/assume-role.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aassume-role)* | 0.3.2 | Easily assume AWS roles in your terminal. -[![atlantis](https://github.com/cloudposse/packages/actions/workflows/atlantis.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aatlantis) | 0.39.0 | Terraform For Teams -[![atmos](https://github.com/cloudposse/packages/actions/workflows/atmos.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aatmos) | 1.203.0 | Universal Tool for DevOps and Cloud Automation -[![awless](https://github.com/cloudposse/packages/actions/workflows/awless.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aawless)* | 0.1.11 | A Mighty CLI for AWS -[![aws-copilot-cli](https://github.com/cloudposse/packages/actions/workflows/aws-copilot-cli.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aaws-copilot-cli) | 1.34.1 | Tool for developers to build, release and operate containerized applications on AWS App Runner or Amazon ECS on AWS Fargate. -[![aws-iam-authenticator](https://github.com/cloudposse/packages/actions/workflows/aws-iam-authenticator.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aaws-iam-authenticator) | 0.7.10 | A tool to use AWS IAM credentials to authenticate to a Kubernetes cluster -[![aws-nuke](https://github.com/cloudposse/packages/actions/workflows/aws-nuke.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aaws-nuke) | 2.25.0 | A highly configurable way to wipe non-prod aws accounts. WARNING do not use in prod -[![aws-vault](https://github.com/cloudposse/packages/actions/workflows/aws-vault.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aaws-vault) | 7.2.0 | A vault for securely storing and accessing AWS credentials in development environments -[![cfssl](https://github.com/cloudposse/packages/actions/workflows/cfssl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acfssl) | 1.6.5 | Cloudflare's PKI and TLS toolkit -[![cfssljson](https://github.com/cloudposse/packages/actions/workflows/cfssljson.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acfssljson) | 1.6.5 | Cloudflare's PKI and TLS toolkit json parser -[![chamber](https://github.com/cloudposse/packages/actions/workflows/chamber.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Achamber) | 3.1.4 | CLI for managing secrets -[![cilium-cli](https://github.com/cloudposse/packages/actions/workflows/cilium-cli.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acilium-cli) | 0.19.0 | CLI to install, manage & troubleshoot Kubernetes clusters running Cilium -[![cli53](https://github.com/cloudposse/packages/actions/workflows/cli53.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acli53) | 0.8.25 | Command line tool for Amazon Route 53 -[![cloud-nuke](https://github.com/cloudposse/packages/actions/workflows/cloud-nuke.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acloud-nuke) | 0.46.0 | Tool for wiping an aws account DANGER absolutely do not use in production -[![cloudflared](https://github.com/cloudposse/packages/actions/workflows/cloudflared.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acloudflared) | 2025.11.1 | Argo Tunnel client -[![codefresh](https://github.com/cloudposse/packages/actions/workflows/codefresh.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Acodefresh) | 0.89.3 | Codefresh CLI -[![conftest](https://github.com/cloudposse/packages/actions/workflows/conftest.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aconftest) | 0.66.0 | Test your configuration files using Open Policy Agent -consul \[frozen\] | 1.16.4 | Hashicorp consul -[![ctop](https://github.com/cloudposse/packages/actions/workflows/ctop.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Actop) | 0.7.7 | Top-like interface for container metrics -[![direnv](https://github.com/cloudposse/packages/actions/workflows/direnv.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Adirenv) | 2.37.1 | Unclutter your .profile -[![doctl](https://github.com/cloudposse/packages/actions/workflows/doctl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Adoctl) | 1.148.0 | A command line tool for DigitalOcean services -[![ec2-instance-selector](https://github.com/cloudposse/packages/actions/workflows/ec2-instance-selector.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aec2-instance-selector) | 3.1.3 | A CLI tool and go library which recommends instance types based on resource criteria like vcpus and memory -[![ecspresso](https://github.com/cloudposse/packages/actions/workflows/ecspresso.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aecspresso) | 2.7.0 | Ecspresso is a deployment tool for Amazon ECS -[![emailcli](https://github.com/cloudposse/packages/actions/workflows/emailcli.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aemailcli) | 1.1.0 | Command line email sending client written in Go. -[![envcli](https://github.com/cloudposse/packages/actions/workflows/envcli.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aenvcli)* | 0.7.1 | A simple wrapper that allows you to run commands within ethereal docker containers -[![fetch](https://github.com/cloudposse/packages/actions/workflows/fetch.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Afetch) | 0.4.8 | fetch makes it easy to download files, folders, and release assets from a specific public git commit, branch, or tag -[![figurine](https://github.com/cloudposse/packages/actions/workflows/figurine.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Afigurine) | 1.3.0 | Print your name in style -[![fzf](https://github.com/cloudposse/packages/actions/workflows/fzf.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Afzf) | 0.23.1 | A command-line fuzzy finder -[![gh](https://github.com/cloudposse/packages/actions/workflows/gh.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agh) | 2.83.2 | The GitHub CLI -[![ghr](https://github.com/cloudposse/packages/actions/workflows/ghr.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aghr) | 0.17.0 | Upload multiple artifacts to GitHub Releases in parallel -[![github-commenter](https://github.com/cloudposse/packages/actions/workflows/github-commenter.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agithub-commenter) | 0.29.0 | Command line utility for creating GitHub comments on Commits, Pull Request Reviews or Issues -[![github-release](https://github.com/cloudposse/packages/actions/workflows/github-release.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agithub-release)* | 0.11.0 | Commandline app to create and edit releases on Github (and upload artifacts) -[![github-status-updater](https://github.com/cloudposse/packages/actions/workflows/github-status-updater.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agithub-status-updater) | 0.11.0 | Command line utility for updating GitHub commit statuses and enabling required status checks for pull requests -[![gitleaks](https://github.com/cloudposse/packages/actions/workflows/gitleaks.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agitleaks) | 8.30.0 | Audit git repos for secrets 🔑 -[![go-jsonnet](https://github.com/cloudposse/packages/actions/workflows/go-jsonnet.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ago-jsonnet) | 0.21.0 | This an implementation of Jsonnet in pure Go. -[![gomplate](https://github.com/cloudposse/packages/actions/workflows/gomplate.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agomplate) | 4.3.3 | A flexible commandline tool for template rendering. Supports lots of local and remote datasources. -[![gonsul](https://github.com/cloudposse/packages/actions/workflows/gonsul.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agonsul)* | 1.0.2 | A stand-alone alternative to git2consul -[![goofys](https://github.com/cloudposse/packages/actions/workflows/goofys.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agoofys)* | 0.24.0 | a high-performance, POSIX-ish Amazon S3 file system written in Go -[![gosu](https://github.com/cloudposse/packages/actions/workflows/gosu.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agosu) | 1.19.0 | Simple Go-based setuid+setgid+setgroups+exec -gotop \[frozen\] | 3.0.0 | A terminal based graphical activity monitor inspired by gtop and vtop -[![grpcurl](https://github.com/cloudposse/packages/actions/workflows/grpcurl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Agrpcurl) | 1.9.3 | Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers -[![hcledit](https://github.com/cloudposse/packages/actions/workflows/hcledit.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahcledit) | 0.2.17 | A command line editor for HCL -[![helm](https://github.com/cloudposse/packages/actions/workflows/helm.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahelm) | 4.0.4 | The Kubernetes Package Manager -[![helm2](https://github.com/cloudposse/packages/actions/workflows/helm2.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahelm2) | 2.17.0 | The Kubernetes Package Manager -[![helm3](https://github.com/cloudposse/packages/actions/workflows/helm3.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahelm3) | 3.19.4 | The Kubernetes Package Manager -[![helmfile](https://github.com/cloudposse/packages/actions/workflows/helmfile.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahelmfile) | 0.144.0 | Deploy Kubernetes Helm Charts -[![htmltest](https://github.com/cloudposse/packages/actions/workflows/htmltest.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahtmltest) | 0.17.0 | :white_check_mark: Test generated HTML for problems -[![hugo](https://github.com/cloudposse/packages/actions/workflows/hugo.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ahugo) | 0.154.5 | The world’s fastest framework for building websites. -[![infracost](https://github.com/cloudposse/packages/actions/workflows/infracost.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ainfracost) | 0.10.43 | Cloud cost estimates for Terraform -[![jp](https://github.com/cloudposse/packages/actions/workflows/jp.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ajp) | 0.2.1 | Command line interface to JMESPath -[![json2hcl](https://github.com/cloudposse/packages/actions/workflows/json2hcl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ajson2hcl) | 0.2.0 | Convert JSON to HCL, and vice versa -[![jx](https://github.com/cloudposse/packages/actions/workflows/jx.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ajx) | 3.16.43 | Jenkins-X -[![k3d](https://github.com/cloudposse/packages/actions/workflows/k3d.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ak3d) | 5.8.3 | Little helper to run Rancher Lab's k3s in Docker -[![k6](https://github.com/cloudposse/packages/actions/workflows/k6.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ak6) | 1.5.0 | A modern load testing tool, using Go and JavaScript - https://k6.io -[![k9s](https://github.com/cloudposse/packages/actions/workflows/k9s.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ak9s) | 0.50.18 | Kubernetes CLI To Manage Your Clusters In Style -[![katafygio](https://github.com/cloudposse/packages/actions/workflows/katafygio.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akatafygio) | 0.8.3 | K8s continuous backup to git -[![kfctl](https://github.com/cloudposse/packages/actions/workflows/kfctl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akfctl)* | 1.2.0 | Machine Learning Toolkit for Kubernetes -[![kind](https://github.com/cloudposse/packages/actions/workflows/kind.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akind) | 0.31.0 | A tool for running local Kubernetes clusters using Docker -[![kops](https://github.com/cloudposse/packages/actions/workflows/kops.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akops) | 1.34.1 | Kubernetes Operations (kops) - Production Grade K8s Installation, Upgrades, and Management -krew \[frozen\] | 0.4.1 | Kubectl plugin manager -[![kubecron](https://github.com/cloudposse/packages/actions/workflows/kubecron.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubecron)* | 2.0.0 | Utilities to manage kubernetes cronjobs. Run a CronJob manually for test purposes. Suspend/unsuspend a CronJob -[![kubectl](https://github.com/cloudposse/packages/actions/workflows/kubectl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl) | 1.35.0 | Production-Grade Container Scheduling and Management -kubectl-1.13 \[frozen\] | 1.13.12 | Production-Grade Container Scheduling and Management (v1.13) -kubectl-1.14 \[frozen\] | 1.14.10 | Production-Grade Container Scheduling and Management (v1.14) -kubectl-1.15 \[frozen\] | 1.15.12 | Production-Grade Container Scheduling and Management (v1.15) -kubectl-1.16 \[frozen\] | 1.16.15 | Production-Grade Container Scheduling and Management (v1.16) -kubectl-1.17 \[frozen\] | 1.17.17 | Production-Grade Container Scheduling and Management (v1.17) -kubectl-1.18 \[frozen\] | 1.18.20 | Production-Grade Container Scheduling and Management (v1.18) -kubectl-1.19 \[frozen\] | 1.19.16 | Production-Grade Container Scheduling and Management (v1.19) -kubectl-1.20 \[frozen\] | 1.20.15 | Production-Grade Container Scheduling and Management (v1.20) -kubectl-1.21 \[frozen\] | 1.21.14 | Production-Grade Container Scheduling and Management (v1.21) -kubectl-1.22 \[frozen\] | 1.22.17 | Production-Grade Container Scheduling and Management (v1.22) -[![kubectl-1.23](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.23.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.23) | 1.23.17 | Production-Grade Container Scheduling and Management (v1.23) -[![kubectl-1.24](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.24.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.24) | 1.24.17 | Production-Grade Container Scheduling and Management (v1.24) -[![kubectl-1.25](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.25.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.25) | 1.25.16 | Production-Grade Container Scheduling and Management (v1.25) -[![kubectl-1.26](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.26.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.26) | 1.26.15 | Production-Grade Container Scheduling and Management (v1.26) -[![kubectl-1.27](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.27.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.27) | 1.27.16 | Production-Grade Container Scheduling and Management (v1.27) -[![kubectl-1.28](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.28.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.28) | 1.28.15 | Production-Grade Container Scheduling and Management (v1.28) -[![kubectl-1.29](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.29.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.29) | 1.29.15 | Production-Grade Container Scheduling and Management (v1.29) -[![kubectl-1.30](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.30.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.30) | 1.30.14 | Production-Grade Container Scheduling and Management (v1.30) -[![kubectl-1.31](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.31.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.31) | 1.31.14 | Production-Grade Container Scheduling and Management (v1.31) -[![kubectl-1.32](https://github.com/cloudposse/packages/actions/workflows/kubectl-1.32.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectl-1.32) | 1.32.11 | Production-Grade Container Scheduling and Management (v1.32) -[![kubectx](https://github.com/cloudposse/packages/actions/workflows/kubectx.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubectx) | 0.9.5 | Switch faster between clusters and namespaces in kubectl -[![kubens](https://github.com/cloudposse/packages/actions/workflows/kubens.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubens) | 0.9.5 | Switch faster between clusters and namespaces in kubectl -[![kubeval](https://github.com/cloudposse/packages/actions/workflows/kubeval.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Akubeval)* | 0.16.1 | Validate your Kubernetes configuration files, supports multiple Kubernetes versions -[![lazydocker](https://github.com/cloudposse/packages/actions/workflows/lazydocker.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Alazydocker) | 0.24.3 | The lazier way to manage everything docker -[![lectl](https://github.com/cloudposse/packages/actions/workflows/lectl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Alectl)* | 0.23.0 | Script to check issued certificates by Let's Encrypt on CTL (Certificate Transparency Log) using https://crt.sh -[![minikube](https://github.com/cloudposse/packages/actions/workflows/minikube.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aminikube) | 1.37.0 | Run Kubernetes locally -[![misspell](https://github.com/cloudposse/packages/actions/workflows/misspell.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Amisspell)* | 0.3.4 | Correct commonly misspelled English words in source files -[![opa](https://github.com/cloudposse/packages/actions/workflows/opa.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aopa) | 1.12.2 | An open source project to policy-enable your service. -[![pack](https://github.com/cloudposse/packages/actions/workflows/pack.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Apack) | 0.39.1 | Create cloud native Buildpacks -packer \[frozen\] | 1.9.5 | Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. -[![pandoc](https://github.com/cloudposse/packages/actions/workflows/pandoc.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Apandoc) | 3.8.3 | Universal markup converter -[![pgmetrics](https://github.com/cloudposse/packages/actions/workflows/pgmetrics.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Apgmetrics) | 1.18.0 | Postgres metrics -[![pluto](https://github.com/cloudposse/packages/actions/workflows/pluto.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Apluto) | 5.22.7 | A cli tool to help discover deprecated apiVersions in Kubernetes -[![popeye](https://github.com/cloudposse/packages/actions/workflows/popeye.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Apopeye) | 0.22.1 | A Kubernetes cluster resource sanitizer -[![promtool](https://github.com/cloudposse/packages/actions/workflows/promtool.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Apromtool) | 3.9.1 | Prometheus CLI tool -[![rainbow-text](https://github.com/cloudposse/packages/actions/workflows/rainbow-text.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Arainbow-text) | 1.2.1 | Tasty rainbows for your terminal! (lolcat clone) -[![rakkess](https://github.com/cloudposse/packages/actions/workflows/rakkess.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Arakkess)* | 0.5.0 | Review Access - kubectl plugin to show an access matrix for all available resources -[![rancher](https://github.com/cloudposse/packages/actions/workflows/rancher.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Arancher) | 2.13.1 | Rancher CLI -[![rbac-lookup](https://github.com/cloudposse/packages/actions/workflows/rbac-lookup.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Arbac-lookup) | 0.10.3 | Find Kubernetes roles and cluster roles bound to any user, service account, or group name. -[![saml2aws](https://github.com/cloudposse/packages/actions/workflows/saml2aws.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Asaml2aws) | 2.36.19 | CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP -[![sentry-cli](https://github.com/cloudposse/packages/actions/workflows/sentry-cli.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Asentry-cli) | 3.0.3 | A command line utility to work with Sentry. -[![shellcheck](https://github.com/cloudposse/packages/actions/workflows/shellcheck.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ashellcheck) | 0.11.0 | ShellCheck, a static analysis tool for shell scripts -[![shfmt](https://github.com/cloudposse/packages/actions/workflows/shfmt.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ashfmt) | 3.12.0 | A shell parser, formatter and interpreter (POSIX/Bash/mksh) -[![slack-notifier](https://github.com/cloudposse/packages/actions/workflows/slack-notifier.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aslack-notifier) | 0.10.0 | Command line utility to send messages with attachments to Slack channels via Incoming Webhooks -[![sops](https://github.com/cloudposse/packages/actions/workflows/sops.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Asops) | 3.11.0 | Secrets management stinks, use some sops! -[![spacectl](https://github.com/cloudposse/packages/actions/workflows/spacectl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aspacectl) | 1.17.3 | [Spacelift.io](https://spacelift.io/) client and CLI -[![spotctl](https://github.com/cloudposse/packages/actions/workflows/spotctl.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aspotctl) | 0.35.0 | A unified CLI to manage your [Spot](https://spot.io/) resources. -[![sshm](https://github.com/cloudposse/packages/actions/workflows/sshm.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Asshm)* | 1.2.2 | Easy connect on EC2 instances thanks to AWS System Manager Agent -[![stern](https://github.com/cloudposse/packages/actions/workflows/stern.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Astern) | 1.33.1 | ⎈ Multi pod and container log tailing for Kubernetes -[![sudosh](https://github.com/cloudposse/packages/actions/workflows/sudosh.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Asudosh) | 0.3.0 | Shell wrapper to run a login shell with `sudo` as the current user for the purpose of audit logging -[![teleport](https://github.com/cloudposse/packages/actions/workflows/teleport.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ateleport) | 18.6.1 | Secure Access for Developers that doesn't get in the way. -teleport-4.3* \[frozen\] | 4.3.10 | Privileged access management for elastic infrastructure. -teleport-4.4* \[frozen\] | 4.4.12 | Privileged access management for elastic infrastructure. -teleport-5.0* \[frozen\] | 5.0.2 | Secure Access for Developers that doesn't get in the way. -terraform \[frozen\] | 1.5.7 | Terraform is a tool for building, changing, and combining infrastructure safely and efficiently. -terraform-0.11 \[frozen\] | 0.11.15 | Terraform is a tool for building, changing, and combining infrastructure safely and efficiently. -terraform-0.12 \[frozen\] | 0.12.31 | Terraform is a tool for building, changing, and combining infrastructure safely and efficiently. -terraform-0.13 \[frozen\] | 0.13.7 | Terraform is a tool for building, changing, and combining infrastructure safely and efficiently. -[![terraform-0.14](https://github.com/cloudposse/packages/actions/workflows/terraform-0.14.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterraform-0.14) | 0.14.11 | Terraform is a tool for building, changing, and combining infrastructure safely and efficiently. -[![terraform-0.15](https://github.com/cloudposse/packages/actions/workflows/terraform-0.15.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterraform-0.15) | 0.15.5 | Terraform is a tool for building, changing, and combining infrastructure safely and efficiently. -terraform-1 \[frozen\] | 1.5.7 | Terraform enables you to safely and predictably create, change, and improve infrastructure. -[![terraform-config-inspect](https://github.com/cloudposse/packages/actions/workflows/terraform-config-inspect.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterraform-config-inspect) |
show0.0.20250203082807+gitefaa306e97b4
| A helper library for shallow inspection of Terraform configurations -[![terraform-docs](https://github.com/cloudposse/packages/actions/workflows/terraform-docs.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterraform-docs) | 0.21.0 | Generate docs from terraform modules -[![terraform-module-versions](https://github.com/cloudposse/packages/actions/workflows/terraform-module-versions.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterraform-module-versions) | 3.3.13 | CLI tool that checks Terraform code for module updates. Single binary, no dependencies. -terraform_0.11 \[frozen\] | 0.11.15 | Terraform (Deprecated package. Use terraform-0.11 instead) -terraform_0.12 \[frozen\] | 0.12.31 | Terraform (Deprecated package. Use terraform-0.12 instead) -terraform_0.13 \[frozen\] | 0.13.7 | Terraform (Deprecated package. Use terraform-0.13 instead) -[![terragrunt](https://github.com/cloudposse/packages/actions/workflows/terragrunt.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterragrunt) | 0.97.2 | Terragrunt is a thin wrapper for Terraform that provides extra tools for working with multiple Terraform modules. -[![terrahelp](https://github.com/cloudposse/packages/actions/workflows/terrahelp.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Aterrahelp) | 0.7.5 | Terrahelp is as a command line utility that provides useful tricks like masking of terraform output. -[![tflint](https://github.com/cloudposse/packages/actions/workflows/tflint.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Atflint) | 0.60.0 | A Pluggable Terraform Linter -[![tfschema](https://github.com/cloudposse/packages/actions/workflows/tfschema.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Atfschema) | 0.7.9 | A schema inspector for Terraform providers -[![tfsec](https://github.com/cloudposse/packages/actions/workflows/tfsec.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Atfsec) | 1.28.14 | (DEPRECATED: use Trivy instead) Security scanner for your Terraform code -[![thanos](https://github.com/cloudposse/packages/actions/workflows/thanos.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Athanos) | 0.40.1 | Highly available Prometheus setup with long term storage capabilities. CNCF Sandbox project. -[![trivy](https://github.com/cloudposse/packages/actions/workflows/trivy.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Atrivy) | 0.68.2 | A Simple and Comprehensive Vulnerability Scanner for Containers, Suitable for CI -[![variant](https://github.com/cloudposse/packages/actions/workflows/variant.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Avariant) | 0.38.0 | Variant is a Universal CLI tool that works like a task runner -[![variant2](https://github.com/cloudposse/packages/actions/workflows/variant2.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Avariant2) | 0.38.0 | Second major version of Variant, a Universal CLI tool that works like a task runner -vault \[frozen\] | 1.14.8 | Hashicorp vault -[![velero](https://github.com/cloudposse/packages/actions/workflows/velero.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Avelero) | 1.17.1 | Backup and migrate Kubernetes applications and their persistent volumes -[![vendir](https://github.com/cloudposse/packages/actions/workflows/vendir.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Avendir) | 0.45.0 | Easy way to vendor portions of git repos, github releases, helm charts, docker image contents, etc. declaratively. -[![venona](https://github.com/cloudposse/packages/actions/workflows/venona.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Avenona)* | 1.10.5 | Codefresh runtime-environment agent -[![vert](https://github.com/cloudposse/packages/actions/workflows/vert.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Avert) | 0.1.0 | Simple CLI for comparing two or more versions -[![yajsv](https://github.com/cloudposse/packages/actions/workflows/yajsv.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ayajsv)* | 1.4.1 | Yet Another JSON Schema Validator [CLI] -[![yq](https://github.com/cloudposse/packages/actions/workflows/yq.yml/badge.svg?branch=main)](https://github.com/cloudposse/packages/actions?query=workflow%3Ayq) | 4.50.1 | yq is a portable command-line YAML processor - - -## Related Projects - -Check out these related projects. - -- [build-harness](https://github.com/cloudposse/build-harness) - Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more -- [geodesic](https://github.com/cloudposse/geodesic) - Geodesic is the fastest way to get up and running with a rock solid, production grade cloud platform built on strictly Open Source tools. - - - -## ✨ Contributing - -This project is under active development, and we encourage contributions from our community. - - - -Many thanks to our outstanding contributors: - - - - - -For 🐛 bug reports & feature requests, please use the [issue tracker](https://github.com/cloudposse/packages/issues). - -In general, PRs are welcome. We follow the typical "fork-and-pull" Git workflow. - 1. Review our [Code of Conduct](https://github.com/cloudposse/packages/?tab=coc-ov-file#code-of-conduct) and [Contributor Guidelines](https://github.com/cloudposse/.github/blob/main/CONTRIBUTING.md). - 2. **Fork** the repo on GitHub - 3. **Clone** the project to your own machine - 4. **Commit** changes to your own branch - 5. **Push** your work back up to your fork - 6. Submit a **Pull Request** so that we can review your changes - -**NOTE:** Be sure to merge the latest changes from "upstream" before making a pull request! - -### 🌎 Slack Community - -Join our [Open Source Community](https://cpco.io/slack?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=slack) on Slack. It's **FREE** for everyone! Our "SweetOps" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build totally *sweet* infrastructure. - -### 📰 Newsletter - -Sign up for [our newsletter](https://cpco.io/newsletter?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=newsletter) and join 3,000+ DevOps engineers, CTOs, and founders who get insider access to the latest DevOps trends, so you can always stay in the know. -Dropped straight into your Inbox every week — and usually a 5-minute read. - -### 📆 Office Hours - -[Join us every Wednesday via Zoom](https://cloudposse.com/office-hours?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=office_hours) for your weekly dose of insider DevOps trends, AWS news and Terraform insights, all sourced from our SweetOps community, plus a _live Q&A_ that you can’t find anywhere else. -It's **FREE** for everyone! ## License License diff --git a/README.yaml b/README.yaml index 1bcf95020..c0cd0642b 100644 --- a/README.yaml +++ b/README.yaml @@ -1,326 +1,31 @@ +--- name: Packages - -description: |- - Cloud Posse distribution of awesome apps. - -introduction: |- - - Use this repo to easily install releases of popular Open Source apps. We provide a few ways to use it. - - 1. **Make Based Installer.** This installer works regardless of your OS and distribution. It downloads packages directly from their GitHub source repos and installs them to your `INSTALL_PATH`. - 2. **Alpine Linux Packages.** Use our Alpine repository to install prebuilt packages that use the original source binary (where possible) from the maintainers' official GitHub repo releases. - 3. **Docker Image.** Use our docker image as a base-image or as part of a multi-stage docker build. The docker image always distributes the latest linux binaries for `x86_64` architectures. - - See examples below for usage. - - **Is one of our packages out of date?** - - Open up an [issue](https://github.com/cloudposse/packages/issues) or submit a PR (*preferred*). We'll review quickly! - - ## Sponsorship [](https://cloudsmith.io/) - - Package repository hosting is graciously provided by [cloudsmith](https://cloudsmith.io/). Cloudsmith is the only fully hosted, cloud-native, universal package management solution, that enables your organization to create, store and share packages in any format, to any place, with total confidence. We believe there’s a better way to manage software assets and packages, and they’re making it happen! - -# License of this project license: "APACHE2" - -# Canonical GitHub repo github_repo: cloudposse/packages -# Badges to display -badges: - - name: "Auto Update Status" - image: "https://github.com/cloudposse/packages/actions/workflows/auto-update-packages.yml/badge.svg" - url: "https://github.com/cloudposse/packages/actions/workflows/auto-update-packages.yml" - - name: "Slack Community" - image: "https://slack.cloudposse.com/badge.svg" - url: "https://slack.cloudposse.com" - -related: - - name: "build-harness" - description: "Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more" - url: "https://github.com/cloudposse/build-harness" - - name: "geodesic" - description: - "Geodesic is the fastest way to get up and running with a rock solid, production grade cloud platform built on - strictly Open Source tools." - url: "https://github.com/cloudposse/geodesic" - -# Other files to include in this README from the project folder -include: - - "docs/badges.md" - -usage: |- - - ## Debian Repository (recommended) - - A public Debian repository is provided by [Cloud Posse](https://cloudposse.com). - The repository is hosted by [Cloudsmith](https://cloudsmith.com/) - Using this Debian repository is ultimately more reliable than depending on [GitHub for availability](https://twitter.com/githubstatus) - and provides an easier way to manage dependencies pinned at multiple versions. - - ### Configure the Debian repository: - - #### The Easy Way - - Cloudsmith provides an installation script to configure the Debian repository for your version of Debian. - - ``` - curl -1sLf 'https://dl.cloudsmith.io/public/cloudposse/packages/cfg/setup/bash.deb.sh' | bash - ``` - __NOTE__: Requires `bash` and `curl` to run: - - #### For Docker - - Add the following to your `Dockerfile` near the top. - ``` - # Install the cloudposse Debian repository - RUN apt-get update && apt-get install -y apt-utils curl - RUN curl -1sLf 'https://dl.cloudsmith.io/public/cloudposse/packages/cfg/setup/bash.deb.sh' | bash - ``` - - ### Installing Debian Packages - - When adding packages, we recommend using `apt-get update && apt-get install -yq $package` to update the repository index before installing packages. - - Simply install any package as normal: - ``` - apk-get install -y terraform - ``` - - But we recommend that you use version pinning (the `-\*` is important, as it gets you the latest version of the package): - ``` - apt-get install gomplate=3.0.0-\* - ``` - - ## RPM Repository - - We publish RPM packages corresponding to all the Debian packages we publish. Installing the repository is almost the same as above. - - ``` - curl -1sLf 'https://dl.cloudsmith.io/public/cloudposse/packages/cfg/setup/bash.rpm.sh' | bash - ``` - - Install packages as normal. `yum` automatically updates the repository index before installing packages. - ``` - yum install -y terraform - ``` - - Note that unlike other package systems, `yum` automatically updates the repository index before installing packages. - - We still recommend version pinning, but `yum` makes it hard. You can use this command to list all the available versions of a package: - ``` - yum --showduplicate list $package - ``` - Then you can install the package with a version pinning: - ``` - VERSION=1.3.0 - RELEASE=1 - yum install -y $package-$VERSION-$RELEASE.$(uname -m) - ``` - - ## Alpine Repository - - A public Alpine repository is provided by [Cloud Posse](https://cloudposse.com). - The repository is hosted by [Cloudsmith](https://cloudsmith.com/) - Using this Alpine repository is ultimately more reliable than depending on [GitHub for availability](https://twitter.com/githubstatus) - and provides an easier way to manage dependencies pinned at multiple versions. - - ### Configure the Alpine repository: - - #### The Easy Way - - Cloudsmith provides an installation script to configure the Alpine repository for your version of Alpine. - - ``` - apk add --no-cache bash curl - curl -1sLf \ - 'https://dl.cloudsmith.io/public/cloudposse/packages/setup.alpine.sh' \ - | bash - ``` - - ### Installing Alpine Packages - - When adding packages, we recommend using `apk add --update $package` to update the repository index before installing packages. - - Simply install any package as normal: - ``` - apk add --update terraform - ``` +deprecated: + notice: |- + This repository is scheduled for archival. We recommend switching to the [Atmos Toolchain](https://atmos.tools/cli/commands/toolchain/usage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=deprecation-notice) for CLI tool management. - But we recommend that you use version pinning: - ``` - apk add --update terraform==1.0.0-r0 - ``` + Atmos provides native version-controlled tool management with support for 1,000+ tools from the Aqua registry. - And maybe even repository pinning, so you know that you get our versions: - ``` - apk add --update terraform@cloudposse==1.0.0-r0 - ``` + **What this means:** + - We stop publishing new packages upon archival + - Existing packages remain available on [Cloudsmith](https://cloudsmith.io/~cloudposse/repos/packages/packages/) + - The exact archival date has not been determined - ## Makefile Interface + **Learn more:** + - [Atmos Toolchain Usage](https://atmos.tools/cli/commands/toolchain/usage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=deprecation-notice) + - [Toolchain Management Changelog](https://atmos.tools/changelog/toolchain-management?utm_source=github&utm_medium=readme&utm_campaign=cloudposse/packages&utm_content=deprecation-notice) - The `Makefile` interface works on OSX and Linux. It's a great way to distribute binaries in an OS-agnostic way which does not depend on a package manager (e.g. no `brew` or `apt-get`). - - This method is ideal for [local development environments](https://docs.cloudposse.com/local-dev-environments/) (which is how we use it) where you need the dependencies installed natively for your OS/architecture, such as installing a package on OSX. - - See all available packages: - ``` - make -C install help - ``` - - Install everything... - ``` - make -C install all - ``` - - Install specific packages: - ``` - make -C install aws-vault chamber - ``` - - Install to a specific folder: - ``` - make -C install aws-vault INSTALL_PATH=/usr/bin - ``` - - Uninstall a specific package - ``` - make -C uninstall yq - ``` - - ### Rebuilding GitHub Action Workflows - - The GitHub Action workflows are compiled from the `.github/package-template.yml` file by running `make -C .github workflows`. It's also run automatically when rebuilding the `README.md` with `make readme`. - - Run this make target anytime the `package-template.yml` changes or any new packages are added to the `vendor/` folder. - - __IMPORTANT__: The `package-template.yml` supports a single macro for interpolation `%PACKAGE_NAME%` which is replaced using a `sed` expression. - Since the workflow uses a combation of gotemplate-like interpolations as well as inlines shell scripts, we used the `%VAR%` form of interpolation to avoid - the need for endless escaping of interpolation specifiers. - - ### Testing Locally - - #### Alpine - - ```sh - $ make docker/build/apk/shell - $ make -C vendor/ apk - ``` - - #### Debian - - ```sh - $ make docker/build/deb/shell - $ make -C vendor/ deb - ``` - - #### RPM - - ```sh - $ make docker/build/rpm/shell - $ make -C vendor/ rpm - ``` - - ### Mac - - ```sh - $ make -C vendor/ install - ``` - -examples: |- - ### Docker Multi-stage Build - - Add this to a `Dockerfile` to install packages using a multi-stage build process: - ``` - FROM cloudposse/packages:latest AS packages - - COPY --from=packages /packages/bin/kubectl /usr/local/bin/ - ``` - - ### Docker with Git Clone - - Or... add this to a `Dockerfile` to easily install packages on-demand: - ``` - RUN git clone --depth=1 -b main https://github.com/cloudposse/packages.git /packages && \ - rm -rf /packages/.git && \ - make -C /packages/install kubectl - ``` - - ### Makefile Inclusion - - Sometimes it's necessary to install some binary dependencies when building projects. For example, we frequently - rely on `gomplate` or `helm` to build chart packages. - - Here's a stub you can include into a `Makefile` to make it easier to install binary dependencies. - - ``` - export PACKAGES_VERSION ?= main - export PACKAGES_PATH ?= packages/ - export INSTALL_PATH ?= $(PACKAGES_PATH)/bin - - ## Install packages - packages/install: - @if [ ! -d $(PACKAGES_PATH) ]; then \ - echo "Installing packages $(PACKAGES_VERSION)..."; \ - rm -rf $(PACKAGES_PATH); \ - git clone --depth=1 -b $(PACKAGES_VERSION) https://github.com/cloudposse/packages.git $(PACKAGES_PATH); \ - rm -rf $(PACKAGES_PATH)/.git; \ - fi - - ## Install package (e.g. helm, helmfile, kubectl) - packages/install/%: packages/install - @make -C $(PACKAGES_PATH)/install $(subst packages/install/,,$@) - - ## Uninstall package (e.g. helm, helmfile, kubectl) - packages/uninstall/%: - @make -C $(PACKAGES_PATH)/uninstall $(subst packages/uninstall/,,$@) - ``` - - ### Contributing Additional Packages - In addition to following the Contributing section, the following steps can be used to add new packages for review (via a PR). - If possible (and it usually is), you want to find an existing package with similarly packaged release (`.tar`, `.gz`, uncompressed binary, etc.), - and copy and edit its Makefile. - 1. Copy the Makefile from an existing, similar, package within the vendors directory. Name the new folder with the same name as the binary package being installed. - 2. Edit the Makefile, ensuring the `DOWNLOAD_URL` is properly formatted - 3. Run `make init` from within the directory to create the `DESCRIPTION`, `LICENSE`, `RELEASE`, and `VERSION` files. - 4. Ensure that a test task exists in the package Makefile. It should check the version number of the installed binary if possible. - 5. Test the install and ensure that it downloads and runs as expected (`make -C install INSTALL_PATH=/tmp`) - 6. Test the apk build (see below) - 7. Update the `README.md` (`make init readme/deps readme`) - - ### Testing apk builds - - To validate that a new package will build into an apk you can use the following steps; - - ```bash - make docker/build/apk/shell - make -C vendor/ apk - # Some temp build files in the volume mount set user/group to nobody/nobody for apk building. - # It is easier to remove them while within the docker container. - rm -rf ./tmp/build.* - exit - ``` +description: |- + Cloud Posse distribution of awesome apps. - ### Troubleshooting Package Addition - Here are some solutions to several common problems that may occur when adding a new package: - - 1.
When adding a new app, the `make -C vendor/ apk` command fails, claiming it can't find the app's binary file, even though it is in the expected place. - - Part of the `make -C vendor/ apk` command is building a package for the binary file inside an Alpine Linux container. Since Alpine Linux uses `musl` as its C library, this often leads to situations where binaries built against `libc` might not function on Alpine. What's more, binaries from projects written in `Go` will not be found by the Alpine package builder at all if they are missing any necessary libraries, like `libc`. The solution to this problem is to add an `export APKBUILD_DEPENDS += libc6-compat` line to the top of your new package's associated `Makefile`. -
- 2.
When adding a new binary, the `make builder TARGETS=readme` command fails with `Unable to find image 'cloudposse/build-harness:sha-[some_SHA_stub]' locally`. - - This can occur when you have the `cloudposse/build-harness` repository checked out somewhere on your machine. `make builder TARGETS=readme` will end up looking for a docker image tagged with the SHA that the `HEAD` ref of your `buld-harness` points to. To correct this behavior, just run `make init` in the `cloudposse/packages` directory prior to running `make builder TARGETS=readme`. -
+related: + - name: "Atmos" + description: "DevOps Automation Tool" + url: "https://github.com/cloudposse/atmos" -# Contributors to this project contributors: - name: "Erik Osterman" github: "osterman" - - name: "Nuru" - github: "Nuru" - - name: "Igor Rodionov" - github: "goruha" - - name: "Andriy Knysh" - github: "aknysh" diff --git a/atmos.yaml b/atmos.yaml new file mode 100644 index 000000000..7c4d1d2d7 --- /dev/null +++ b/atmos.yaml @@ -0,0 +1,10 @@ +docs: + generate: + readme: + base-dir: . + input: + - "./README.yaml" + template: "https://raw.githubusercontent.com/cloudposse/.github/main/README.md.gotmpl" + output: "./README.md" + terraform: + enabled: false