From d0720ecf2f847a30f4fa73728394d3870aa7a2e0 Mon Sep 17 00:00:00 2001 From: Kevin Sandermann Date: Tue, 11 Oct 2022 23:52:52 +0200 Subject: [PATCH] 2022-10-11 (#66) * release 2022-10-01 * backup * build.sh * safe * backup * backup * safe * readme * safe * fixes * readme * readme * readme * readme * readme * readme * readme * readme * readme * readme * readme * readme * readme * readme * readme * backup * fixed script * script * finalization * removed todos * moved run script to latest tag * readme --- .bashrc | 24 ++- Dockerfile | 419 ++++++++++++++++++++++++---------------- README.md | 78 +++++--- args_base.args | 26 +++ args_optional.args | 12 ++ build.sh | 168 +++++++++++++--- docs/version_history.md | 17 ++ run.sh | 17 ++ 8 files changed, 529 insertions(+), 232 deletions(-) create mode 100644 args_base.args create mode 100644 args_optional.args diff --git a/.bashrc b/.bashrc index 769e992..c44bec3 100755 --- a/.bashrc +++ b/.bashrc @@ -6,14 +6,22 @@ if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi -source <(kubectl completion bash) -echo "kubectl bash completion installed!" -source <(helm completion bash) -echo "helm bash completion installed!" -source <(oc completion bash) -echo "oc bash completion installed!" -terraform -install-autocomplete -echo "terraform bash completion installed!" +if [ -f /usr/local/bin/kubectl ] ; then + source <(kubectl completion bash) + echo "kubectl bash completion installed!" +fi +if [ -f /usr/local/bin/helm ] ; then + source <(helm completion bash) + echo "helm bash completion installed!" +fi +if [ -f /usr/local/bin/oc ] ; then + source <(oc completion bash) + echo "oc bash completion installed!" +fi +if [ -f /usr/local/bin/terraform ] ; then + terraform -install-autocomplete + echo "terraform bash completion installed!" +fi ######################################################## SOURCE ######################################################## sleep 1 diff --git a/Dockerfile b/Dockerfile index a5ff9ed..c6297f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,155 +1,179 @@ ######################################################### TOOLCHAIN VERSIONING ######################################### #settings values here to be able to use dockerhub autobuild -ARG UBUNTU_VERSION=20.04 - -#https://docs.docker.com/engine/release-notes/ -ARG DOCKER_VERSION="20.10.18" -#https://github.com/kubernetes/kubernetes/releases -ARG KUBECTL_VERSION="1.25.1" -#https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/ -ARG OC_CLI_VERSION="4.11.4" -#https://github.com/helm/helm/releases -ARG HELM_VERSION="3.9.4" -#https://github.com/hashicorp/terraform/releases -ARG TERRAFORM_VERSION="1.2.9" -#https://pypi.org/project/awscli/ -ARG AWS_CLI_VERSION="1.25.77" -#https://pypi.org/project/azure-cli/ -ARG AZ_CLI_VERSION="2.40.0" -#apt-get update && apt-cache madison google-cloud-sdk | head -n 1 -ARG GCLOUD_VERSION="402.0.0-0" -#https://pypi.org/project/ansible/ -ARG ANSIBLE_VERSION="6.4.0" -#https://pypi.org/project/Jinja2/ -ARG JINJA_VERSION="3.1.2" -#https://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/ -ARG OPENSSH_VERSION="9.0p1" -#https://github.com/kubernetes-sigs/cri-tools/releases -ARG CRICTL_VERSION="1.25.0" -#https://github.com/hashicorp/vault/releases -ARG VAULT_VERSION="1.11.3" -#https://github.com/vmware-tanzu/velero/releases -ARG VELERO_VERSION="1.9.1" -#https://docs.hashicorp.com/sentinel/changelog -ARG SENTINEL_VERSION="0.18.12" -#https://github.com/stern/stern/releases -ARG STERN_VERSION="1.21.0" -#https://github.com/Azure/kubelogin/releases -ARG KUBELOGIN_VERSION="0.0.20" -#apt-get update && apt-cache madison zsh | head -n 1 -ARG ZSH_VERSION="5.8-3ubuntu1.1" -ARG MULTISTAGE_BUILDER_VERSION="2022-08-25" - -######################################################### BUILDER ###################################################### -FROM ksandermann/multistage-builder:$MULTISTAGE_BUILDER_VERSION as builder +ARG UBUNTU_VERSION +ARG DOCKER_VERSION +ARG KUBECTL_VERSION +ARG OC_CLI_VERSION +ARG HELM_VERSION +ARG TERRAFORM_VERSION +ARG AWS_CLI_VERSION +ARG AZ_CLI_VERSION +ARG GCLOUD_VERSION +ARG ANSIBLE_VERSION +ARG JINJA_VERSION +ARG OPENSSH_VERSION +ARG CRICTL_VERSION +ARG VAULT_VERSION +ARG VELERO_VERSION +ARG SENTINEL_VERSION +ARG STERN_VERSION +ARG KUBELOGIN_VERSION +ARG ZSH_VERSION +ARG MULTISTAGE_BUILDER_VERSION + +######################################################### BINARY-DOWNLOADER ############################################ +FROM ksandermann/multistage-builder:$MULTISTAGE_BUILDER_VERSION as binary_downloader MAINTAINER Kevin Sandermann LABEL maintainer="kevin.sandermann@gmail.com" ARG TARGETARCH +ARG DOCKER_VERSION +ARG KUBECTL_VERSION ARG OC_CLI_VERSION ARG HELM_VERSION ARG TERRAFORM_VERSION -ARG DOCKER_VERSION -ARG KUBECTL_VERSION +ARG AWS_CLI_VERSION +ARG AZ_CLI_VERSION +ARG GCLOUD_VERSION +ARG ANSIBLE_VERSION +ARG JINJA_VERSION +ARG OPENSSH_VERSION ARG CRICTL_VERSION ARG VAULT_VERSION ARG VELERO_VERSION ARG SENTINEL_VERSION ARG STERN_VERSION ARG KUBELOGIN_VERSION +ARG ZSH_VERSION WORKDIR /root/download +RUN mkdir -p /root/download/binaries + #download oc-cli -RUN mkdir -p oc_cli && \ - curl -SsL --retry 5 -o oc_cli.tar.gz https://mirror.openshift.com/pub/openshift-v4/$TARGETARCH/clients/ocp/stable/openshift-client-linux-$OC_CLI_VERSION.tar.gz && \ - tar xvf oc_cli.tar.gz -C oc_cli +RUN if [[ ! -z ${OC_CLI_VERSION} ]] ; then \ + mkdir -p oc_cli && \ + curl -SsL --retry 5 -o oc_cli.tar.gz https://mirror.openshift.com/pub/openshift-v4/$TARGETARCH/clients/ocp/stable/openshift-client-linux-$OC_CLI_VERSION.tar.gz && \ + tar xvf oc_cli.tar.gz -C oc_cli && \ + mv "/root/download/oc_cli/oc" "/root/download/binaries/oc"; \ + fi #download helm3-cli -RUN mkdir helm && curl -SsL --retry 5 "https://get.helm.sh/helm-v$HELM_VERSION-linux-$TARGETARCH.tar.gz" | tar xz -C ./helm +RUN if [[ ! -z ${HELM_VERSION} ]] ; then \ + mkdir helm && curl -SsL --retry 5 "https://get.helm.sh/helm-v$HELM_VERSION-linux-$TARGETARCH.tar.gz" | tar xz -C ./helm && \ + mv "/root/download/helm/linux-${TARGETARCH}/helm" "/root/download/binaries/helm"; \ + fi #download terraform -RUN wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform\_${TERRAFORM_VERSION}\_linux_${TARGETARCH}.zip && \ - unzip ./terraform\_${TERRAFORM_VERSION}\_linux_${TARGETARCH}.zip -d terraform_cli +RUN if [[ ! -z ${TERRAFORM_VERSION} ]] ; then \ + wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform\_${TERRAFORM_VERSION}\_linux_${TARGETARCH}.zip && \ + unzip ./terraform\_${TERRAFORM_VERSION}\_linux_${TARGETARCH}.zip -d terraform_cli && \ + mv "/root/download/terraform_cli/terraform" "/root/download/binaries/terraform"; \ + fi #download docker #credits to https://github.com/docker-library/docker/blob/463595652d2367887b1ffe95ec30caa00179be72/18.09/Dockerfile #need to stick to uname since docker download link uses "aarch64" instead of "arm64" -RUN mkdir -p /root/download/docker/bin && \ - set -eux; \ - arch="$(uname -m)"; \ - if ! wget -O docker.tgz "https://download.docker.com/linux/static/stable/${arch}/docker-${DOCKER_VERSION}.tgz"; then \ - echo >&2 "error: failed to download 'docker-${DOCKER_VERSION}' from 'stable' for '${arch}'"; \ - exit 1; \ - fi; \ - tar --extract \ - --file docker.tgz \ - --strip-components 1 \ - --directory /root/download/docker/bin +RUN if [[ ! -z ${DOCKER_VERSION} ]] ; then \ + mkdir -p /root/download/docker/bin && \ + set -eux && \ + arch="$(uname -m)" && \ + wget -O docker.tgz "https://download.docker.com/linux/static/stable/${arch}/docker-${DOCKER_VERSION}.tgz" && \ + tar --extract \ + --file docker.tgz \ + --strip-components 1 \ + --directory /root/download/docker/bin && \ + mv /root/download/docker/bin/* -t "/root/download/binaries/" ; \ + fi #download kubectl -RUN wget https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_VERSION/bin/linux/${TARGETARCH}/kubectl -O /root/download/kubectl +RUN if [[ ! -z ${KUBECTL_VERSION} ]] ; then \ + wget https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_VERSION/bin/linux/${TARGETARCH}/kubectl -O /root/download/kubectl && \ + mv "/root/download/kubectl" "/root/download/binaries/kubectl"; \ + fi #download crictl -RUN mkdir -p /root/download/crictl && \ - wget "https://github.com/kubernetes-sigs/cri-tools/releases/download/v$CRICTL_VERSION/crictl-v$CRICTL_VERSION-linux-${TARGETARCH}.tar.gz" -O /root/download/crictl.tar.gz && \ - tar zxvf /root/download/crictl.tar.gz -C /root/download/crictl && \ - chmod +x /root/download/crictl/crictl +RUN if [[ ! -z ${CRICTL_VERSION} ]] ; then \ + mkdir -p /root/download/crictl && \ + wget "https://github.com/kubernetes-sigs/cri-tools/releases/download/v$CRICTL_VERSION/crictl-v$CRICTL_VERSION-linux-${TARGETARCH}.tar.gz" -O /root/download/crictl.tar.gz && \ + tar zxvf /root/download/crictl.tar.gz -C /root/download/crictl && \ + mv "/root/download/crictl/crictl" "/root/download/binaries/crictl"; \ + fi #download yq -RUN curl -Lo yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${TARGETARCH} +RUN curl -Lo yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${TARGETARCH} && \ + mv "/root/download/yq" "/root/download/binaries/yq" #download vault -RUN wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_${TARGETARCH}.zip && \ - unzip ./vault_${VAULT_VERSION}_linux_${TARGETARCH}.zip +RUN if [[ ! -z ${VAULT_VERSION} ]] ; then \ + wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_${TARGETARCH}.zip && \ + unzip ./vault_${VAULT_VERSION}_linux_${TARGETARCH}.zip && \ + mv "/root/download/vault" "/root/download/binaries/vault"; \ + fi #download tcpping #todo: switch to https://github.com/deajan/tcpping/blob/master/tcpping when ubuntu is supported -RUN wget https://raw.githubusercontent.com/deajan/tcpping/original-1.8/tcpping -O /root/download/tcpping +RUN wget https://raw.githubusercontent.com/deajan/tcpping/original-1.8/tcpping -O /root/download/tcpping && \ + mv "/root/download/tcpping" "/root/download/binaries/tcpping" #download velero CLI -RUN wget https://github.com/vmware-tanzu/velero/releases/download/v${VELERO_VERSION}/velero-v${VELERO_VERSION}-linux-${TARGETARCH}.tar.gz && \ - tar -xvf velero-v${VELERO_VERSION}-linux-${TARGETARCH}.tar.gz && \ - mkdir -p /root/download/velero_binary && \ - mv velero-v${VELERO_VERSION}-linux-${TARGETARCH}/velero /root/download/velero_binary/velero +RUN if [[ ! -z ${VELERO_VERSION} ]] ; then \ + wget https://github.com/vmware-tanzu/velero/releases/download/v${VELERO_VERSION}/velero-v${VELERO_VERSION}-linux-${TARGETARCH}.tar.gz && \ + tar -xvf velero-v${VELERO_VERSION}-linux-${TARGETARCH}.tar.gz && \ + mv velero-v${VELERO_VERSION}-linux-${TARGETARCH}/velero /root/download/binaries/velero; \ + fi #download terraform sentinel -RUN curl https://releases.hashicorp.com/sentinel/${SENTINEL_VERSION}/sentinel_${SENTINEL_VERSION}_linux_${TARGETARCH}.zip --output ./sentinel.zip && \ - unzip ./sentinel.zip -d ./sentinel_binary +RUN if [[ ! -z ${SENTINEL_VERSION} ]] ; then \ + curl https://releases.hashicorp.com/sentinel/${SENTINEL_VERSION}/sentinel_${SENTINEL_VERSION}_linux_${TARGETARCH}.zip --output ./sentinel.zip && \ + unzip ./sentinel.zip -d ./sentinel_binary && \ + mv "/root/download/sentinel_binary/sentinel" "/root/download/binaries/sentinel"; \ + fi #download stern -RUN mkdir -p /root/download/stern && \ - wget https://github.com/stern/stern/releases/download/v${STERN_VERSION}/stern_${STERN_VERSION}_linux_${TARGETARCH}.tar.gz -O /root/download/stern_arch.tar.gz && \ - tar zxvf /root/download/stern_arch.tar.gz -C /root/download/stern && \ - mkdir -p /root/download/stern_binary && \ - mv /root/download/stern/stern /root/download/stern_binary/stern +RUN if [[ ! -z ${STERN_VERSION} ]] ; then \ + mkdir -p /root/download/stern && \ + wget https://github.com/stern/stern/releases/download/v${STERN_VERSION}/stern_${STERN_VERSION}_linux_${TARGETARCH}.tar.gz -O /root/download/stern_arch.tar.gz && \ + tar zxvf /root/download/stern_arch.tar.gz -C /root/download/stern && \ + mv /root/download/stern/stern "/root/download/binaries/stern" ; \ + fi #download kubelogin -RUN mkdir -p /root/download/kubelogin/binary && \ - wget https://github.com/Azure/kubelogin/releases/download/v${KUBELOGIN_VERSION}/kubelogin-linux-${TARGETARCH}.zip -O /root/download/kubelogin/kubelogin.zip && \ - unzip /root/download/kubelogin/kubelogin.zip -d /root/download/kubelogin/ && \ - mv /root/download/kubelogin/bin/linux_${TARGETARCH}/kubelogin /root/download/kubelogin/binary/kubelogin +RUN if [[ ! -z ${KUBELOGIN_VERSION} ]] ; then \ + mkdir -p /root/download/kubelogin/binary && \ + wget https://github.com/Azure/kubelogin/releases/download/v${KUBELOGIN_VERSION}/kubelogin-linux-${TARGETARCH}.zip -O /root/download/kubelogin/kubelogin.zip && \ + unzip /root/download/kubelogin/kubelogin.zip -d /root/download/kubelogin/ && \ + mv /root/download/kubelogin/bin/linux_${TARGETARCH}/kubelogin "/root/download/binaries/kubelogin" ; \ + fi +######################################################### BASE-IMAGE ################################################### -######################################################### IMAGE ######################################################## - -FROM ubuntu:$UBUNTU_VERSION -MAINTAINER Kevin Sandermann -LABEL maintainer="kevin.sandermann@gmail.com" +FROM ubuntu:$UBUNTU_VERSION as base-image ARG TARGETARCH -#tooling versions -ARG OPENSSH_VERSION +ARG DOCKER_VERSION ARG KUBECTL_VERSION +ARG OC_CLI_VERSION +ARG HELM_VERSION +ARG TERRAFORM_VERSION +ARG AWS_CLI_VERSION +ARG AZ_CLI_VERSION +ARG GCLOUD_VERSION ARG ANSIBLE_VERSION ARG JINJA_VERSION -ARG AZ_CLI_VERSION -ARG AWS_CLI_VERSION +ARG OPENSSH_VERSION +ARG CRICTL_VERSION +ARG VAULT_VERSION +ARG VELERO_VERSION +ARG SENTINEL_VERSION +ARG STERN_VERSION +ARG KUBELOGIN_VERSION ARG ZSH_VERSION -ARG GCLOUD_VERSION + +#use bash during docker build +SHELL ["/bin/bash", "-c"] #env -ENV EDITOR nano ENV DEBIAN_FRONTEND noninteractive USER root @@ -211,106 +235,161 @@ RUN apt-get update && \ apt-get install -y \ fonts-powerline \ powerline \ - zsh=$ZSH_VERSION + zsh=${ZSH_VERSION} RUN git config --global --add safe.directory '*' - -ENV TERM xterm -ENV ZSH_THEME agnoster -RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true - #install OpenSSH & remove ssh key files (this is only reasonable here since they are generated here) -RUN wget "https://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-${OPENSSH_VERSION}.tar.gz" --no-check-certificate && \ - tar xfz openssh-${OPENSSH_VERSION}.tar.gz && \ - cd openssh-${OPENSSH_VERSION} && \ - ./configure && \ - make && \ - make install && \ - rm -rf ../openssh-${OPENSSH_VERSION}.tar.gz ../openssh-${OPENSSH_VERSION} /usr/local/etc/*_key /usr/local/etc/*.pub && \ - ssh -V - -#install ansible common requirements + azure-cli -RUN apt remove azure-cli -y || true && \ - pip3 install \ - ansible==${ANSIBLE_VERSION} \ - ansible-lint \ +RUN if [[ ! -z ${OPENSSH_VERSION} ]] ; then \ + wget "https://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-${OPENSSH_VERSION}.tar.gz" --no-check-certificate && \ + tar xfz openssh-${OPENSSH_VERSION}.tar.gz && \ + cd openssh-${OPENSSH_VERSION} && \ + ./configure && \ + make && \ + make install && \ + rm -rf ../openssh-${OPENSSH_VERSION}.tar.gz ../openssh-${OPENSSH_VERSION} /usr/local/etc/*_key /usr/local/etc/*.pub && \ + ssh -V; \ + fi + +#install common requirements +RUN pip3 install \ cryptography \ hvac \ - jinja2==${JINJA_VERSION} \ jmespath \ netaddr \ - openshift \ passlib \ pbr \ pip \ pyOpenSSL \ pyvmomi \ - setuptools && \ - pip3 install \ - azure-cli==${AZ_CLI_VERSION} + setuptools + +#install ansible +RUN if [[ ! -z ${ANSIBLE_VERSION} && ! -z ${JINJA_VERSION} ]] ; then \ + pip3 install \ + ansible==${ANSIBLE_VERSION} \ + ansible-lint \ + jinja2==${JINJA_VERSION}; \ + fi + +#install azure-cli +RUN if [[ ! -z ${AZ_CLI_VERSION} ]] ; then \ + apt remove azure-cli -y || true && \ + pip3 install azure-cli==${AZ_CLI_VERSION}; \ + fi #test azure-cli -RUN az --version && \ - az extension add --name azure-devops && \ - az extension add --name ssh && \ - az extension add --name serial-console && \ - az extension add --name sentinel && \ - az extension add --name resource-mover && \ - az extension add --name resource-graph && \ - az extension add --name quota && \ - az extension add --name portal && \ - az extension add --name k8sconfiguration && \ - az extension add --name k8s-extension && \ - az extension add --name k8s-configuration && \ - az extension add --name azure-firewall +RUN if [[ ! -z ${AZ_CLI_VERSION} ]] ; then \ + az --version && \ + az extension add --name azure-devops && \ + az extension add --name ssh && \ + az extension add --name serial-console && \ + az extension add --name sentinel && \ + az extension add --name resource-mover && \ + az extension add --name resource-graph && \ + az extension add --name quota && \ + az extension add --name portal && \ + az extension add --name k8sconfiguration && \ + az extension add --name k8s-extension && \ + az extension add --name k8s-configuration && \ + az extension add --name azure-firewall; \ + fi #install AWS CLI -RUN pip3 install awscli==$AWS_CLI_VERSION && \ - aws --version +RUN if [[ ! -z ${AWS_CLI_VERSION} ]] ; then \ + pip3 install awscli==$AWS_CLI_VERSION && \ + aws --version; \ + fi #install gcloud -RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - && \ - apt-get update && \ - apt-get install -y google-cloud-sdk=${GCLOUD_VERSION} - -#install binaries -COPY --from=builder "/root/download/helm/linux-${TARGETARCH}/helm" "/usr/local/bin/helm" -COPY --from=builder "/root/download/oc_cli/oc" "/usr/local/bin/oc" -COPY --from=builder "/root/download/terraform_cli/terraform" "/usr/local/bin/terraform" -COPY --from=builder "/root/download/docker/bin/*" "/usr/local/bin/" -COPY --from=builder "/root/download/kubectl" "/usr/local/bin/kubectl" -COPY --from=builder "/root/download/crictl/crictl" "/usr/local/bin/crictl" -COPY --from=builder "/root/download/yq" "/usr/local/bin/yq" -COPY --from=builder "/root/download/vault" "/usr/local/bin/vault" -COPY --from=builder "/root/download/tcpping" "/usr/local/bin/tcpping" -COPY --from=builder "/root/download/velero_binary/velero" "/usr/local/bin/velero" -COPY --from=builder "/root/download/sentinel_binary/sentinel" "/usr/local/bin/sentinel" -COPY --from=builder "/root/download/stern_binary/stern" "/usr/local/bin/stern" -COPY --from=builder "/root/download/kubelogin/binary/kubelogin" "/usr/local/bin/kubelogin" +RUN if [[ ! -z ${GCLOUD_VERSION} ]] ; then \ + echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - && \ + apt-get update && \ + apt-get install -y google-cloud-sdk=${GCLOUD_VERSION}; \ + fi + +ENV TERM xterm +ENV ZSH_THEME agnoster +RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh +######################################################### IMAGE ######################################################## +FROM base-image +MAINTAINER Kevin Sandermann +LABEL maintainer="kevin.sandermann@gmail.com" + +ARG TARGETARCH +ARG DOCKER_VERSION +ARG KUBECTL_VERSION +ARG OC_CLI_VERSION +ARG HELM_VERSION +ARG TERRAFORM_VERSION +ARG AWS_CLI_VERSION +ARG AZ_CLI_VERSION +ARG GCLOUD_VERSION +ARG ANSIBLE_VERSION +ARG JINJA_VERSION +ARG OPENSSH_VERSION +ARG CRICTL_VERSION +ARG VAULT_VERSION +ARG VELERO_VERSION +ARG SENTINEL_VERSION +ARG STERN_VERSION +ARG KUBELOGIN_VERSION +ARG ZSH_VERSION + +#use bash during docker build +SHELL ["/bin/bash", "-c"] + +#env +ENV EDITOR nano + +#copy binaries +COPY --from=binary_downloader "/root/download/binaries/*" "/usr/local/bin/" RUN chmod -R +x /usr/local/bin && \ - helm version && \ - helm repo add stable https://charts.helm.sh/stable && \ - helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && \ - helm repo update && \ - kubectl version --client=true && \ - crictl --version && \ - oc version --client && \ - terraform version && \ docker --version && \ yq --version && \ - vault -version && \ - gcloud version && \ - tcpping && \ - velero --help && \ - stern --version && \ - sentinel --version && \ - kubelogin --version + tcpping; \ + if [[ ! -z "HELM_VERSION" ]] ; then \ + helm version && \ + helm repo add stable https://charts.helm.sh/stable && \ + helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && \ + helm repo update; \ + fi; \ + if [[ ! -z "KUBECTL_VERSION" ]] ; then \ + kubectl version --client=true; \ + fi; \ + if [[ ! -z "CRICTL_VERSION" ]] ; then \ + crictl --version; \ + fi; \ + if [[ ! -z "OC_CLI_VERSION" ]] ; then \ + oc version --client; \ + fi; \ + if [[ ! -z "TERRAFORM_VERSION" ]] ; then \ + terraform version ; \ + fi; \ + if [[ ! -z "VAULT_VERSION" ]] ; then \ + vault -version; \ + fi; \ + if [[ ! -z "GCLOUD_VERSION" ]] ; then \ + gcloud version; \ + fi; \ + if [[ ! -z "VELERO_VERSION" ]] ; then \ + velero version --client-only; \ + fi; \ + if [[ ! -z "STERN_VERSION" ]] ; then \ + stern --version; \ + fi; \ + if [[ ! -z "SENTINEL_VERSION" ]] ; then \ + sentinel --version; \ + fi; \ + if [[ ! -z "KUBELOGIN_VERSION" ]] ; then \ + kubelogin --version ; \ + fi COPY .bashrc /root/.bashrc COPY .zshrc /root/.zshrc +USER root WORKDIR /root/project CMD ["/bin/bash"] diff --git a/README.md b/README.md index 42cce43..249e49a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,33 @@ -# cloud-toolbox -Docker Image to work with Azure, AWS, Google Cloud, Docker, Kubernetes, Openshift, Helm, Ansible, Terraform and HashiCorp Vault. -It's the toolchain I'm working with on a daily basis, packed into a docker image with both zsh and bash to have a -platform-independent development environment. -Feel free to use/share/contribute. +

+ Cloud Toolbox +

Cloud-Toolbox

+

Docker Image to work with Azure, AWS, Google Cloud, Docker, Kubernetes, Openshift, Helm, Ansible, Terraform and HashiCorp Vault.

+

It's the toolchain I'm working with on a daily basis, packed into a docker image with both zsh and bash to have a +platform-independent development environment.

+

Feel free to use/share/contribute.

+

+

+ + GitHub Releases + + + Docker Pulls + + + Closed pull requests + + + Open pull requests + + + Issues + + + GitHub Contributors + +
+
+

# default shell & custom startup-script The default shell is sh. @@ -15,32 +40,33 @@ The behaviour of run.sh is as follows: 1. if so, attach to the container and start a new shell (/bin/bash) inside it. 1. if not, pull latest tag and start a new interactive container and start a new shell (/bin/zsh) inside it. -# custom ca certificates` +# custom ca certificates All CAs placed inside ```~/ca-certificates``` on the host system will be mounted into the container and trusted on startup. # multi-platform support Starting with release *2022-08-25_01*, arm64/aarch64 and amd64 are supported and have been tested on linux/amd64 and Macbook M1. # versioning -Release tags will be build following pattern YYYY-MM-dd-version. -Version 01 of a date will always contain the latest stable/official versions of tooling available. -Other versions of a date can contain version combinations of the toolchain and will be documented in the version history -below. +Release tags will be build following pattern YYYY-MM-dd_version. + +There is 2 versions of toolbox available: *base* and *complete*. + +The latest tag of version *base* will be built using tag *latest*, while the latest tag of version *complete* is available through tag *complete*. + +Version *base* of a date will always contain the latest stable/official versions of tooling available of version *base*. + +Version *complete* will always contain the latest stable/official versions of tooling available of version *complete*. + +For a list of tooling available in version *complete*, but not in *base*, please refer [here](https://github.com/ksandermann/cloud-toolbox/blob/master/docs/args_optional.args) + +## version history +latest -> 2022-10-11_base +project -> 2022-10-11_base +complete -> 2022-10-11_complete + +| RELEASE | UBUNTU | DOCKER | KUBECTL | HELM | TERRAFORM | AZ CLI | OPENSSH | CRICTL | VELERO | SENTINEL | STERN | KUBELOGIN | OC CLI | AWS CLI | GCLOUD SDK | ANSIBLE | JINJA2 | VAULT | +|---------------------|--------|----------|---------|--------|-----------|--------|---------|--------|--------|----------|--------|-----------|--------|---------|------------|---------|---------|--------| +| 2022-10-11_complete | 20.04 | 20.10.18 | 1.25.2 | 3.10.0 | 1.3.2 | 2.40.0 | 9.1p1 | 1.25.0 | 1.9.2 | 0.18.11 | 1.22.0 | 0.0.20 | 4.11.7 | 1.25.90 | 405.0.0 | 6.4.0 | 3.1.2 | 1.11.4 | ## version history -latest -> 2022-09-21_01 - -| RELEASE | UBUNTU | DOCKER | KUBECTL | OC CLI | HELM | TERRAFORM | AWS CLI | AZ CLI | GCLOUD SDK | ANSIBLE | JINJA2 | OPENSSH | CRICTL | VAULT | VELERO | SENTINEL | -|---------------|--------|----------|---------|---------|-------|-----------|---------|--------|------------|---------|--------|---------|--------|--------|--------|----------| -| 2022-09-22_01 | 20.04 | 20.10.18 | 1.25.1 | 4.11.4 | 3.9.4 | 1.2.9 | 1.25.77 | 2.40.0 | 402.0.0 | 6.4.0 | 3.1.2 | 9.0p1 | 1.25.0 | 1.11.3 | 1.9.1 | 0.18.12 | -| 2022-09-21_01 | 20.04 | 20.10.18 | 1.25.1 | 4.11.4 | 3.9.4 | 1.2.9 | 1.25.77 | 2.40.0 | 402.0.0 | 6.4.0 | 3.1.2 | 9.0p1 | 1.25.0 | 1.11.3 | 1.9.1 | 0.18.12 | -| 2022-09-14_01 | 20.04 | 20.10.18 | 1.25.0 | 4.11.1 | 3.9.4 | 1.2.9 | 1.25.73 | 2.40.0 | 402.0.0 | 6.3.0 | 3.1.2 | 9.0p1 | 1.25.0 | 1.11.3 | 1.9.1 | 0.18.11 | -| 2022-08-25_01 | 20.04 | 20.10.17 | 1.25.0 | 4.11.0 | 3.9.4 | 1.2.8 | 1.25.60 | 2.39.0 | 399.0.0 | 6.3.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.11.2 | 1.9.1 | 0.18.11 | -| 2022-07-30_01 | 20.04 | 20.10.17 | 1.24.3 | 4.10.23 | 3.9.2 | 1.2.6 | 1.25.41 | 2.38.0 | 395.0.0 | 6.1.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.11.1 | 1.9.0 | 0.18.11 | -| 2022-07-13_01 | 20.04 | 20.10.17 | 1.24.2 | 4.10.20 | 3.9.0 | 1.2.5 | 1.25.28 | 2.38.0 | 393.0.0 | 6.1.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.11.0 | 1.9.0 | 0.18.11 | -| 2022-06-16_01 | 20.04 | 20.10.17 | 1.24.1 | 4.10.17 | 3.9.0 | 1.2.3 | 1.25.9 | 2.37.0 | 390.0.0 | 5.9.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.10.4 | 1.8.1 | 0.18.11 | -| 2022-05-02_01 | 20.04 | 20.10.14 | 1.23.6 | 4.10.10 | 3.8.2 | 1.1.9 | 1.23.4 | 2.36.0 | 383.0.1 | 5.7.0 | 3.1.2 | 9.0p1 | 1.23.0 | 1.10.2 | 1.8.1 | 0.18.9 | -| 2022-04-26_01 | 20.04 | 20.10.14 | 1.23.6 | 4.10.9 | 3.8.2 | 1.1.9 | 1.23.0 | 2.36.0 | 382.0.0 | 5.6.0 | 3.1.1 | 9.0p1 | 1.23.0 | 1.10.1 | 1.8.1 | 0.18.9 | -| 2022-03-17_01 | 20.04 | 20.10.13 | 1.23.5 | 4.10.3 | 3.8.1 | 1.1.7 | 1.22.76 | 2.34.1 | 377.0.0 | 5.5.0 | 3.0.3 | 8.9p1 | 1.23.0 | 1.9.4 | 1.8.1 | 0.18.7 | - -## [ version history before 2022-03-17](https://github.com/ksandermann/cloud-toolbox/blob/master/docs/version_history.md) +## [version history before 2022-10-10](https://github.com/ksandermann/cloud-toolbox/blob/master/docs/version_history.md) diff --git a/args_base.args b/args_base.args new file mode 100644 index 0000000..43a5211 --- /dev/null +++ b/args_base.args @@ -0,0 +1,26 @@ +UBUNTU_VERSION=20.04 +#https://docs.docker.com/engine/release-notes/ +DOCKER_VERSION=20.10.18 +#https://github.com/kubernetes/kubernetes/releases +KUBECTL_VERSION=1.25.2 +#https://github.com/helm/helm/releases +HELM_VERSION=3.10.0 +#https://github.com/hashicorp/terraform/releases +TERRAFORM_VERSION=1.3.2 +#https://pypi.org/project/azure-cli/ +AZ_CLI_VERSION=2.40.0 +#https://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/ +OPENSSH_VERSION=9.1p1 +#https://github.com/kubernetes-sigs/cri-tools/releases +CRICTL_VERSION=1.25.0 +#https://github.com/vmware-tanzu/velero/releases +VELERO_VERSION=1.9.2 +#https://docs.hashicorp.com/sentinel/changelog +SENTINEL_VERSION=0.18.11 +#https://github.com/stern/stern/releases +STERN_VERSION=1.22.0 +#https://github.com/Azure/kubelogin/releases +KUBELOGIN_VERSION=0.0.20 +#apt-get update && apt-cache madison zsh | head -n 1 +ZSH_VERSION=5.8-3ubuntu1.1 +MULTISTAGE_BUILDER_VERSION=2022-08-25 diff --git a/args_optional.args b/args_optional.args new file mode 100644 index 0000000..dd51d5a --- /dev/null +++ b/args_optional.args @@ -0,0 +1,12 @@ +#https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/ +OC_CLI_VERSION=4.11.7 +#https://pypi.org/project/awscli/ +AWS_CLI_VERSION=1.25.90 +#apt-get update && apt-cache madison google-cloud-sdk | head -n 1 +GCLOUD_VERSION=405.0.0-0 +#https://pypi.org/project/ansible/ +ANSIBLE_VERSION=6.4.0 +#https://pypi.org/project/Jinja2/ +JINJA_VERSION=3.1.2 +#https://github.com/hashicorp/vault/releases +VAULT_VERSION=1.11.4 diff --git a/build.sh b/build.sh index 51fa154..f18ae3d 100755 --- a/build.sh +++ b/build.sh @@ -2,18 +2,49 @@ set -euo pipefail IFS=$'\n\t' -IMAGE_TAG="2022-09-22_01" -UPSTREAM_TAG="latest" +IMAGE_TAG="2022-10-11" +TAG_PREFIX_COMPLETE="complete" +TAG_PREFIX_BASE="latest" +TAG_PREFIX_BASE2="project" +UPSTREAM_TAG_COMPLETE="${IMAGE_TAG}_${TAG_PREFIX_COMPLETE}" +UPSTREAM_TAG_BASE="${IMAGE_TAG}_${TAG_PREFIX_BASE}" + +echo "building complete image with specific tag $UPSTREAM_TAG_COMPLETE and general tag $TAG_PREFIX_COMPLETE" +echo "building base image with specific tag $UPSTREAM_TAG_BASE and general tag $TAG_PREFIX_BASE" + +##BUILD COMPLETE IMAGE + +#https://stackoverflow.com/a/62357213 +while IFS= read -r line; do + if [[ "$line" != \#* ]]; + then buildargs_base+=(--build-arg "$line"); + fi +done < "args_base.args" + +while IFS= read -r line; do + if [[ "$line" != \#* ]]; + then buildargs_optional+=(--build-arg "$line"); + fi +done < "args_optional.args" docker login +echo "removing cached images" +#remove current manifest to not ammend more images with same architecture but create a clean one +docker manifest rm ksandermann/cloud-toolbox:$UPSTREAM_TAG_COMPLETE || true +docker manifest rm ksandermann/cloud-toolbox:$TAG_PREFIX_COMPLETE || true +rm -rf ~/.docker/manifests/docker.io_ksandermann_cloud-toolbox* + #building image and pushing to private registry since it might still contain secrets/ssh keys or vulnerabilities #https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/ docker buildx build \ --pull \ + ${buildargs_base[@]} ${buildargs_optional[@]} \ --platform linux/amd64,linux/arm64 \ - -t ksandermann/cloud-toolbox-private:$IMAGE_TAG \ + -t ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_COMPLETE \ + --no-cache \ --push \ + --progress plain \ . #scanning private image - skipping binaries where it is known we are already using the latest available version. @@ -22,51 +53,132 @@ docker buildx build \ trivy image \ --ignore-unfixed \ --severity HIGH,CRITICAL,MEDIUM \ + --skip-files "/usr/local/bin/containerd" \ + --skip-files "/usr/local/bin/containerd-shim" \ + --skip-files "/usr/local/bin/containerd-shim-runc-v2" \ + --skip-files "/usr/local/bin/crictl" \ + --skip-files "/usr/local/bin/ctr" \ + --skip-files "/usr/local/bin/docker" \ + --skip-files "/usr/local/bin/docker-init" \ + --skip-files "/usr/local/bin/docker-proxy" \ + --skip-files "/usr/local/bin/dockerd" \ --skip-files "/usr/local/bin/helm" \ + --skip-files "/usr/local/bin/kubectl" \ + --skip-files "/usr/local/bin/kubelogin" \ --skip-files "/usr/local/bin/oc" \ + --skip-files "/usr/local/bin/sentinel" \ + --skip-files "/usr/local/bin/stern" \ + --skip-files "/usr/local/bin/tcpping" \ --skip-files "/usr/local/bin/terraform" \ - --skip-files "/usr/local/bin/kubectl" \ - --skip-files "/usr/local/bin/crictl" \ - --skip-files "/usr/local/bin/yq" \ --skip-files "/usr/local/bin/vault" \ - --skip-files "/usr/local/bin/tcpping" \ --skip-files "/usr/local/bin/velero" \ - --skip-files "/usr/local/bin/stern" \ - --skip-files "/usr/local/bin/sentinel" \ + --skip-files "/usr/local/bin/yq" \ + --skip-dirs "/root/.azure/cliextensions/ssh/" \ + ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_COMPLETE + +echo "Vulnerability scan complete. Press ctrl+c to abort and not push images. Sleeping 120 seconds, then proceeding to push images" +sleep 120 +echo "proceeding with pushing the images" + +echo "extracting image layer digests" +COMPLETE_PRIVATE_MANIFEST_DIGEST_1=$(docker manifest inspect ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_COMPLETE | jq -r '.manifests[0].digest') +COMPLETE_PRIVATE_MANIFEST_DIGEST_2=$(docker manifest inspect ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_COMPLETE | jq -r '.manifests[1].digest') + +echo "found digest 1: $COMPLETE_PRIVATE_MANIFEST_DIGEST_1" +echo "found digest 2: $COMPLETE_PRIVATE_MANIFEST_DIGEST_2" + +echo "creating image manifest with tag ksandermann/cloud-toolbox:${UPSTREAM_TAG_COMPLETE}" +docker manifest create ksandermann/cloud-toolbox:${UPSTREAM_TAG_COMPLETE} \ + --amend ksandermann/cloud-toolbox-private@${COMPLETE_PRIVATE_MANIFEST_DIGEST_1} \ + --amend ksandermann/cloud-toolbox-private@${COMPLETE_PRIVATE_MANIFEST_DIGEST_2} + + +echo "creating image manifest with tag ksandermann/cloud-toolbox:${TAG_PREFIX_COMPLETE}" +docker manifest create ksandermann/cloud-toolbox:${TAG_PREFIX_COMPLETE} \ + --amend ksandermann/cloud-toolbox-private@${COMPLETE_PRIVATE_MANIFEST_DIGEST_1} \ + --amend ksandermann/cloud-toolbox-private@${COMPLETE_PRIVATE_MANIFEST_DIGEST_2} + + +#push both images +echo "pushing images" +docker manifest push ksandermann/cloud-toolbox:$UPSTREAM_TAG_COMPLETE +docker manifest push ksandermann/cloud-toolbox:$TAG_PREFIX_COMPLETE + +##BUILD LATEST IMAGE + +#remove current manifest to not ammend more images with same architecture but create a clean one +docker manifest rm ksandermann/cloud-toolbox:$UPSTREAM_TAG_BASE || true +docker manifest rm ksandermann/cloud-toolbox:$TAG_PREFIX_BASE || true +docker manifest rm ksandermann/cloud-toolbox:$TAG_PREFIX_BASE2 || true +rm -rf ~/.docker/manifests/docker.io_ksandermann_cloud-toolbox* + +#building image and pushing to private registry since it might still contain secrets/ssh keys or vulnerabilities +#https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/ +docker buildx build \ + --pull \ + ${buildargs_base[@]} \ + --platform linux/amd64,linux/arm64 \ + --no-cache \ + -t ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_BASE \ + --progress plain \ + --push \ + . + +#scanning private image - skipping binaries where it is known we are already using the latest available version. +#ssh keys get removed in the step they get generated +#azure-cli ssh extension triggers a false-positive string being recognized as Alibaba access token +trivy image \ + --ignore-unfixed \ + --severity HIGH,CRITICAL,MEDIUM \ --skip-files "/usr/local/bin/containerd" \ --skip-files "/usr/local/bin/containerd-shim" \ --skip-files "/usr/local/bin/containerd-shim-runc-v2" \ + --skip-files "/usr/local/bin/crictl" \ + --skip-files "/usr/local/bin/ctr" \ --skip-files "/usr/local/bin/docker" \ --skip-files "/usr/local/bin/docker-init" \ --skip-files "/usr/local/bin/docker-proxy" \ --skip-files "/usr/local/bin/dockerd" \ + --skip-files "/usr/local/bin/helm" \ + --skip-files "/usr/local/bin/kubectl" \ --skip-files "/usr/local/bin/kubelogin" \ + --skip-files "/usr/local/bin/oc" \ + --skip-files "/usr/local/bin/sentinel" \ + --skip-files "/usr/local/bin/stern" \ + --skip-files "/usr/local/bin/tcpping" \ + --skip-files "/usr/local/bin/terraform" \ + --skip-files "/usr/local/bin/vault" \ + --skip-files "/usr/local/bin/velero" \ + --skip-files "/usr/local/bin/yq" \ --skip-dirs "/root/.azure/cliextensions/ssh/" \ - ksandermann/cloud-toolbox-private:$IMAGE_TAG + ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_BASE -for i in {1..5} -do - echo "" -done echo "Vulnerability scan complete. Press ctrl+c to abort and not push images. Sleeping 120 seconds, then proceeding to push images" sleep 120 echo "proceeding with pushing the images" -PRIVATE_MANIFEST_DIGEST_1=$(docker manifest inspect ksandermann/cloud-toolbox-private:$IMAGE_TAG | yq '.manifests[0].digest') -PRIVATE_MANIFEST_DIGEST_2=$(docker manifest inspect ksandermann/cloud-toolbox-private:$IMAGE_TAG | yq '.manifests[1].digest') +BASE_PRIVATE_MANIFEST_DIGEST_1=$(docker manifest inspect ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_BASE | jq -r '.manifests[0].digest') +BASE_PRIVATE_MANIFEST_DIGEST_2=$(docker manifest inspect ksandermann/cloud-toolbox-private:$UPSTREAM_TAG_BASE | jq -r '.manifests[1].digest') -docker manifest create ksandermann/cloud-toolbox:$IMAGE_TAG \ - --amend ksandermann/cloud-toolbox-private@$PRIVATE_MANIFEST_DIGEST_1 \ - --amend ksandermann/cloud-toolbox-private@$PRIVATE_MANIFEST_DIGEST_2 +#create public tag with "date_latest" +echo "creating image manifest with tag ksandermann/cloud-toolbox:${UPSTREAM_TAG_BASE}" +docker manifest create ksandermann/cloud-toolbox:$UPSTREAM_TAG_BASE \ + --amend ksandermann/cloud-toolbox-private@$BASE_PRIVATE_MANIFEST_DIGEST_1 \ + --amend ksandermann/cloud-toolbox-private@$BASE_PRIVATE_MANIFEST_DIGEST_2 -#docker manifest push ksandermann/cloud-toolbox:$IMAGE_TAG - -#remove current manifest to not ammend more images with same architecture but create a clean one -docker manifest rm ksandermann/cloud-toolbox:$UPSTREAM_TAG || true -rm -rf ~/.docker/manifests/docker.io_ksandermann_cloud-toolbox-latest +#create public tag with "latest" +echo "creating image manifest with tag ksandermann/cloud-toolbox:${TAG_PREFIX_BASE}" +docker manifest create ksandermann/cloud-toolbox:$TAG_PREFIX_BASE \ + --amend ksandermann/cloud-toolbox-private@$BASE_PRIVATE_MANIFEST_DIGEST_1 \ + --amend ksandermann/cloud-toolbox-private@$BASE_PRIVATE_MANIFEST_DIGEST_2 -docker manifest create ksandermann/cloud-toolbox:$UPSTREAM_TAG \ - --amend ksandermann/cloud-toolbox-private@$PRIVATE_MANIFEST_DIGEST_1 \ - --amend ksandermann/cloud-toolbox-private@$PRIVATE_MANIFEST_DIGEST_2 +#create public tag with "project" +echo "creating image manifest with tag ksandermann/cloud-toolbox:${TAG_PREFIX_BASE2}" +docker manifest create ksandermann/cloud-toolbox:$TAG_PREFIX_BASE2 \ + --amend ksandermann/cloud-toolbox-private@$BASE_PRIVATE_MANIFEST_DIGEST_1 \ + --amend ksandermann/cloud-toolbox-private@$BASE_PRIVATE_MANIFEST_DIGEST_2 -docker manifest push ksandermann/cloud-toolbox:$UPSTREAM_TAG +echo "pushing images" +docker manifest push ksandermann/cloud-toolbox:$UPSTREAM_TAG_BASE +docker manifest push ksandermann/cloud-toolbox:$TAG_PREFIX_BASE +docker manifest push ksandermann/cloud-toolbox:$TAG_PREFIX_BASE2 diff --git a/docs/version_history.md b/docs/version_history.md index 1886640..dbf7cd8 100644 --- a/docs/version_history.md +++ b/docs/version_history.md @@ -1,3 +1,20 @@ +## version history before 2022-10-05 + +| RELEASE | UBUNTU | DOCKER | KUBECTL | OC CLI | HELM | TERRAFORM | AWS CLI | AZ CLI | GCLOUD SDK | ANSIBLE | JINJA2 | OPENSSH | CRICTL | VAULT | VELERO | SENTINEL | +|---------------|--------|----------|---------|---------|--------|-----------|---------|--------|------------|---------|--------|---------|--------|--------|--------|----------| +| 2022-09-22_01 | 20.04 | 20.10.18 | 1.25.1 | 4.11.4 | 3.9.4 | 1.2.9 | 1.25.77 | 2.40.0 | 402.0.0 | 6.4.0 | 3.1.2 | 9.0p1 | 1.25.0 | 1.11.3 | 1.9.1 | 0.18.12 | +| 2022-09-21_01 | 20.04 | 20.10.18 | 1.25.1 | 4.11.4 | 3.9.4 | 1.2.9 | 1.25.77 | 2.40.0 | 402.0.0 | 6.4.0 | 3.1.2 | 9.0p1 | 1.25.0 | 1.11.3 | 1.9.1 | 0.18.12 | +| 2022-09-14_01 | 20.04 | 20.10.18 | 1.25.0 | 4.11.1 | 3.9.4 | 1.2.9 | 1.25.73 | 2.40.0 | 402.0.0 | 6.3.0 | 3.1.2 | 9.0p1 | 1.25.0 | 1.11.3 | 1.9.1 | 0.18.11 | +| 2022-08-25_01 | 20.04 | 20.10.17 | 1.25.0 | 4.11.0 | 3.9.4 | 1.2.8 | 1.25.60 | 2.39.0 | 399.0.0 | 6.3.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.11.2 | 1.9.1 | 0.18.11 | +| 2022-07-30_01 | 20.04 | 20.10.17 | 1.24.3 | 4.10.23 | 3.9.2 | 1.2.6 | 1.25.41 | 2.38.0 | 395.0.0 | 6.1.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.11.1 | 1.9.0 | 0.18.11 | +| 2022-07-13_01 | 20.04 | 20.10.17 | 1.24.2 | 4.10.20 | 3.9.0 | 1.2.5 | 1.25.28 | 2.38.0 | 393.0.0 | 6.1.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.11.0 | 1.9.0 | 0.18.11 | +| 2022-06-16_01 | 20.04 | 20.10.17 | 1.24.1 | 4.10.17 | 3.9.0 | 1.2.3 | 1.25.9 | 2.37.0 | 390.0.0 | 5.9.0 | 3.1.2 | 9.0p1 | 1.24.2 | 1.10.4 | 1.8.1 | 0.18.11 | +| 2022-05-02_01 | 20.04 | 20.10.14 | 1.23.6 | 4.10.10 | 3.8.2 | 1.1.9 | 1.23.4 | 2.36.0 | 383.0.1 | 5.7.0 | 3.1.2 | 9.0p1 | 1.23.0 | 1.10.2 | 1.8.1 | 0.18.9 | +| 2022-04-26_01 | 20.04 | 20.10.14 | 1.23.6 | 4.10.9 | 3.8.2 | 1.1.9 | 1.23.0 | 2.36.0 | 382.0.0 | 5.6.0 | 3.1.1 | 9.0p1 | 1.23.0 | 1.10.1 | 1.8.1 | 0.18.9 | +| 2022-03-17_01 | 20.04 | 20.10.13 | 1.23.5 | 4.10.3 | 3.8.1 | 1.1.7 | 1.22.76 | 2.34.1 | 377.0.0 | 5.5.0 | 3.0.3 | 8.9p1 | 1.23.0 | 1.9.4 | 1.8.1 | 0.18.7 | + + + ## version history before 2022-03-17 | RELEASE | UBUNTU | DOCKER | KUBECTL | OC CLI | HELM2 | HELM | TERRAFORM | AWS CLI | AZ CLI | GCLOUD SDK | ANSIBLE | JINJA2 | OPENSSH | CRICTL | VAULT | VELERO | SENTINEL | diff --git a/run.sh b/run.sh index f10e214..2425425 100755 --- a/run.sh +++ b/run.sh @@ -30,6 +30,23 @@ function attachToToolbox { docker exec -it toolbox /bin/bash } +function testBinaries { + docker --version && \ + yq --version && \ + tcpping && \ + helm version && \ + kubectl version --client=true && \ + crictl --version && \ + terraform version && \ + velero version --client-only && \ + sentinel --version && \ + kubelogin --version && \ + stern --version && \ + oc version --client && \ + vault -version && \ + gcloud version +} + if [[ "$(docker ps -a | grep toolbox)" ]] then attachToToolbox