FROM ubuntu:focal as base-image LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \ org.opencontainers.image.url='https://airshipit.org' \ org.opencontainers.image.documentation='https://airship-images.readthedocs.org' \ org.opencontainers.image.source='https://opendev.org/airship/images' \ org.opencontainers.image.vendor='The Airship Authors' \ org.opencontainers.image.licenses='Apache-2.0' SHELL ["bash", "-exc"] ENV DEBIAN_FRONTEND noninteractive # Update distro and install ansible RUN apt-get update ;\ apt-get dist-upgrade -y ;\ apt-get install -y --no-install-recommends \ python3-minimal \ python3-pip \ python3-apt \ python3-setuptools ;\ pip3 install --upgrade wheel ;\ pip3 install --upgrade ansible ;\ rm -rf /var/lib/apt/lists/* FROM base-image as rootfs-builder # install requirements for building chroot RUN apt-get update ;\ apt-get install -y --no-install-recommends \ multistrap \ equivs \ curl \ ca-certificates \ build-essential \ gnupg2 \ dosfstools;\ rm -rf /var/lib/apt/lists/* COPY assets/playbooks/inventory.yaml /opt/assets/playbooks/inventory.yaml COPY assets/playbooks/base-chroot.yaml /opt/assets/playbooks/base-chroot.yaml COPY assets/playbooks/roles/multistrap /opt/assets/playbooks/roles/multistrap RUN ansible-playbook -i /opt/assets/playbooks/inventory.yaml /opt/assets/playbooks/base-chroot.yaml COPY assets/playbooks/base-osconfig.yaml /opt/assets/playbooks/base-osconfig.yaml COPY assets/playbooks/roles/osconfig /opt/assets/playbooks/roles/osconfig RUN ansible-playbook -i /opt/assets/playbooks/inventory.yaml /opt/assets/playbooks/base-osconfig.yaml --tags "pre_install" FROM base-image as squashfs-builder ENV root_chroot /mnt/rootfs ENV root_image /mnt/image ENV boot_src="/opt/grub" RUN apt-get update ;\ apt-get install -y --no-install-recommends \ dosfstools \ mtools \ squashfs-tools \ grub-common \ grub2-common \ grub-pc-bin \ grub-efi-amd64-signed;\ rm -rf /var/lib/apt/lists/* COPY --from=rootfs-builder ${root_chroot} ${root_chroot} COPY assets/playbooks/inventory.yaml /opt/assets/playbooks/inventory.yaml COPY assets/playbooks/base-livecdcontent.yaml /opt/assets/playbooks/base-livecdcontent.yaml COPY assets/playbooks/roles/livecdcontent /opt/assets/playbooks/roles/livecdcontent RUN ansible-playbook -i /opt/assets/playbooks/inventory.yaml /opt/assets/playbooks/base-livecdcontent.yaml FROM base-image as image-builder ENV boot_src="/opt/grub" ENV root_image /mnt/image RUN apt-get update ;\ apt-get install -y --no-install-recommends \ xorriso \ grub-pc-bin \ python3-minimal \ python3-yaml ;\ rm -rf /var/lib/apt/lists/* COPY --from=squashfs-builder ${root_image} ${root_image} COPY assets/playbooks/inventory.yaml /opt/assets/playbooks/inventory.yaml COPY assets/playbooks/iso.yaml /opt/assets/playbooks/iso.yaml COPY assets/playbooks/roles/iso /opt/assets/playbooks/roles/iso RUN apt-get update ;\ apt-get install -y --no-install-recommends \ coreutils \ curl \ qemu-utils \ parted \ squashfs-tools \ extlinux \ syslinux-common \ xfsprogs \ vim \ kmod \ efivar \ dosfstools ;\ rm -rf /var/lib/apt/lists/* COPY assets/playbooks/base-osconfig.yaml /opt/assets/playbooks/base-osconfig.yaml COPY assets/playbooks/roles/osconfig /opt/assets/playbooks/roles/osconfig COPY assets/playbooks/qcow.yaml /opt/assets/playbooks/qcow.yaml COPY assets/playbooks/roles/qcow /opt/assets/playbooks/roles/qcow RUN curl -L https://github.com/mikefarah/yq/releases/download/2.4.0/yq_linux_amd64 -o /bin/yq \ && chmod +x /bin/yq COPY assets/*.sh /usr/bin/local/ COPY assets/*.json /usr/bin/local/ CMD /usr/bin/local/entrypoint.sh