diff --git a/dockerfile b/dockerfile index a6d356a..a9cff09 100644 --- a/dockerfile +++ b/dockerfile @@ -1,8 +1,38 @@ +ARG release_name=bookworm + +ARG kubernetes_version=1.29 + FROM --platform=$TARGETPLATFORM quay.io/ansible/receptor:v1.4.4 as receptor -FROM --platform=$TARGETPLATFORM python:3.11-slim-bookworm +FROM --platform=$TARGETPLATFORM python:3.11-slim-${release_name} as prep + + +ARG kubernetes_version + + +ENV DEBIAN_FRONTEND noninteractive + + +RUN apt update; \ + apt install -y \ + curl \ + gpg + + +RUN curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null; \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" > /etc/apt/sources.list.d/helm.list; \ + cat /etc/apt/sources.list.d/helm.list; + + +RUN curl -fsSL https://pkgs.k8s.io/core:/stable:/v${kubernetes_version}/deb/Release.key | gpg --dearmor | tee /usr/share/keyrings/kubernetes.gpg > /dev/null; \ + echo "deb [signed-by=/usr/share/keyrings/kubernetes.gpg] https://pkgs.k8s.io/core:/stable:/v${kubernetes_version}/deb/ /" > /etc/apt/sources.list.d/kubernetes.list; \ + cat /etc/apt/sources.list.d/kubernetes.list; + + +FROM --platform=$TARGETPLATFORM python:3.11-slim-${release_name} + # Ansible chucks a wobbler without. see: https://github.com/ansible/ansible/issues/78283 ENV LC_ALL en_US.UTF-8 @@ -40,19 +70,34 @@ RUN apt update \ && cp /tmp/deb/sbin/ldconfig /sbin/ \ && rm -Rf /tmp/deb \ && rm $(ls | grep libc-bin_ | grep -a '.deb') \ - && apt-get install --reinstall \ + && apt-get install -y --reinstall \ libc-bin \ # EoF fixing dpkg ldconfig not found error # Set Locale to en_US as ansible requires a locale for it to function without chucking a tantrum!! && apt install -y \ locales \ + apt-transport-https \ && sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \ - && locale-gen \ - && apt list --upgradable \ + && locale-gen; + + +COPY --from=prep --chmod=644 /etc/apt/sources.list.d/helm.list /etc/apt/sources.list.d/helm.list + +COPY --from=prep --chmod=644 /usr/share/keyrings/helm.gpg /usr/share/keyrings/helm.gpg + +COPY --from=prep --chmod=644 /etc/apt/sources.list.d/kubernetes.list /etc/apt/sources.list.d/kubernetes.list + +COPY --from=prep --chmod=644 /usr/share/keyrings/kubernetes.gpg /usr/share/keyrings/kubernetes.gpg + + +RUN apt update; \ + apt list --upgradable \ && apt upgrade --no-install-recommends -y \ && apt-get install --no-install-recommends -y \ openssh-client \ git \ + helm \ + kubectl \ sshpass \ postgresql-common \ postgresql-client \ @@ -65,8 +110,9 @@ RUN apt update \ # see issue https://gitlab.com/nofusscomputing/projects/ansible/execution_environment/-/issues/9 for following two lines && apt remove -y \ python3* \ - libpython3* \ - && rm -rf /var/lib/apt/lists/* + libpython3*; \ + helm plugin install https://github.com/databus23/helm-diff; \ + rm -rf /var/lib/apt/lists/* WORKDIR /workdir @@ -90,6 +136,7 @@ RUN ansible-galaxy collection install \ # ansible.posix.authorized_key for SSH ansible.posix==1.5.4 \ ansible.utils==3.1.0 \ + community.crypto==2.18.0 \ community.dns==2.8.1 \ # docker managment community.docker==3.8.0 \ @@ -97,6 +144,7 @@ RUN ansible-galaxy collection install \ community.general==8.4.0 \ community.mysql==3.9.0 \ community.postgresql==3.4.0 \ + netbox.netbox==3.17.0 \ theforeman.foreman==4.0.0; \ ansible-galaxy collection install --pre \ - nofusscomputing.kubernetes==1.2.0 \ No newline at end of file + nofusscomputing.kubernetes==1.7.1 \ No newline at end of file diff --git a/dockerfile-build_cache b/dockerfile-build_cache index 7f8a3ff..356f26a 100644 --- a/dockerfile-build_cache +++ b/dockerfile-build_cache @@ -46,7 +46,7 @@ RUN which ldconfig # && rm libc-bin_*.deb # Should re-install without issue -RUN apt-get install --reinstall \ +RUN apt-get install -y --reinstall \ libc-bin # EoF fixing dpkg ldconfig not found error # Set Locale to en_US as ansible requires a locale for it to function without chucking a tantrum!! diff --git a/includes/etc/ansible/playbooks b/includes/etc/ansible/playbooks index 19ca514..d33a223 160000 --- a/includes/etc/ansible/playbooks +++ b/includes/etc/ansible/playbooks @@ -1 +1 @@ -Subproject commit 19ca5148044353bcde1ab313713fa93bcbc0b79e +Subproject commit d33a223f02b61bded00c527fbe2711a1e3a070ec diff --git a/includes/etc/ansible/roles b/includes/etc/ansible/roles index 538e9eb..33197d2 160000 --- a/includes/etc/ansible/roles +++ b/includes/etc/ansible/roles @@ -1 +1 @@ -Subproject commit 538e9ebe2da71f853644cada2bae9efded42d3ea +Subproject commit 33197d244ec3705696b06d04e6d4f80d4d21b3fb diff --git a/requirements.txt b/requirements.txt index 46b45ec..b746ba8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,6 +8,12 @@ python_gitlab==4.3.0 psycopg2==2.9.9 # community.mysql PyMySQL==1.1.0 +# NetBox +pytz==2024.1 + +PyYAML>=3.11 +# kubernetes.core.k8s +jsonpatch dnspython==2.4.2