diff --git a/bin/disk-image-create b/bin/disk-image-create index 100c2f46c..85ac790a9 100755 --- a/bin/disk-image-create +++ b/bin/disk-image-create @@ -58,6 +58,7 @@ for arg do IMAGE_ELEMENT="$IMAGE_ELEMENT $arg" ; done source $_LIB/img-defaults source $_LIB/common-functions source $_LIB/img-functions +source $_LIB/elements-functions IMAGE_ELEMENT=$($SCRIPT_HOME/element-info --expand-dependencies $IMAGE_ELEMENT) @@ -92,6 +93,7 @@ sudo mkfs -F -t $FS_TYPE -L cloudimg-rootfs ${IMAGE_BLOCK_DEVICE} mount_tmp_image ${IMAGE_BLOCK_DEVICE} create_base +copy_elements_lib run_d extra-data do_pre_install do_extra_package_install diff --git a/elements/base/install.d/00-baseline-environment b/elements/base/install.d/00-baseline-environment index 6438bc7d4..e8b965d3e 100755 --- a/elements/base/install.d/00-baseline-environment +++ b/elements/base/install.d/00-baseline-environment @@ -3,4 +3,6 @@ set -e -apt-get -y install linux-image-generic vlan open-iscsi +source /lib/diskimage-builder/elements-functions + +install_packages linux-image-generic vlan open-iscsi diff --git a/elements/base/pre-install.d/01-baseline-tools b/elements/base/pre-install.d/01-baseline-tools index c30c398ee..1faed3235 100755 --- a/elements/base/pre-install.d/01-baseline-tools +++ b/elements/base/pre-install.d/01-baseline-tools @@ -3,6 +3,8 @@ set -e +source /lib/diskimage-builder/elements-functions + apt-get -y update -apt-get -y install python-software-properties language-pack-en +install_packages python-software-properties language-pack-en add-apt-repository -y ppa:tripleo/demo diff --git a/elements/devstack/install.d/52-image-toolchain b/elements/devstack/install.d/52-image-toolchain index 058a2dfeb..69a5edc0c 100755 --- a/elements/devstack/install.d/52-image-toolchain +++ b/elements/devstack/install.d/52-image-toolchain @@ -6,7 +6,9 @@ set -e set -o xtrace -apt-get -y install git +source /lib/diskimage-builder/elements-functions + +install_packages git if [ -n "$http_proxy" ]; then sudo -Hiu stack git config --global http.proxy $http_proxy fi diff --git a/elements/devstack/install.d/53-devstack b/elements/devstack/install.d/53-devstack index 0829e4a1c..03dffb6b4 100755 --- a/elements/devstack/install.d/53-devstack +++ b/elements/devstack/install.d/53-devstack @@ -4,7 +4,9 @@ set -e set -o xtrace -apt-get -y install git +source /lib/diskimage-builder/elements-functions + +install_packages git if [ -n "$http_proxy" ]; then sudo -Hiu stack git config --global http.proxy $http_proxy fi diff --git a/elements/devstack/install.d/97-haveged b/elements/devstack/install.d/97-haveged index dcfaf9652..6d43d17de 100755 --- a/elements/devstack/install.d/97-haveged +++ b/elements/devstack/install.d/97-haveged @@ -4,4 +4,6 @@ set -e set -o xtrace -apt-get -y install haveged +source /lib/diskimage-builder/elements-functions + +install_packages haveged diff --git a/elements/glance-api/install.d/05-glance-api b/elements/glance-api/install.d/05-glance-api index 82d867f86..844c203e7 100755 --- a/elements/glance-api/install.d/05-glance-api +++ b/elements/glance-api/install.d/05-glance-api @@ -5,7 +5,9 @@ set -e set -o xtrace -DEBIAN_FRONTEND=noninteractive apt-get -y install \ +source /lib/diskimage-builder/elements-functions + +install_packages python-pip git-core python-setuptools python-dev python-lxml python-netaddr \ python-pastescript python-pastedeploy python-paste python-sqlalchemy \ python-greenlet python-routes python-simplejson python-webob rabbitmq-server @@ -30,4 +32,3 @@ cp $GLANCE_ROOT/etc/glance-api.conf /etc/glance cp $GLANCE_ROOT/etc/policy.json /etc/glance cp $GLANCE_ROOT/etc/glance-api-paste.ini /etc/glance cp $GLANCE_ROOT/etc/logging.cnf.sample /etc/glance/logging.conf - diff --git a/elements/heat-jeos/install.d/05-heat-jeos b/elements/heat-jeos/install.d/05-heat-jeos index ff2d906a7..939eead19 100755 --- a/elements/heat-jeos/install.d/05-heat-jeos +++ b/elements/heat-jeos/install.d/05-heat-jeos @@ -2,6 +2,8 @@ set -uex +source /lib/diskimage-builder/elements-functions + CFN_TOOLS_ROOT=/opt/aws/bin # Heat hard codes this HEAT_API_SOURCE=https://github.com/heat-api/heat-jeos.git @@ -9,7 +11,7 @@ HEAT_API_SOURCE=https://github.com/heat-api/heat-jeos.git OS_ROOT=/opt/stack JEOS_ROOT=$OS_ROOT/heat-jeos -DEBIAN_FRONTEND=noninteractive apt-get -y install git-core python-psutil +install_packages git-core python-psutil mkdir -p $OS_ROOT git clone $HEAT_API_SOURCE $JEOS_ROOT diff --git a/elements/heat-jeos/install.d/10-ec2-user b/elements/heat-jeos/install.d/10-ec2-user index 19b736c38..4f9e985fa 100755 --- a/elements/heat-jeos/install.d/10-ec2-user +++ b/elements/heat-jeos/install.d/10-ec2-user @@ -4,6 +4,8 @@ set -uex +source /lib/diskimage-builder/elements-functions + # Setup ec2-user as expected by HEAT if ! getent passwd ec2-user ; then useradd -m -G admin ec2-user -s /bin/bash @@ -23,4 +25,4 @@ Pin: release o=LP-PPA-tripleo-demo Pin-Priority: 900 EOF # Should pull from demo PPA if cloud-init exists there. -apt-get -y install cloud-init +install_packages cloud-init diff --git a/elements/hwdiscovery/install.d/10-hwinfo b/elements/hwdiscovery/install.d/10-hwinfo index 08cb52def..b406cebd6 100644 --- a/elements/hwdiscovery/install.d/10-hwinfo +++ b/elements/hwdiscovery/install.d/10-hwinfo @@ -4,4 +4,5 @@ set -e set -o xtrace -apt-get -y install hwinfo +source /lib/diskimage-builder/elements-functions +install_packages hwinfo diff --git a/elements/icinga-core/install.d/05-icinga-core b/elements/icinga-core/install.d/05-icinga-core index 8493a05a3..a37e74948 100755 --- a/elements/icinga-core/install.d/05-icinga-core +++ b/elements/icinga-core/install.d/05-icinga-core @@ -5,4 +5,5 @@ set -e set -o xtrace -DEBIAN_FRONTEND=noninteractive apt-get -y install icinga-core +source /lib/diskimage-builder/elements-functions +install_packages icinga-core diff --git a/elements/icinga-web/install.d/06-icinga-web b/elements/icinga-web/install.d/06-icinga-web index 404829f5e..2f1264bb8 100755 --- a/elements/icinga-web/install.d/06-icinga-web +++ b/elements/icinga-web/install.d/06-icinga-web @@ -5,5 +5,6 @@ set -e set -o xtrace -DEBIAN_FRONTEND=noninteractive apt-get -y install icinga-web icinga-cgi +source /lib/diskimage-builder/elements-functions +install_packages icinga-web icinga-cgi diff --git a/elements/jenkins/install.d/10-jenkins b/elements/jenkins/install.d/10-jenkins index a30c39236..7e26a4443 100755 --- a/elements/jenkins/install.d/10-jenkins +++ b/elements/jenkins/install.d/10-jenkins @@ -3,7 +3,9 @@ set -e set -o xtrace -apt-get -y install jenkins +source /lib/diskimage-builder/elements-functions + +install_packages jenkins # jenkins installs into /var/lib/jenkins which is rather restrictive. mv /var/lib/jenkins /mnt/ diff --git a/elements/keystone/install.d/05-keystone b/elements/keystone/install.d/05-keystone index 6bada6fee..91e6a57fe 100755 --- a/elements/keystone/install.d/05-keystone +++ b/elements/keystone/install.d/05-keystone @@ -5,7 +5,9 @@ set -e set -o xtrace -DEBIAN_FRONTEND=noninteractive apt-get -y install \ +source /lib/diskimage-builder/elements-functions + +install_packages \ python-pip git-core python-setuptools python-dev python-lxml python-netaddr \ python-pastescript python-pastedeploy python-paste python-sqlalchemy \ python-greenlet python-routes python-simplejson python-webob diff --git a/elements/mysql/install.d/10-mysql b/elements/mysql/install.d/10-mysql index 129fc9fc4..535aec298 100755 --- a/elements/mysql/install.d/10-mysql +++ b/elements/mysql/install.d/10-mysql @@ -5,5 +5,6 @@ set -e set -o xtrace +source /lib/diskimage-builder/elements-functions #DEBIAN_FRONTEND=noninteractive apt-get -y install sysstat mytop percona-toolkit percona-server-server-5.5 percona-server-client-5.5 -DEBIAN_FRONTEND=noninteractive apt-get -y install sysstat mytop percona-toolkit mysql-server-5.5 mysql-client-5.5 +install_packages sysstat mytop percona-toolkit mysql-server-5.5 mysql-client-5.5 diff --git a/elements/mysql/install.d/97-haveged b/elements/mysql/install.d/97-haveged index dcfaf9652..1c166e521 100755 --- a/elements/mysql/install.d/97-haveged +++ b/elements/mysql/install.d/97-haveged @@ -4,4 +4,5 @@ set -e set -o xtrace -apt-get -y install haveged +source /lib/diskimage-builder/elements-functions +install_packages haveged diff --git a/elements/nova-api/install.d/05-nova-api b/elements/nova-api/install.d/05-nova-api index 80752f684..3bb653bcc 100755 --- a/elements/nova-api/install.d/05-nova-api +++ b/elements/nova-api/install.d/05-nova-api @@ -1,9 +1,11 @@ #!/bin/sh set -eux +source /lib/diskimage-builder/elements-functions + useradd -G admin -m nova -s /bin/false -DEBIAN_FRONTEND=noninteractive apt-get -y install \ +install_packages \ python-pip git-core python-setuptools python-dev python-lxml python-netaddr \ python-pastescript python-pastedeploy python-paste python-sqlalchemy \ python-greenlet python-routes python-simplejson python-webob rabbitmq-server diff --git a/elements/nova-vm/install.d/05-controller-code-deps b/elements/nova-vm/install.d/05-controller-code-deps index 08ce8ef73..769239720 100755 --- a/elements/nova-vm/install.d/05-controller-code-deps +++ b/elements/nova-vm/install.d/05-controller-code-deps @@ -5,4 +5,5 @@ set -e set -o xtrace -DEBIAN_FRONTEND=noninteractive apt-get -y install haproxy rabbitmq-server mysql-server ntp dkms +source /lib/diskimage-builder/elements-functions +install_packages haproxy rabbitmq-server mysql-server ntp dkms diff --git a/elements/nova-vm/install.d/10-controller-openstack-deps b/elements/nova-vm/install.d/10-controller-openstack-deps index 83947cd67..0d2cbff13 100755 --- a/elements/nova-vm/install.d/10-controller-openstack-deps +++ b/elements/nova-vm/install.d/10-controller-openstack-deps @@ -5,5 +5,6 @@ set -e set -o xtrace -apt-get -y install keystone glance nova-api nova-cert nova-common nova-scheduler python-nova python-novaclient nova-consoleauth novnc nova-novncproxy cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms python-cinderclient nova-network +source /lib/diskimage-builder/elements-functions +install_packages keystone glance nova-api nova-cert nova-common nova-scheduler python-nova python-novaclient nova-consoleauth novnc nova-novncproxy cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms python-cinderclient nova-network diff --git a/elements/quantum-api/install.d/05-quantum-api b/elements/quantum-api/install.d/05-quantum-api index 300c70c85..59a58a3c9 100755 --- a/elements/quantum-api/install.d/05-quantum-api +++ b/elements/quantum-api/install.d/05-quantum-api @@ -2,9 +2,11 @@ set -e set -o xtrace +source /lib/diskimage-builder/elements-functions + useradd -G admin -m quantum -s /bin/false -DEBIAN_FRONTEND=noninteractive apt-get -y install \ +install_packages \ python-pip git-core python-setuptools python-dev python-lxml python-netaddr \ python-pastescript python-pastedeploy python-paste python-sqlalchemy \ python-greenlet python-routes python-simplejson python-webob rabbitmq-server diff --git a/elements/salt-master/install.d/10-salt-master b/elements/salt-master/install.d/10-salt-master index a15e4afdf..c1a816eca 100755 --- a/elements/salt-master/install.d/10-salt-master +++ b/elements/salt-master/install.d/10-salt-master @@ -1,7 +1,8 @@ -#!/bin/bash +B#!/bin/bash set -e set -o xtrace -apt-get -y install salt-master +source /lib/diskimage-builder/elements-functions +install_packages salt-master diff --git a/elements/salt-minion/install.d/10-salt-minion b/elements/salt-minion/install.d/10-salt-minion index a1529060a..01987213e 100755 --- a/elements/salt-minion/install.d/10-salt-minion +++ b/elements/salt-minion/install.d/10-salt-minion @@ -3,5 +3,6 @@ set -e set -o xtrace -apt-get -y install salt-minion +source /lib/diskimage-builder/elements-functions +install_packages salt-minion diff --git a/elements/swift/install.d/10-swift-deps b/elements/swift/install.d/10-swift-deps index ba0add107..4d2fa1d0c 100755 --- a/elements/swift/install.d/10-swift-deps +++ b/elements/swift/install.d/10-swift-deps @@ -5,5 +5,6 @@ set -e set -o xtrace -apt-get -y install swift rsync memcached python-netifaces python-xattr python-memcache +source /lib/diskimage-builder/elements-functions +install_packages swift rsync memcached python-netifaces python-xattr python-memcache diff --git a/lib/elements-functions b/lib/elements-functions new file mode 100644 index 000000000..78d0112c0 --- /dev/null +++ b/lib/elements-functions @@ -0,0 +1,24 @@ +# Copyright 2012 Hewlett-Packard Development Company, L.P. +# All Rights Reserved. +# +# 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. + +set -e + +# install_packages package [package ...] +function install_packages() { + DEBIAN_FRONTEND=noninteractive \ + http_proxy=$http_proxy https_proxy=$https_proxy \ + no_proxy=$no_proxy \ + apt-get --option "Dpkg::Options::=--force-confold" --assume-yes install "$@" +} diff --git a/lib/img-functions b/lib/img-functions index 8e6278c99..232079b75 100644 --- a/lib/img-functions +++ b/lib/img-functions @@ -42,7 +42,7 @@ function ensure_nbd () { NBD=`which qemu-nbd` || true if [ -z "$NBD" ]; then echo "Need qemu-nbd to build qcow2 files." - sudo apt-get install qemu-utils + sudo install_packages qemu-utils fi # prep nbd for mounting (lsmod | grep '^nbd ') || sudo modprobe nbd max_part=16 @@ -235,6 +235,11 @@ function do_install () { function do_extra_package_install () { # Install any packages that were requested with the -p command line option if [ "$INSTALL_PACKAGES" != "" ]; then - run_in_target apt-get -y install ${INSTALL_PACKAGES[@]} + run_in_target install_packages ${INSTALL_PACKAGES[@]} fi } + +function copy_elements_lib () { + sudo mkdir -p $TMP_MOUNT_PATH/lib/diskimage-builder + sudo cp $_LIB/elements-functions $TMP_MOUNT_PATH/lib/diskimage-builder +} \ No newline at end of file