diff --git a/diskimage_builder/elements/ubuntu-systemd-container/README.rst b/diskimage_builder/elements/ubuntu-systemd-container/README.rst new file mode 100644 index 000000000..22e751346 --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/README.rst @@ -0,0 +1,19 @@ +======================== +ubuntu-systemd-container +======================== + +The ``ubuntu-systemd-container`` element uses debootstrap for generating +a minimal image for use by machine containers. In contrast the ``ubuntu`` +element uses the cloud-image as the initial base and the ``ubuntu-minimal`` +builds an image to be used for hosts. + +By default this element creates the latest LTS release. The exact +setting can be found in the ``ubuntu-common`` element's ``environment.d`` +directory in the variable ``DIB_RELEASE``. If a different release of +Ubuntu should be created, the variable ``DIB_RELEASE`` can be set +appropriately. + +Note that this element installs ``systemd-sysv`` as the init system for +18.04+. + +.. element_deps:: diff --git a/diskimage_builder/elements/ubuntu-systemd-container/element-deps b/diskimage_builder/elements/ubuntu-systemd-container/element-deps new file mode 100644 index 000000000..792d9bffc --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/element-deps @@ -0,0 +1,2 @@ +debootstrap +ubuntu-common diff --git a/diskimage_builder/elements/ubuntu-systemd-container/element-provides b/diskimage_builder/elements/ubuntu-systemd-container/element-provides new file mode 100644 index 000000000..a72e04969 --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/element-provides @@ -0,0 +1 @@ +operating-system diff --git a/diskimage_builder/elements/ubuntu-systemd-container/root.d/75-ubuntu-minimal-baseinstall b/diskimage_builder/elements/ubuntu-systemd-container/root.d/75-ubuntu-minimal-baseinstall new file mode 100755 index 000000000..237493e9d --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/root.d/75-ubuntu-minimal-baseinstall @@ -0,0 +1,65 @@ +#!/bin/bash +# Copyright (c) 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:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# We should manage this in a betterer way +sudo bash -c "cat << EOF >$TARGET_ROOT/etc/apt/sources.list +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE ${DIB_DEBIAN_COMPONENTS//,/ } +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE-updates ${DIB_DEBIAN_COMPONENTS//,/ } +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE-backports ${DIB_DEBIAN_COMPONENTS//,/ } +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE-security ${DIB_DEBIAN_COMPONENTS//,/ } +EOF" + +sudo mount -t proc none $TARGET_ROOT/proc +sudo mount -t sysfs none $TARGET_ROOT/sys +trap "sudo umount $TARGET_ROOT/proc; sudo umount $TARGET_ROOT/sys" EXIT + +apt_get="sudo chroot $TARGET_ROOT /usr/bin/apt-get" # dib-lint: safe_sudo + +# Need to update to retrieve the signed Release file +$apt_get update + +$apt_get clean +$apt_get dist-upgrade -y + +to_install="" + +# pre-bionic (18.04) brought this in via debootstrap, but init +# dependencies have narrowed in the container world, so now we add it +# explicitly here so it's brought in early. +if [ $DIB_RELEASE != "trusty" ] && [ $DIB_RELEASE != "xenial" ]; then + to_install+="systemd-sysv " +fi + +# default required +to_install+="sudo " # dib-lint: safe_sudo + +if [ "$DIB_PYTHON_VERSION" == "2" ]; then + to_install+="python " +elif [ "$DIB_PYTHON_VERSION" == "3" ]; then + to_install+="python3 " +else + echo "ERROR: DIB_PYTHON_VERSION is '$DIB_PYTHON_VERSION' but needs to be 2 or 3" + exit 1 +fi + +$apt_get install -y $to_install diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/README.rst b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/README.rst new file mode 100644 index 000000000..c567ecf0c --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/README.rst @@ -0,0 +1 @@ +Verify we can build a ubuntu-systemd-container image. diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/element-deps b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/element-deps new file mode 100644 index 000000000..5d58b59ff --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/element-deps @@ -0,0 +1 @@ +openstack-ci-mirrors diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/environment.d/10-set-distro.bash b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/environment.d/10-set-distro.bash new file mode 100644 index 000000000..ba2fb47d2 --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/environment.d/10-set-distro.bash @@ -0,0 +1 @@ +export DIB_RELEASE=bionic diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/test-output-formats b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/test-output-formats new file mode 100644 index 000000000..42f2fb726 --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/bionic-build-succeeds/test-output-formats @@ -0,0 +1 @@ +tar diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/README.rst b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/README.rst new file mode 100644 index 000000000..c567ecf0c --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/README.rst @@ -0,0 +1 @@ +Verify we can build a ubuntu-systemd-container image. diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/element-deps b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/element-deps new file mode 100644 index 000000000..5d58b59ff --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/element-deps @@ -0,0 +1 @@ +openstack-ci-mirrors diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/environment.d/10-set-distro.bash b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/environment.d/10-set-distro.bash new file mode 100644 index 000000000..02d902a4b --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/trusty-build-succeeds/environment.d/10-set-distro.bash @@ -0,0 +1 @@ +export DIB_RELEASE=trusty diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/README.rst b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/README.rst new file mode 100644 index 000000000..c567ecf0c --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/README.rst @@ -0,0 +1 @@ +Verify we can build a ubuntu-systemd-container image. diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/element-deps b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/element-deps new file mode 100644 index 000000000..5d58b59ff --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/element-deps @@ -0,0 +1 @@ +openstack-ci-mirrors diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/environment.d/10-set-distro.bash b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/environment.d/10-set-distro.bash new file mode 100644 index 000000000..7cc2c8877 --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/environment.d/10-set-distro.bash @@ -0,0 +1 @@ +export DIB_RELEASE=xenial diff --git a/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/test-output-formats b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/test-output-formats new file mode 100644 index 000000000..42f2fb726 --- /dev/null +++ b/diskimage_builder/elements/ubuntu-systemd-container/test-elements/xenial-build-succeeds/test-output-formats @@ -0,0 +1 @@ +tar