From 8b0490cab582d66a3f79b003cd11d16f53a372b5 Mon Sep 17 00:00:00 2001 From: Ethan Paul Date: Mon, 18 Aug 2025 13:35:27 -0600 Subject: [PATCH] Merge skylab and fpf dev environments into single unified env --- Containerfile | 54 ++++++++++++++++++++++++++++++++++------- google-cloud-sdk.repo | 7 ++++++ install-bins.bash | 56 +++++++++++++++++++++++++++++++++++++++++++ install-codium.bash | 11 --------- install-rpms.bash | 30 +++++++++++++++++++++++ kubernetes.repo | 6 +++++ opentofu.repo | 23 ++++++++++++++++++ 7 files changed, 168 insertions(+), 19 deletions(-) create mode 100644 google-cloud-sdk.repo create mode 100755 install-bins.bash delete mode 100755 install-codium.bash create mode 100755 install-rpms.bash create mode 100644 kubernetes.repo create mode 100644 opentofu.repo diff --git a/Containerfile b/Containerfile index de5d1e5..e56a053 100644 --- a/Containerfile +++ b/Containerfile @@ -11,15 +11,53 @@ ENV TOOLBOX_ENV=${ENV_NAME} LABEL local.${ENV_NAME}.nonce=${BUILD_NONCE} ADD load-user-bashrc.sh /etc/profile.d/99-load-user-bashrc.sh +ADD google-cloud-sdk.repo /etc/yum.repos.d/google-cloud-sdk.repo +ADD kubernetes.repo /etc/yum.repos.d/kubernetes.repo +ADD https://rpm.releases.hashicorp.com/fedora/hashicorp.repo /etc/yum.repos.d/hashicorp.repo +ADD https://cli.github.com/packages/rpm/gh-cli.repo /etc/yum.repos.d/github-cli.repo +ADD https://download.docker.com/linux/fedora/docker-ce.repo /etc/yum.repos.d/docker-ce.repo RUN dnf install --assumeyes \ - powerline \ + bind-utils \ + direnv \ + docker-ce-cli \ + docker-buildx-plugin \ + docker-compose-plugin \ + gcc \ + gcc-c++ \ + gh \ + golang \ + google-cloud-cli \ + google-cloud-sdk-gke-gcloud-auth-plugin \ + jq \ + kubectl \ + libacl-devel \ + libpq-devel \ + libzstd-devel \ + lz4-devel \ make \ - jq + oathtool \ + openssl-devel \ + packer \ + pinentry \ + podman-remote \ + powerline \ + python3-devel \ + python3.10 \ + python3.10-devel \ + python3.11 \ + python3.11-devel \ + python3.12 \ + python3.12-devel \ + python3.13 \ + python3.9 \ + ShellCheck \ + xxhash-devel -ADD install-codium.bash /tmp/install-codium.bash -RUN /tmp/install-codium.bash -RUN dnf install --assumeyes \ - /tmp/rpms/*.rpm -RUN rm -rf /tmp/install-codium.bash -RUN rm -rf /tmp/rpms +ADD install-rpms.bash /tmp/install-rpms.bash +RUN bash /tmp/install-rpms.bash && rm -rf /tmp/install-rpms.bash + +ADD install-bins.bash /tmp/install-bins.bash +RUN bash /tmp/install-bins.bash && rm -rf /tmp/install-bins.bash + +RUN ln -s /usr/bin/podman-remote /usr/bin/podman diff --git a/google-cloud-sdk.repo b/google-cloud-sdk.repo new file mode 100644 index 0000000..99043e6 --- /dev/null +++ b/google-cloud-sdk.repo @@ -0,0 +1,7 @@ +[google-cloud-cli] +name=Google Cloud CLI +baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el9-x86_64 +enabled=1 +gpgcheck=1 +repo_gpgcheck=0 +gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg diff --git a/install-bins.bash b/install-bins.bash new file mode 100755 index 0000000..b4333f3 --- /dev/null +++ b/install-bins.bash @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -e + +latest_doctl=$(curl -sSL https://api.github.com/repos/digitalocean/doctl/releases/latest | jq -r '.tag_name') +latest_tflint=$(curl -sSL https://api.github.com/repos/terraform-linters/tflint/releases/latest | jq -r '.tag_name') +latest_butane=$(curl -sSL https://api.github.com/repos/coreos/butane/releases/latest | jq -r '.tag_name') +latest_act=$(curl -sSL https://api.github.com/repos/nektos/act/releases/latest | jq -r '.tag_name') +latest_hadolint=$(curl -sSL https://api.github.com/repos/hadolint/hadolint/releases/latest | jq -r '.tag_name') + +mkdir -p /tmp/bins + +working=$(mktemp -d) +doctl_url="https://github.com/digitalocean/doctl/releases/download/${latest_doctl}/doctl-${latest_doctl:1}-linux-amd64.tar.gz" +echo "Downloading doctl-${latest_doctl}: ${doctl_url}" +curl --fail-with-body -sSLo "${working}/doctl.tar.gz" "${doctl_url}" +cd "${working}" +tar -xf doctl.tar.gz +mv "${working}/doctl" /tmp/bins/doctl +chmod +x /tmp/bins/doctl +cd ~ +rm -rf "${working}" + +working=$(mktemp -d) +tflint_url="https://github.com/terraform-linters/tflint/releases/download/${latest_tflint}/tflint_linux_amd64.zip" +echo "Downloading tflint-${latest_tflint}: ${tflint_url}" +curl --fail-with-body -sSLo "${working}/tflint.zip" "${tflint_url}" +cd "${working}" +unzip tflint.zip +mv tflint /tmp/bins/tflint +chmod +x /tmp/bins/tflint +cd ~ +rm -rf "${working}" + +butane_url="https://github.com/coreos/butane/releases/download/${latest_butane}/butane-x86_64-unknown-linux-gnu" +echo "Downloading butane-${latest_butane}: ${butane_url}" +curl --fail-with-body -sSLo "/tmp/bins/butane" "${butane_url}" +chmod +x /tmp/bins/butane + +working=$(mktemp -d) +act_url="https://github.com/nektos/act/releases/download/${latest_act}/act_Linux_x86_64.tar.gz" +echo "Downloading act-${latest_act}: ${act_url}" +curl --fail-with-body -sSLo "${working}/act.tar.gz" "${act_url}" +cd "${working}" +tar -xf act.tar.gz +mv "${working}/act" /tmp/bins/act +chmod +x /tmp/bins/act +cd ~ +rm -rf "${working}" + +hadolint_url="https://github.com/hadolint/hadolint/releases/download/${latest_hadolint}/hadolint-Linux-x86_64" +echo "Downloading hadolint-${latest_hadolint}: ${hadolint_url}" +curl --fail-with-body -sSLo "/tmp/bins/hadolint" "${hadolint_url}" +chmod +x /tmp/bins/hadolint + +mv /tmp/bins/* /usr/local/bin/ diff --git a/install-codium.bash b/install-codium.bash deleted file mode 100755 index d17076f..0000000 --- a/install-codium.bash +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -set -e - -latest_codium=$(curl -sSL https://api.github.com/repos/VSCodium/vscodium/releases/latest | jq -r '.tag_name') - -mkdir -p /tmp/rpms - -echo "Downloading vscodium-${latest_codium}..." -curl -sSLo /tmp/rpms/codium.rpm "https://github.com/VSCodium/vscodium/releases/download/${latest_codium}/codium-${latest_codium}-el9.x86_64.rpm" - diff --git a/install-rpms.bash b/install-rpms.bash new file mode 100755 index 0000000..3728298 --- /dev/null +++ b/install-rpms.bash @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -e + +latest_tenv=$(curl -sSL https://api.github.com/repos/tofuutils/tenv/releases/latest | jq -r '.tag_name') +latest_sops=$(curl -sSL https://api.github.com/repos/getsops/sops/releases/latest | jq -r '.tag_name') +latest_cosign=$(curl -sSL https://api.github.com/repos/sigstore/cosign/releases/latest | jq -r '.tag_name') +latest_codium=$(curl -sSL https://api.github.com/repos/VSCodium/vscodium/releases/latest | jq -r '.tag_name') + +mkdir -p /tmp/rpms + +tenv_url="https://github.com/tofuutils/tenv/releases/download/${latest_tenv}/tenv_${latest_tenv}_amd64.rpm" +echo "Downloading tenv-${latest_tenv}: ${tenv_url}" +curl --fail-with-body -sSLo /tmp/rpms/tenv.rpm "${tenv_url}" + +sops_url="https://github.com/getsops/sops/releases/download/${latest_sops}/sops-${latest_sops:1}-1.x86_64.rpm" +echo "Downloading sops-${latest_sops}: ${sops_url}" +curl --fail-with-body -sSLo /tmp/rpms/sops.rpm "${sops_url}" + +cosign_url="https://github.com/sigstore/cosign/releases/download/${latest_cosign}/cosign-${latest_cosign:1}-1.x86_64.rpm" +echo "Downloading cosign-${latest_cosign}: ${cosign_url}" +curl --fail-with-body -sSLo /tmp/rpms/cosign.rpm "${cosign_url}" + +codium_url="https://github.com/VSCodium/vscodium/releases/download/${latest_codium}/codium-${latest_codium}-el8.x86_64.rpm" +echo "Downloading vscodium-${latest_codium}: ${codium_url}" +curl -sSLo /tmp/rpms/codium.rpm "${codium_url}" + +dnf install --assumeyes /tmp/rpms/*.rpm + +rm -rf /tmp/rpms diff --git a/kubernetes.repo b/kubernetes.repo new file mode 100644 index 0000000..20d610f --- /dev/null +++ b/kubernetes.repo @@ -0,0 +1,6 @@ +[kubernetes] +name=Kubernetes +baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/ +enabled=1 +gpgcheck=1 +gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key diff --git a/opentofu.repo b/opentofu.repo new file mode 100644 index 0000000..c973753 --- /dev/null +++ b/opentofu.repo @@ -0,0 +1,23 @@ +[opentofu] +name=opentofu +baseurl=https://packages.opentofu.org/opentofu/tofu/rpm_any/rpm_any/\$basearch +repo_gpgcheck=0 +gpgcheck=1 +enabled=1 +gpgkey=https://get.opentofu.org/opentofu.gpg + https://packages.opentofu.org/opentofu/tofu/gpgkey +sslverify=1 +sslcacert=/etc/pki/tls/certs/ca-bundle.crt +metadata_expire=300 + +[opentofu-source] +name=opentofu-source +baseurl=https://packages.opentofu.org/opentofu/tofu/rpm_any/rpm_any/SRPMS +repo_gpgcheck=0 +gpgcheck=1 +enabled=1 +gpgkey=https://get.opentofu.org/opentofu.gpg + https://packages.opentofu.org/opentofu/tofu/gpgkey +sslverify=1 +sslcacert=/etc/pki/tls/certs/ca-bundle.crt +metadata_expire=300