From eadd79c2cbf6e9428c8461e41926801babad7083 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sun, 22 Mar 2015 13:45:07 -0400 Subject: [PATCH] Port centos-minimal to yum-minimal Now that we have a generic yum-minimal element, just use it in centos instead of rinse. Adding base as an element-provides of yum-minimal because this element conflicts with the base element. Co-Authored-By: Gregory Haynes Change-Id: I15275d821781171c118f21aa0c0bca55f65a65b3 --- elements/centos-minimal/README.rst | 9 +- elements/centos-minimal/element-deps | 5 +- elements/centos-minimal/element-provides | 1 + .../environment.d/10-centos-distro-name.bash | 3 +- .../centos-minimal/packages/centos-7.packages | 119 ------------------ elements/centos-minimal/pkg-map | 7 -- elements/centos-minimal/root.d/08-rinse | 109 ---------------- elements/centos-minimal/yum.repos.d/yum.repo | 6 + elements/vm/finalise.d/51-bootloader | 2 +- 9 files changed, 17 insertions(+), 244 deletions(-) delete mode 100644 elements/centos-minimal/packages/centos-7.packages delete mode 100644 elements/centos-minimal/pkg-map delete mode 100755 elements/centos-minimal/root.d/08-rinse create mode 100644 elements/centos-minimal/yum.repos.d/yum.repo diff --git a/elements/centos-minimal/README.rst b/elements/centos-minimal/README.rst index 41c6f9315..eea475ff7 100644 --- a/elements/centos-minimal/README.rst +++ b/elements/centos-minimal/README.rst @@ -3,9 +3,12 @@ centos-minimal ============== Create a minimal image based on CentOS 7. -Use of this element will also require the tool 'rinse' to be -available on your system. It should be available on Ubuntu and Debian. +Use of this element will require 'yum' and 'yum-utils' to be installed on +Ubuntu and Debian. Nothing additional is needed on Fedora or CentOS. -The `DIB_OFFLINE` or more specific `DIB_CENTOS_USE_RINSE_CACHE` +This element cannot be used with the base element, therefore must pass the -n +flag to disk-image-create when using this element. + +The `DIB_OFFLINE` or more specific `DIB_YUMCHROOT_USE_CACHE` variables can be set to prefer the use of a pre-cached root filesystem tarball. diff --git a/elements/centos-minimal/element-deps b/elements/centos-minimal/element-deps index d26d01154..752a47929 100644 --- a/elements/centos-minimal/element-deps +++ b/elements/centos-minimal/element-deps @@ -1,4 +1 @@ -dib-run-parts -redhat-common -rpm-distro -yum +yum-minimal diff --git a/elements/centos-minimal/element-provides b/elements/centos-minimal/element-provides index a72e04969..427be3580 100644 --- a/elements/centos-minimal/element-provides +++ b/elements/centos-minimal/element-provides @@ -1 +1,2 @@ +base operating-system diff --git a/elements/centos-minimal/environment.d/10-centos-distro-name.bash b/elements/centos-minimal/environment.d/10-centos-distro-name.bash index 16184a3f0..7309b3840 100644 --- a/elements/centos-minimal/environment.d/10-centos-distro-name.bash +++ b/elements/centos-minimal/environment.d/10-centos-distro-name.bash @@ -1 +1,2 @@ -export DISTRO_NAME=centos7 +export DISTRO_NAME=centos +export DIB_RELEASE=${DIB_RELEASE:-7} diff --git a/elements/centos-minimal/packages/centos-7.packages b/elements/centos-minimal/packages/centos-7.packages deleted file mode 100644 index 725762270..000000000 --- a/elements/centos-minimal/packages/centos-7.packages +++ /dev/null @@ -1,119 +0,0 @@ -# -# packages which we will need to download for a minimal installation for -# CentOS 7.x -# - -audit-libs -basesystem -bash -binutils -bzip2-libs -chkconfig -cracklib -cracklib-dicts -crontabs -coreutils -libdb -device-mapper -e2fsprogs -e2fsprogs-libs -elfutils-libelf -ethtool -expat -file-libs -filesystem -findutils -gawk -gdbm -glib2 -glibc -glibc-common -grep -info -initscripts -iputils -keyutils-libs -krb5-libs -libacl -libattr -libcap -libcom_err -libgcc -libidn -libselinux -libsepol -libstdc++ -libsysfs -libgcrypt -dbus-libs -libcurl -lua -libutempter -libxml2 -libxml2-python -logrotate -lsof -man-pages -m2crypto -mcstrans -mlocate -ncurses -ncurses-libs -neon -net-tools -nss -nss-sysinit -nss-softokn -nss-softokn-freebl -openldap -libssh2 -cyrus-sasl-lib -nss-util -nspr -openssl-libs -pam -passwd -libuser -ustr -pcre -popt -procps-ng -psmisc -pygpgme -python -python-libs -python-pycurl -python-iniparse -python-urlgrabber -readline -rpm -rpm-libs -rpm-python -sed -setup -shadow-utils -sudo -centos-release -sqlite -rsyslog -tzdata -util-linux -xz -xz-libs -yum -yum-plugin-fastestmirror -yum-plugin-keys -yum-plugin-protectbase -yum-metadata-parser -yum-utils -zlib -libffi -libsemanage -libblkid -libmount -device-mapper-libs -libestr -gmp -json-c -libss -libuuid diff --git a/elements/centos-minimal/pkg-map b/elements/centos-minimal/pkg-map deleted file mode 100644 index 53ace5601..000000000 --- a/elements/centos-minimal/pkg-map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "family": { - "redhat": { - "lsb_release": "redhat-lsb", - } - } -} diff --git a/elements/centos-minimal/root.d/08-rinse b/elements/centos-minimal/root.d/08-rinse deleted file mode 100755 index 5996ff043..000000000 --- a/elements/centos-minimal/root.d/08-rinse +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -# -# Copyright 2014 Hewlett-Packard Development Company, L.P. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# - -if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then - set -x -fi -set -eu -set -o pipefail - -if [ -f ${TARGET_ROOT}/.extra_settings ] ; then - . ${TARGET_ROOT}/.extra_settings -fi -# Override global DISTRO_NAME, because centos7 does not work for rinse -DISTRO_NAME=centos -DIB_RELEASE=${DIB_RELEASE:-7} -DIB_RINSE_EXTRA_ARGS=${DIB_RINSE_EXTRA_ARGS:-} -RINSE_TARBALL=$DIB_IMAGE_CACHE/rinse-${DISTRO_NAME}-${DIB_RELEASE}-${ARCH}.tar.gz -DIB_DISTRIBUTION_MIRROR=${DIB_DISTRIBUTION_MIRROR:-http://mirror.centos.org/centos/7/os/x86_64/Packages/} -http_proxy=${http_proxy:-} - -if [ -n "$DIB_OFFLINE" -o -n "${DIB_CENTOS_USE_RINSE_CACHE:-}" ] && [ -f $RINSE_TARBALL ] ; then - echo $RINSE_TARBALL found in cache. Using. - sudo tar -C $TARGET_ROOT --numeric-owner -xzf $RINSE_TARBALL -else - - sudo sh -c "http_proxy=$http_proxy rinse \ - --mirror $DIB_DISTRIBUTION_MIRROR \ - --pkgs-dir $TMP_HOOKS_PATH/packages \ - --arch $ARCH \ - --distribution $DISTRO_NAME-$DIB_RELEASE \ - --directory $TARGET_ROOT \ - $DIB_RINSE_EXTRA_ARGS" - - echo "Customizing result for cloud use" - ( - cd $TARGET_ROOT - # effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb --keep-services "$target" - # locales - sudo rm -rf usr/{{lib,share}/locale,{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive} - # docs - sudo rm -rf usr/share/{man,doc,info,gnome/help} - # cracklib - sudo rm -rf usr/share/cracklib - # i18n - sudo rm -rf usr/share/i18n - # yum cache - sudo rm -rf var/cache/yum - sudo mkdir -p --mode=0755 var/cache/yum - # sln - sudo rm -rf sbin/sln - # ldconfig - sudo rm -rf etc/ld.so.cache var/cache/ldconfig - sudo mkdir -p --mode=0755 var/cache/ldconfig - - # allow networking init scripts inside the container to work without extra steps - cat << EOF | sudo tee etc/sysconfig/network > /dev/null -NETWORKING=yes -NETWORKING_IPV6=yes -NOZEROCONF=yes -EOF - - for interface in eth0 eth1; do - cat << EOF | sudo tee etc/sysconfig/network-scripts/ifcfg-$interface > /dev/null -DEVICE=eth0 -BOOTPROTO=dhcp -ONBOOT=on -EOF - done - ) - - sudo rm -f $TARGET_ROOT/*rpm - sudo umount $TARGET_ROOT/proc - sudo umount $TARGET_ROOT/sys - cat << EOF | sudo tee ${TARGET_ROOT}/etc/fstab > /dev/null -proc /proc proc nodev,noexec,nosuid 0 0 -LABEL=${DIB_ROOT_LABEL} / ext4 errors=remount-ro 0 1 -EOF - - # The filesystem package as shipped is broken. For reasons I don't fully - # understand, rinse installs files into proper dirs, but subsequent RPM - # operations expect these locations to be symlinks. If this next block - # is not executed, yum installs or updates will fail with a cryptic cpio - # failure. Moving the files in /sbin and /lib64 to /usr/sbin and /usr/lib64 - # and then making symlinks makes rpm happy. - for broken in lib64 sbin ; do - sudo cp -a $TARGET_ROOT/$broken/* $TARGET_ROOT/usr/$broken - sudo rm -rf $TARGET_ROOT/$broken - sudo ln -s usr/$broken $TARGET_ROOT/$broken - done - - echo Caching rinse result in $RINSE_TARBALL - sudo tar --numeric-owner -C $TARGET_ROOT -zcf $RINSE_TARBALL --exclude='./tmp/*' . -fi - -sudo rm -f ${TARGET_ROOT}/.extra_settings diff --git a/elements/centos-minimal/yum.repos.d/yum.repo b/elements/centos-minimal/yum.repos.d/yum.repo new file mode 100644 index 000000000..3085f0894 --- /dev/null +++ b/elements/centos-minimal/yum.repos.d/yum.repo @@ -0,0 +1,6 @@ +[centos] +name=CentOS-$releasever - Base +mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os +gpgcheck=0 +#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ +#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 diff --git a/elements/vm/finalise.d/51-bootloader b/elements/vm/finalise.d/51-bootloader index c2a8e587b..9ca83eadd 100755 --- a/elements/vm/finalise.d/51-bootloader +++ b/elements/vm/finalise.d/51-bootloader @@ -142,7 +142,7 @@ function install_grub2 { sed -i -e 's/\(^GRUB_CMDLINE_LINUX.*\)"$/\1 nofb nomodeset vga=normal"/' /etc/default/grub GRUB_MKCONFIG=update-grub ;; - 'fedora'|'centos7') + 'fedora'|'centos7'|'centos') echo 'GRUB_CMDLINE_LINUX="nofb nomodeset vga=normal"' >>/etc/default/grub ;; 'opensuse')