diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..81b3a5a --- /dev/null +++ b/.drone.yml @@ -0,0 +1,36 @@ +kind: pipeline +type: kubernetes +name: Harbor + +steps: +- name: build & publish + image: plugins/docker + context: . + settings: + repo: bv11-cr01.bessems.eu/library/packer-extended + registry: bv11-cr01.bessems.eu + tags: latest + mtu: 1450 + username: + from_secret: harbor_username + password: + from_secret: harbor_password + +--- +kind: pipeline +type: kubernetes +name: Dockerhub + +steps: +- name: build & publish + image: plugins/docker + context: . + settings: + repo: djpbessems/packer-extended + tags: latest + mtu: 1450 + username: + from_secret: docker_username + password: + from_secret: docker_password + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..be05df1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,66 @@ +FROM hashicorp/packer:light as packer +# Error in 1.6.2 regarding packer_cache - see https://git.io/JUCwk +# FROM hashicorp/packer:1.6.1 as packer +FROM hashicorp/terraform:light as terraform + +FROM alpine:latest AS download + +ENV OVFTOOL_VERSION=4.4.1-16812187 +ENV OVFTOOL_INSTALLER=VMware-ovftool-${OVFTOOL_VERSION}-lin.x86_64.bundle +ENV OVFTOOL_SHA256=ecdb3dcb58494d643d35661dcda948025661ec12ce615f043e1ec5d4c85de2ce +ARG RT_USERNAME +ARG RT_PASSWORD +ADD https://${RT_USERNAME}:${RT_PASSWORD}@devstore.vanderlande.com:443/artifactory/nlveg-mvn-release-local-01/com/vanderlande/itproj/3rd_party/applications/vmware/ovftool/${OVFTOOL_INSTALLER} /tmp/ovftool-installer + +RUN apk --update add --no-cache \ + curl \ + jq && \ + curl -L https://api.github.com/repos/rgl/packer-provisioner-windows-update/releases/latest | \ + jq -r '.assets[] | select(.name | contains("linux_amd64")) | .browser_download_url' | \ + xargs -I {} curl -L -o /tmp/packer-provisioner-windows-update.tar.gz {} && \ + tar -xzf /tmp/packer-provisioner-windows-update.tar.gz -C /tmp && \ + chmod +x /tmp/packer-provisioner-windows-update && \ + curl -L https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -o /tmp/packages-microsoft-prod.deb + +FROM ruby:slim + +COPY --from=packer /bin/packer /bin/packer +COPY --from=terraform /bin/terraform /bin/terraform +COPY --from=download /tmp/packer-provisioner-windows-update /bin/packer-provisioner-windows-update +COPY --from=download /tmp/packages-microsoft-prod.deb /tmp/packages-microsoft-prod.deb +COPY --from=download /tmp/ovftool-installer /tmp/ovftool-installer + +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 + +RUN dpkg -i /tmp/packages-microsoft-prod.deb && \ + rm -f /tmp/packages-microsoft-prod.deb && \ + apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \ + ansible \ + build-essential \ + git \ + # icu-libs \ + jq \ + libxml2-dev \ + libffi-dev \ + locales \ + netcat-openbsd \ + openssh-client \ + powershell \ + unzip && \ + sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ + locale-gen && \ + gem install inspec && \ + gem install inspec-bin && \ + apt-get remove -y \ + build-essential && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* && \ + pwsh -Command "Set-PSRepository -Name 'PSGallery' -InstallationPolicy 'Trusted' -Verbose" && \ + pwsh -Command "Install-Module -Name 'VMware.PowerCLI' -Verbose" && \ + sh /tmp/ovftool-installer --console --eulas-agreed --required && \ + rm -f /tmp/ovftool-installer + +ENTRYPOINT [] +CMD [] \ No newline at end of file diff --git a/Dockerfile.alpine b/Dockerfile.alpine new file mode 100644 index 0000000..d68b4ab --- /dev/null +++ b/Dockerfile.alpine @@ -0,0 +1,64 @@ +# Error in 1.6.2 regarding packer_cache - see https://git.io/JUCwk +#FROM hashicorp/packer:light as packer +FROM hashicorp/packer:1.6.1 as packer +FROM hashicorp/terraform:light as terraform + +FROM alpine:latest AS download + +RUN apk --update add --no-cache \ + curl \ + jq && \ + curl -L https://api.github.com/repos/powershell/powershell/releases/latest | \ + jq -r '.assets[] | select(.name | contains("linux-alpine-x64"))| .browser_download_url' | \ + xargs -I {} curl -L -o /tmp/powershell.tar.gz {} && \ + mkdir -p /opt/microsoft/powershell/7 && \ + tar -xzf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/7 && \ + chmod +x /opt/microsoft/powershell/7/pwsh && \ + curl -L https://api.github.com/repos/rgl/packer-provisioner-windows-update/releases/latest | \ + jq -r '.assets[] | select(.name | contains("linux_amd64")) | .browser_download_url' | \ + xargs -I {} curl -L -o /tmp/packer-provisioner-windows-update.tar.gz {} && \ + tar -xzf /tmp/packer-provisioner-windows-update.tar.gz -C /tmp && \ + chmod +x /tmp/packer-provisioner-windows-update + +FROM ubuntu:latest AS build + +ENV OVFTOOL_VERSION=4.4.1-16812187 +ENV OVFTOOL_INSTALLER=VMware-ovftool-${OVFTOOL_VERSION}-lin.x86_64.bundle +ENV OVFTOOL_SHA256=ecdb3dcb58494d643d35661dcda948025661ec12ce615f043e1ec5d4c85de2ce +ARG RT_USERNAME +ARG RT_PASSWORD +ADD https://${RT_USERNAME}:${RT_PASSWORD}@devstore.vanderlande.com:443/artifactory/nlveg-mvn-release-local-01/com/vanderlande/itproj/3rd_party/applications/vmware/ovftool/${OVFTOOL_INSTALLER} /tmp + +RUN echo "${OVFTOOL_SHA256} /tmp/${OVFTOOL_INSTALLER}" | sha256sum -c - && \ + sh /tmp/${OVFTOOL_INSTALLER} -p /tmp/ovftool --console --eulas-agreed --required + +FROM ruby:alpine + +COPY --from=packer /bin/packer /bin/packer +COPY --from=terraform /bin/terraform /bin/terraform +COPY --from=download /opt/microsoft/powershell /opt/microsoft/powershell +COPY --from=download /tmp/packer-provisioner-windows-update /bin/packer-provisioner-windows-update +COPY --from=build /tmp/ovftool/lib/vmware-ovftool /usr/lib/vmware-ovftool + +RUN apk --update add --no-cache \ + ansible \ + build-base \ + curl \ + git \ + icu-libs \ + jq \ + libxml2-dev \ + # libxml2-utils \ + libffi-dev \ + netcat-openbsd \ + openssh-client \ + unzip && \ + gem install inspec && \ + gem install inspec-bin && \ + apk del build-base && \ + ln -s /opt/microsoft/powershell/7/pwsh /usr/bin/pwsh && \ + pwsh -Command "Set-PSRepository -Name 'PSGallery' -InstallationPolicy 'Trusted' -Verbose" && \ + pwsh -Command "Install-Module -Name 'VMware.PowerCLI' -Verbose" + +ENTRYPOINT [] +CMD [] \ No newline at end of file