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 <greg@greghaynes.net>

Change-Id: I15275d821781171c118f21aa0c0bca55f65a65b3
This commit is contained in:
Monty Taylor 2015-03-22 13:45:07 -04:00
parent c67ab571cb
commit eadd79c2cb
9 changed files with 17 additions and 244 deletions

View file

@ -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.

View file

@ -1,4 +1 @@
dib-run-parts
redhat-common
rpm-distro
yum
yum-minimal

View file

@ -1 +1,2 @@
base
operating-system

View file

@ -1 +1,2 @@
export DISTRO_NAME=centos7
export DISTRO_NAME=centos
export DIB_RELEASE=${DIB_RELEASE:-7}

View file

@ -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

View file

@ -1,7 +0,0 @@
{
"family": {
"redhat": {
"lsb_release": "redhat-lsb",
}
}
}

View file

@ -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

View file

@ -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

View file

@ -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')