From 5bcdb60f13ddb6623e43eb48733c84cc13498e0a Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 3 Apr 2017 23:53:31 +0100 Subject: [PATCH] Add a docker common kickstart as a central bit for shared config. There's a lot of similarities between base and base-minimal so introduce a docker-common.ks to ensure as much as possible is shared between the two ensure as much shared as possible. Signed-off-by: Peter Robinson --- fedora-docker-base-minimal.ks | 59 +++------------------------------- fedora-docker-base.ks | 57 +++------------------------------ fedora-docker-common.ks | 60 +++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 107 deletions(-) create mode 100644 fedora-docker-common.ks diff --git a/fedora-docker-base-minimal.ks b/fedora-docker-base-minimal.ks index 23b578a..69d6792 100644 --- a/fedora-docker-base-minimal.ks +++ b/fedora-docker-base-minimal.ks @@ -1,67 +1,18 @@ -# This is a minimal Fedora install designed to serve as a Docker base image. -# -# To keep this image minimal it only installs English language. You need to change -# dnf configuration in order to enable other languages. -# -### Hacking on this image ### -# This kickstart is processed using Anaconda-in-ImageFactory (via Koji typically), -# but you can run imagefactory locally too. -# -# To do so, testing local changes, first you'll need a TDL file. I store one here: -# https://git.fedorahosted.org/cgit/fedora-atomic.git/tree/fedora-atomic-rawhide.tdl -# -# Then, once you have imagefactory and imagefactory-plugins installed, run: -# -# imagefactory --debug target_image --template /path/to/fedora-atomic-rawhide.tdl --parameter offline_icicle true --file-parameter install_script $(pwd)/fedora-docker-base.ks docker -# +# See docker-base-common.ks for details on how to hack on docker image kickstarts +# This base is a stripped back Fedora image without python3/dnf. +# If you need that use the standard base image. -text # don't use cmdline -- https://github.com/rhinstaller/anaconda/issues/931 -bootloader --disabled -timezone --isUtc --nontp Etc/UTC -rootpw --lock --iscrypted locked - -keyboard us -network --bootproto=dhcp --device=link --activate --onboot=on -reboot - -# boot partitions are irrelevant as none of that content is taken into the final docker image -# We will be able to move to autopart when new pykickstart lands which adds option for noswap/noboot (fixed upstream) -zerombr -clearpart --all -part /boot/efi --fstype="vfat" --size=100 -part / --fstype ext4 --grow +%include fedora-docker-common.ks %packages --excludedocs --instLangs=en --nocore --excludeWeakdeps -bash -fedora-release microdnf --kernel -e2fsprogs -libss # used by e2fsprogs -fuse-libs - %end %post --erroronfail --log=/root/anaconda-post.log -set -eux - -# Set install langs macro so that new rpms that get installed will -# only install langs that we limit it to. -LANG="en_US" -echo "%_install_langs $LANG" > /etc/rpm/macros.image-language-conf - -# https://bugzilla.redhat.com/show_bug.cgi?id=1400682 -echo "Import RPM GPG key" -releasever=$(rpm -q --qf '%{version}\n' fedora-release) -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary - -echo "# fstab intentionally empty for containers" > /etc/fstab - -# Remove machine-id on pre generated images -rm -fv /etc/machine-id -touch /etc/machine-id - # remove some random help txt files rm -fv usr/share/gnupg/help*.txt @@ -91,7 +42,7 @@ mv /usr/share/zoneinfo/UTC /etc/localtime rm -rfv /usr/share/zoneinfo # Final pruning -rm -rfv var/cache/* var/log/* tmp/* +rm -rfv /var/cache/* /var/log/* /tmp/* %end diff --git a/fedora-docker-base.ks b/fedora-docker-base.ks index bcc53e5..4b1b47c 100644 --- a/fedora-docker-base.ks +++ b/fedora-docker-base.ks @@ -1,64 +1,19 @@ -# This is a minimal Fedora install designed to serve as a Docker base image. -# -# To keep this image minimal it only installs English language. You need to change -# dnf configuration in order to enable other languages. -# -### Hacking on this image ### -# This kickstart is processed using Anaconda-in-ImageFactory (via Koji typically), -# but you can run imagefactory locally too. -# -# To do so, testing local changes, first you'll need a TDL file. I store one here: -# https://git.fedorahosted.org/cgit/fedora-atomic.git/tree/fedora-atomic-rawhide.tdl -# -# Then, once you have imagefactory and imagefactory-plugins installed, run: -# -# imagefactory --debug target_image --template /path/to/fedora-atomic-rawhide.tdl --parameter offline_icicle true --file-parameter install_script $(pwd)/fedora-docker-base.ks docker -# +# See docker-base-common.ks for details on how to hack on docker image kickstarts +# This base is a standard Fedora image with python3 and dnf -text # don't use cmdline -- https://github.com/rhinstaller/anaconda/issues/931 -bootloader --disabled -timezone --isUtc --nontp Etc/UTC -rootpw --lock --iscrypted locked -keyboard us -network --bootproto=dhcp --device=link --activate --onboot=on -reboot - -# boot partitions are irrelevant as none of that content is taken into the final docker image -# We will be able to move to autopart when new pykickstart lands which adds option for noswap/noboot (fixed upstream) -zerombr -clearpart --all -part /boot/efi --fstype="vfat" --size=100 -part / --fstype ext4 --grow +%include fedora-docker-common.ks %packages --excludedocs --instLangs=en --nocore -bash -tar # https://bugzilla.redhat.com/show_bug.cgi?id=1409920 -fedora-release rootfiles +tar # https://bugzilla.redhat.com/show_bug.cgi?id=1409920 vim-minimal dnf dnf-yum # https://fedorahosted.org/fesco/ticket/1312#comment:29 sssd-client -#fakesystemd #TODO: waiting for review https://bugzilla.redhat.com/show_bug.cgi?id=1118740 --kernel - %end %post --erroronfail --log=/root/anaconda-post.log -set -eux - -# Set install langs macro so that new rpms that get installed will -# only install langs that we limit it to. -LANG="en_US" -echo "%_install_langs $LANG" > /etc/rpm/macros.image-language-conf - -# https://bugzilla.redhat.com/show_bug.cgi?id=1400682 -echo "Import RPM GPG key" -releasever=$(rpm -q --qf '%{version}\n' fedora-release) -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary - -echo "# fstab intentionally empty for containers" > /etc/fstab # remove some extraneous files rm -rf /var/cache/dnf/* @@ -74,8 +29,4 @@ systemctl mask systemd-remount-fs.service dev-hugepages.mount sys-fs-fuse-connec umount /run systemd-tmpfiles --create --boot -# Remove machine-id on pre generated images -rm -f /etc/machine-id -touch /etc/machine-id - %end diff --git a/fedora-docker-common.ks b/fedora-docker-common.ks new file mode 100644 index 0000000..3736212 --- /dev/null +++ b/fedora-docker-common.ks @@ -0,0 +1,60 @@ +# This is the common bits between Fedora Docker base image. +# +# To keep this image minimal it only installs English language. You need to change +# dnf configuration in order to enable other languages. +# +# ## Hacking on this image ### +# This kickstart is processed using Anaconda-in-ImageFactory (via Koji typically), +# but you can run imagefactory locally too. +# +# To do so, testing local changes, first you'll need a TDL file. I store one here: +# https://git.fedorahosted.org/cgit/fedora-atomic.git/tree/fedora-atomic-rawhide.tdl +# +# Then, once you have imagefactory and imagefactory-plugins installed, run: +# +# ksflatten -c fedora-docker-base[-minimal].ks -o fedora-docker-base-test.ks +# imagefactory --debug target_image --template /path/to/fedora-atomic-rawhide.tdl --parameter offline_icicle true --file-parameter install_script $(pwd)/fedora-docker-base-test.ks docker +# + +text # don't use cmdline -- https://github.com/rhinstaller/anaconda/issues/931 +bootloader --disabled +timezone --isUtc --nontp Etc/UTC +rootpw --lock --iscrypted locked +keyboard us +network --bootproto=dhcp --device=link --activate --onboot=on +reboot + +# boot partitions are irrelevant as none of that content is taken into the final docker image +# We will be able to move to autopart when new pykickstart lands which adds option for noswap/noboot (fixed upstream) +zerombr +clearpart --all +part /boot/efi --fstype="vfat" --size=100 +part / --fstype ext4 --grow + +%packages --excludedocs --instLangs=en --nocore +fedora-release +bash +-kernel + +%end + +%post --erroronfail --log=/root/anaconda-post.log +set -eux + +# Set install langs macro so that new rpms that get installed will +# only install langs that we limit it to. +LANG="en_US" +echo "%_install_langs $LANG" > /etc/rpm/macros.image-language-conf + +# https://bugzilla.redhat.com/show_bug.cgi?id=1400682 +echo "Import RPM GPG key" +releasever=$(rpm -q --qf '%{version}\n' fedora-release) +rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-primary + +echo "# fstab intentionally empty for containers" > /etc/fstab + +# Remove machine-id on pre generated images +rm -f /etc/machine-id +touch /etc/machine-id + +%end