From: Jeremy Mordkoff Date: Fri, 15 Jul 2016 19:43:01 +0000 (-0400) Subject: new RIFT.ware installation script X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F45%2F245%2F1;p=osm%2Friftware.git new RIFT.ware installation script Signed-off-by: Jeremy Mordkoff --- diff --git a/.gitignore b/.gitignore index f3986a4..0498279 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,6 @@ scripts/rift-scripts.sh.in scripts/rpm/ scripts/system scripts/test/ -scripts/util/ scripts/packaging/ .gitmodules.deps.orig .gitmodules.orig diff --git a/scripts/util/TEST_OSM b/scripts/util/TEST_OSM new file mode 100644 index 0000000..42913ec --- /dev/null +++ b/scripts/util/TEST_OSM @@ -0,0 +1,27 @@ +#!/bin/bash + + +CONTAINER=${1:-osm} + +if [ ! -f riftware_install.sh ]; then + wget -O riftware_install.sh i'https://osm.etsi.org/gitweb/?p=osm/riftware.git;a=blob_plain;f=scripts/util/riftware_install.sh;hb=HEAD' + echo -e '\n\n please review riftware_install.sh and then run this script again\n\n' + exit 0 +fi + + +echo -e '\n\n using container name $CONTAINER \n\n' +lxc launch fc20 $CONTAINER + + +lxc file push riftware_install.sh ${CONTAINER}/root/ +while ! lxc exec ${CONTAINER} ifconfig eth0 | grep -q 'inet '; do + echo waiting for network + sleep 1 +done +lxc exec ${CONTAINER} ifconfig eth0 +sleep 1 +lxc exec ${CONTAINER} -- bash -xe /root/riftware_install.sh + +ADDRESS=$(lxc exec ${CONTAINER} ifconfig eth0 | awk '/inet / { print $2 }') +echo "installation complete. Open a browser on https://${ADDRESS}:8443" diff --git a/scripts/util/host-platform b/scripts/util/host-platform new file mode 100755 index 0000000..862b2b1 --- /dev/null +++ b/scripts/util/host-platform @@ -0,0 +1,16 @@ +#!/bin/bash + +# Find the platform and return a short name + +PLATFORM=$(python -mplatform) +if [[ ! $PLATFORM ]]; then + echo "Cannot find platform using python -mplatform" >&2 + exit 1 +fi + +case $PLATFORM in + *Ubuntu-16.04*) echo ub16; exit;; + *fedora-20*) echo fc20; exit;; + *fedora-23*) echo fc23; exit;; + *) echo "Unknown platform: $PLATFORM" >&2 ; exit 1;; +esac diff --git a/scripts/util/riftware_install.sh b/scripts/util/riftware_install.sh new file mode 100644 index 0000000..560d4c9 --- /dev/null +++ b/scripts/util/riftware_install.sh @@ -0,0 +1,46 @@ +#!/bin/bash + + + +#REPO_URL=jmordkof@jeremy-pc:/home/jmordkof/workspace/osm/riftware +REPO_URL=https://osm.etsi.org/gerrit/osm/riftware.git +USE_RIFT_MIRRORS=true + +set -e +echo -e '\n\n=========== Installing base packages ========\n\n' +yum install -y git curl python3 screen which wget + +echo -e '\n\n=========== Cloning RIFT.ware ========\n\n' +if [ -e riftware ]; then + cd riftware + git pull +else + git clone $REPO_URL riftware + cd riftware +fi + +echo -e '\n\n=========== Setting up YUM repositories ========\n\n' +if $USE_RIFT_MIRRORS; then + rm -f /etc/yum.repos.d/* + cp scripts/vm_image/riftware-mirrors.repo /etc/yum.repos.d/ +fi +cp scripts/vm_image/riftware.repo /etc/yum.repos.d/ +yum clean all +yum makecache + +echo -e '\n\n=========== Installing prerequisites ========\n\n' +./rift-shell -r -e -- ./scripts/vm_image/mkcontainer --no-repo-file --modes ui + +echo -e '\n\n=========== Installing RIFT.ware Launchpad ========\n\n' +yum install -y riftware-launchpad +echo -e '\n\n=========== Starting RIFT.ware Launchpad ========\n\n' +systemctl start rwlp + + + + + + + + + diff --git a/scripts/vm_image/README b/scripts/vm_image/README new file mode 100644 index 0000000..0ea2fe8 --- /dev/null +++ b/scripts/vm_image/README @@ -0,0 +1,22 @@ + + +vm_image scripts + +LXC instructions +as of this writing, this code is only in branch lezz-mkvmimg + +create a fc20 image. Default name is fc20 + wget http://repo.riftio.com/releases/open.riftio.com/OSM/fc20.tar + lxc image import fc20.tar --alias fc20 + +extract two files from git + ./scripts/vm_image/scripts/init_container + ./scripts/vm_image/scripts/build_rift_runtime + +execute build_rift_runtime + bash ./build_rift_runtime + + + + + diff --git a/scripts/vm_image/base.config.sh b/scripts/vm_image/base.config.sh index 892648e..2515b4f 100644 --- a/scripts/vm_image/base.config.sh +++ b/scripts/vm_image/base.config.sh @@ -1,23 +1,8 @@ -# -# Copyright 2016 RIFT.IO Inc -# -# 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. -# echo "export LC_ALL=en_US.UTF-8" >>$STAGING/etc/environment if [ -e ${STAGING}/etc/selinux/config ]; then sed -i 's,^\(SELINUX=\).*,\1permissive,' ${STAGING}/etc/selinux/config || die "sed failed" fi -cp $RIFTROOT/scripts/setup/skel/etc/sysctl.d/riftware.conf $STAGING/etc/sysctl.d/ +cp $RIFT_ROOT/scripts/setup/skel/etc/sysctl.d/riftware.conf $STAGING/etc/sysctl.d/ cat >> ${STAGING}/etc/security/limits.d/90-rift.conf <> ${STAGING}/etc/security/limits.d/90-rift.conf <&2 + echo -e "=============================\n$*\n=============================" >&2 } fetch_seed() { - announce $FUNCNAME - if [ -f ${SEED_PATH} ]; then - return - fi - - if [[ ${SEED_URL} =~ ^http:// ]]; then - echo "curl ${SEED_URL}/${SEED} " - curl --location \ - --output ${SEED_PATH} \ - ${SEED_URL}/${SEED} \ - || die "Failed to download ${SEED_URL}/${SEED}" - elif [[ ${SEED_URL} =~ ^file:// ]]; then - cp ${SEED_URL#file:/}/${SEED} ${SEED_PATH} \ - || die "Failed to copy ${SEED_URL}/${SEED}" - else - die "Unknown resource type for seed url ${SEED_URL}" - fi + announce $FUNCNAME + if [ -f ${SEED_PATH} ]; then + return + fi + + if [[ ${SEED_URL} =~ ^http:// ]]; then + echo "curl ${SEED_URL}/${SEED} " + curl --location \ + --output ${SEED_PATH} \ + ${SEED_URL}/${SEED} \ + || die "Failed to download ${SEED_URL}/${SEED}" + elif [[ ${SEED_URL} =~ ^file:// ]]; then + cp ${SEED_URL#file:/}/${SEED} ${SEED_PATH} \ + || die "Failed to copy ${SEED_URL}/${SEED}" + else + die "Unknown resource type for seed url ${SEED_URL}" + fi } _find_free_nbd_node() { - local node - - for node in /dev/nbd[0-9]*; do - nbd-client -c $node >/dev/null 2>&1 - if [ $? -ne 1 ]; then - continue - fi - if [ ! -f /sys/block/${node##*/}/pid ]; then - echo ${node} - break - fi - done + local node + + for node in /dev/nbd[0-9]*; do + nbd-client -c $node >/dev/null 2>&1 + if [ $? -ne 1 ]; then + continue + fi + if [ ! -f /sys/block/${node##*/}/pid ]; then + echo ${node} + break + fi + done } setup() { - local nbd_dev - local mp - local tmp_mp - local rc - - announce $FUNCNAME - if ! lsmod | grep -q nbd; then - modprobe nbd max_devices=256 || die "Failed to modprobe nbd" - fi - - mkdir -p ${STAGING} 2>&1 - - nbd_dev=$(_find_free_nbd_node) - - if [ -z "${nbd_dev}" ]; then - die "Failed to find free nbd node" - fi - - echo "nbd_dev=${nbd_dev}" - - qemu-nbd -c ${nbd_dev} ${SEED_PATH}\ - || die "Failed to qemu-nbd ${SEED_PATH} on ${nbd_dev}" - _NBD_NODES="${_NBD_NODES} ${nbd_dev}" - kpartx -s -a ${nbd_dev} || die "kpartx ${nbd_dev} failed" - - tmp_mp=$(mktemp -d --tmpdir=${BUILDDIR}) - mp=/dev/mapper/${nbd_dev##*/}p1 - if ! mount ${mp} ${tmp_mp}; then - rmdir ${tmp_mp} - die "Failed to mount ${SEED_PATH} (${mp}) on ${tmp_mp})" - fi - if [ -n "REBUILD" ]; then - rsync -a ${tmp_mp}/ ${STAGING}/ - rc=$? - else - rsync -a --delete-after ${tmp_mp}/ ${STAGING}/ - rc=$? - fi - umount -f ${tmp_mp} - rmdir ${tmp_mp} - - if [ ${rc} -ne 0 ]; then - die "Failed to sync to ${STAGING}" - fi - - echo "Done syncing to ${STAGING}" - - for mp in sys proc dev; do - mount -o bind /${mp} ${STAGING}/${mp} || die "Failed to bind mount ${mp}" - _MOUNTS="${STAGING}/${mp} ${_MOUNTS}" - done - - cp -L /etc/resolv.conf ${STAGING}/etc/ - - # set up the default console for openstack - cp $RIFTROOT/scripts/vm/etc/default/grub $STAGING/etc/default/grub + local nbd_dev + local mp + local tmp_mp + local rc + + announce $FUNCNAME + if ! lsmod | grep -q nbd; then + modprobe nbd max_devices=256 || die "Failed to modprobe nbd" + fi + + mkdir -p ${STAGING} 2>&1 + + nbd_dev=$(_find_free_nbd_node) + + if [ -z "${nbd_dev}" ]; then + die "Failed to find free nbd node" + fi + + echo "nbd_dev=${nbd_dev}" + + qemu-nbd -c ${nbd_dev} ${SEED_PATH}\ + || die "Failed to qemu-nbd ${SEED_PATH} on ${nbd_dev}" + _NBD_NODES="${_NBD_NODES} ${nbd_dev}" + kpartx -s -a ${nbd_dev} || die "kpartx ${nbd_dev} failed" + + tmp_mp=$(mktemp -d --tmpdir=${BUILDDIR}) + mp=/dev/mapper/${nbd_dev##*/}p1 + if ! mount ${mp} ${tmp_mp}; then + rmdir ${tmp_mp} + die "Failed to mount ${SEED_PATH} (${mp}) on ${tmp_mp})" + fi + if [ -n "REBUILD" ]; then + rsync -a ${tmp_mp}/ ${STAGING}/ + rc=$? + else + rsync -a --delete-after ${tmp_mp}/ ${STAGING}/ + rc=$? + fi + umount -f ${tmp_mp} + rmdir ${tmp_mp} + + if [ ${rc} -ne 0 ]; then + die "Failed to sync to ${STAGING}" + fi + + echo "Done syncing to ${STAGING}" + + for mp in sys proc dev; do + mount -o bind /${mp} ${STAGING}/${mp} || die "Failed to bind mount ${mp}" + _MOUNTS="${STAGING}/${mp} ${_MOUNTS}" + done + + cp -L /etc/resolv.conf ${STAGING}/etc/ + + # set up the default console for openstack + cp $RIFT_ROOT/scripts/vm/etc/default/grub $STAGING/etc/default/grub } compress_qcow2() { - local dest - local src - - announce $FUNCNAME - - if ! [ -x "$(command -v virt-sparsify)" ]; then - echo "virt-sparsify is not installed, not compressing." - else - # save the big qcow - mv ${IMG_PREFIX}.qcow2 ${IMG_PREFIX}.orig.qcow2 + local dest + local src - src=${IMG_PREFIX}.orig.qcow2 - dest=${IMG_PREFIX}.qcow2 + announce $FUNCNAME - # zero fill the free space and compress the qcow2 - virt-sparsify --compress ${src} ${dest} + if ! [ -x "$(command -v virt-sparsify)" ]; then + echo "virt-sparsify is not installed, not compressing." + return + fi + temp=${IMG_PREFIX}.orig.qcow2 + orig=${IMG_PREFIX}.qcow2 - # we can safely remove the big qcow - rm -fv ${IMG_PREFIX}.orig.qcow2 - fi - -} - -pack_qcow2() { - local bind_mp - local img_size - #local sha # we need global - local dest - local nbd_dev - local p_dev - local tmp_mp - local rc - - announce $FUNCNAME - img_size=$(du --exclude='proc/*' --exclude='sys/*' -sk ${STAGING} | cut -f1) - img_size=$((img_size + ${_EXTRA_DISK_SPACE_K} + 500 * 1024)) - - dest=${IMG_PREFIX}.qcow2 - - echo "Setting up NBD:" - qemu-img create -f qcow2 ${dest} ${img_size}k - nbd_dev=$(_find_free_nbd_node) - - if [ -z "${nbd_dev}" ]; then - die "Failed to find free nbd node" - fi - - qemu-nbd -c ${nbd_dev} ${dest} || die "Failed to qemu-nbd ${dest} on ${nbd_dev}" - _NBD_NODES="${_NBD_NODES} ${nbd_dev}" - - echo "Partitioning and Formatting:" - echo ",," | sfdisk ${nbd_dev} || die "Failed to partition ${nbd_dev}" - kpartx -s -a ${nbd_dev} || die "kpartx ${nbd_dev} failed" - p_dev=/dev/mapper/${nbd_dev##*/}p1 - mkfs.ext4 -q ${p_dev} || die "Failed to mkfs ${p_dev}" - - tmp_mp=$(mktemp -d --tmpdir=${BUILDDIR}) - if ! mount ${p_dev} ${tmp_mp}; then - rmdir ${tmp_mp} - die "Filed to mount ${dest} on ${tmp_mp}" - fi - - #echo "PQ1) Checking" - #ls -all ${STAGING}/home/rift/scripts/ - #ls -all ${tmp_mp}/home/rift/scripts/ - - echo "Start Rsyncing..." - rsync -a --exclude='/sys/*' --exclude='/proc/*' ${STAGING}/ ${tmp_mp}/ + # zero fill the free space and compress the qcow2 + LIBGUESTFS_DEBUG=1 virt-sparsify --check-tmpdir fail --compress ${orig} ${temp} rc=$? - if [ ${rc} -ne 0 ]; then - umount -f ${tmp_mp} - die "Failed to sync from ${STAGING}" + if [ $rc -ne 0 ]; then + echo "Sparsify failed. rc=$rc" + echo "Check that /tmp has a lot of free space ... 40+GB" + return fi - echo "Done Rsyncing." - - echo "PQ2) Checking Scripts" - #ls -all ${STAGING}/home/rift/scripts/* - ls -all ${tmp_mp}/home/rift/scripts/* - - # I think this assumes the host is running the right release - # - for bind_mp in dev proc sys; do - mount -o bind /${bind_mp} ${tmp_mp}/${bind_mp} || die "Failed to bind mount ${tmp_mp}/${bind_mp}" - _MOUNTS="${_MOUNTS} ${tmp_mp}/${bind_mp}" - done - - # grub2 install isonly really needed for qcow2/kvm -- AWS uses grub - - chroot ${tmp_mp} $YUM install -y grub2 || die "Failed to yum install grub2" - chroot ${tmp_mp} grub2-mkconfig -o /boot/grub2/grub.cfg || die "Failed to create grub2 config" - chroot ${tmp_mp} grub2-set-default "Fedora, with Linux ${KERNEL_REV}" + + # can we safely remove the big qcow + if [ ! -s ${temp} ]; then + echo "sparsify failed: temp file not found" + fi - cat > ${tmp_mp}/boot/grub2/device.map <<-EOF - (hd0) ${nbd_dev} - EOF + echo success + echo original + ls -l ${orig} + echo new + ls -l ${temp} + rm -fv {$orig} + mv ${temp} ${orig} - if [ $RELEASE == 20 ]; then - chroot ${tmp_mp} grub2-install -f ${nbd_dev} || die "Failed to grub2-install" - else - chroot ${tmp_mp} grub2-install ${nbd_dev} || die "Failed to grub2-install" - fi - - cat > ${tmp_mp}/etc/fstab <<-EOF - /dev/vda1 / ext4 defaults,noatime 0 0 - EOF +} - cat > ${tmp_mp}/etc/rc.d/rc.local <<-EOF +pack_qcow2() { + local bind_mp + local img_size + #local sha # we need global + local dest + local nbd_dev + local p_dev + local tmp_mp + local rc + + announce $FUNCNAME + img_size=$(du --exclude='proc/*' --exclude='sys/*' -sk ${STAGING} | cut -f1) + img_size=$((img_size + ${_EXTRA_DISK_SPACE_K} + 500 * 1024)) + + dest=${IMG_PREFIX}.qcow2 + + echo "Setting up NBD:" + qemu-img create -f qcow2 ${dest} ${img_size}k + nbd_dev=$(_find_free_nbd_node) + + if [ -z "${nbd_dev}" ]; then + die "Failed to find free nbd node" + fi + + qemu-nbd -c ${nbd_dev} ${dest} || die "Failed to qemu-nbd ${dest} on ${nbd_dev}" + _NBD_NODES="${_NBD_NODES} ${nbd_dev}" + + echo "Partitioning and Formatting:" + echo ",," | sfdisk ${nbd_dev} || die "Failed to partition ${nbd_dev}" + kpartx -s -a ${nbd_dev} || die "kpartx ${nbd_dev} failed" + p_dev=/dev/mapper/${nbd_dev##*/}p1 + mkfs.ext4 -q ${p_dev} || die "Failed to mkfs ${p_dev}" + + tmp_mp=$(mktemp -d --tmpdir=${BUILDDIR}) + if ! mount ${p_dev} ${tmp_mp}; then + rmdir ${tmp_mp} + die "Filed to mount ${dest} on ${tmp_mp}" + fi + + #echo "PQ1) Checking" + #ls -all ${STAGING}/home/rift/scripts/ + #ls -all ${tmp_mp}/home/rift/scripts/ + + echo "Start Rsyncing..." + rsync -a --exclude='/sys/*' --exclude='/proc/*' ${STAGING}/ ${tmp_mp}/ + rc=$? + if [ ${rc} -ne 0 ]; then + umount -f ${tmp_mp} + die "Failed to sync from ${STAGING}" + fi + echo "Done Rsyncing." + + echo "PQ2) Checking Scripts" + #ls -all ${STAGING}/home/rift/scripts/* + ls -all ${tmp_mp}/home/rift/scripts/* + + # I think this assumes the host is running the right release + # + for bind_mp in dev proc sys; do + mount -o bind /${bind_mp} ${tmp_mp}/${bind_mp} || die "Failed to bind mount ${tmp_mp}/${bind_mp}" + _MOUNTS="${_MOUNTS} ${tmp_mp}/${bind_mp}" + done + + # grub2 install isonly really needed for qcow2/kvm -- AWS uses grub + + chroot ${tmp_mp} $YUM install -y grub2 || die "Failed to yum install grub2" + chroot ${tmp_mp} grub2-mkconfig -o /boot/grub2/grub.cfg || die "Failed to create grub2 config" + chroot ${tmp_mp} grub2-set-default "Fedora, with Linux ${KERNEL_REV}" + + cat > ${tmp_mp}/boot/grub2/device.map <<-EOF + (hd0) ${nbd_dev} +EOF + + if [ $RELEASE == 20 ]; then + chroot ${tmp_mp} grub2-install -f ${nbd_dev} || die "Failed to grub2-install" + else + chroot ${tmp_mp} grub2-install ${nbd_dev} || die "Failed to grub2-install" + fi + + cat > ${tmp_mp}/etc/fstab <<-EOF + /dev/vda1 / ext4 defaults,noatime 0 0 +EOF + + cat > ${tmp_mp}/etc/rc.d/rc.local <<-EOF #!/bin/bash @@ -282,235 +293,298 @@ else fi exit 1 - EOF - chmod +x ${tmp_mp}/etc/rc.d/rc.local +EOF + chmod +x ${tmp_mp}/etc/rc.d/rc.local - for bind_mp in dev proc sys; do - umount -f ${tmp_mp}/${bind_mp} - _MOUNTS=$(echo ${_MOUNTS} | sed "s,${tmp_mp}/${bind_mp},,") - done + for bind_mp in dev proc sys; do + umount -f ${tmp_mp}/${bind_mp} + _MOUNTS=$(echo ${_MOUNTS} | sed "s,${tmp_mp}/${bind_mp},,") + done - umount -f ${tmp_mp} - rmdir ${tmp_mp} - [ -n "${SUDO_UID}" ] && chown ${SUDO_UID} ${dest} + umount -f ${tmp_mp} + rmdir ${tmp_mp} + [ -n "${SUDO_UID}" ] && chown ${SUDO_UID} ${dest} - if [ ${rc} -ne 0 ]; then - die "Failed to sync from ${STAGING}" - fi + if [ ${rc} -ne 0 ]; then + die "Failed to sync from ${STAGING}" + fi } pack_image() { - local img_size - local sha - local dest - local nbd_dev - local tmp_mp - local rc - - announce $FUNCNAME - img_size=$(du --exclude='proc/*' --exclude='sys/*' -sk ${STAGING} | cut -f1) - img_size=$((img_size + ${_EXTRA_DISK_SPACE_K} + 500 * 1024)) - - dest=${IMG_PREFIX}.img - - dd if=/dev/zero of=${dest} bs=1024 count=${img_size} || die "Failed to create disk image" - mkfs.ext4 -F -q ${dest} || die "Failed to format ${dest}" - - tmp_mp=$(mktemp -d --tmpdir=${BUILDDIR}) - if ! mount -o loop ${dest} ${tmp_mp}; then - rmdir ${tmp_mp} - die "Filed to mount ${dest} on ${tmp_mp}" - fi - - rsync -a --exclude='/sys/*' --exclude='/proc/*' ${STAGING}/ ${tmp_mp}/ - rc=$? - - # NOTE this menu is for grub which is used for AWS - # kvm uses grub2 - if [ -n "$KERNEL_REV" ]; then - cat > ${tmp_mp}/boot/grub/menu.lst <<-EOF - default=0 - timeout=0 - - title Fedora ($KERNEL_REV}) - root (hd0) - kernel /boot/vmlinuz-${KERNEL_REV} ro root=/dev/xvda1 console=hvc0 console=ttyS0,115200n8 LANG=en_US.UTF-8 - initrd /boot/initramfs-${KERNEL_REV}.img - EOF - fi - - cat > ${tmp_mp}/etc/fstab <<-EOF - /dev/xvda1 / ext4 defaults,noatime 0 0 - EOF - - umount -f ${tmp_mp} - rmdir ${tmp_mp} - [ -n "${SUDO_UID}" ] && chown ${SUDO_UID} ${dest} - - if [ ${rc} -ne 0 ]; then - die "Failed to sync from ${STAGING}" - fi + local img_size + local sha + local dest + local nbd_dev + local tmp_mp + local rc + + announce $FUNCNAME + img_size=$(du --exclude='proc/*' --exclude='sys/*' -sk ${STAGING} | cut -f1) + img_size=$((img_size + ${_EXTRA_DISK_SPACE_K} + 500 * 1024)) + + dest=${IMG_PREFIX}.img + + dd if=/dev/zero of=${dest} bs=1024 count=${img_size} || die "Failed to create disk image" + mkfs.ext4 -F -q ${dest} || die "Failed to format ${dest}" + + tmp_mp=$(mktemp -d --tmpdir=${BUILDDIR}) + if ! mount -o loop ${dest} ${tmp_mp}; then + rmdir ${tmp_mp} + die "Filed to mount ${dest} on ${tmp_mp}" + fi + + rsync -a --exclude='/sys/*' --exclude='/proc/*' ${STAGING}/ ${tmp_mp}/ + rc=$? + + # NOTE this menu is for grub which is used for AWS + # kvm uses grub2 + if [ -n "$KERNEL_REV" ]; then + cat > ${tmp_mp}/boot/grub/menu.lst <<-EOF + default=0 + timeout=0 + + title Fedora ($KERNEL_REV}) + root (hd0) + kernel /boot/vmlinuz-${KERNEL_REV} ro root=/dev/xvda1 console=hvc0 console=ttyS0,115200n8 LANG=en_US.UTF-8 + initrd /boot/initramfs-${KERNEL_REV}.img +EOF + fi + + cat > ${tmp_mp}/etc/fstab <<-EOF + /dev/xvda1 / ext4 defaults,noatime 0 0 +EOF + + umount -f ${tmp_mp} + rmdir ${tmp_mp} + [ -n "${SUDO_UID}" ] && chown ${SUDO_UID} ${dest} + + if [ ${rc} -ne 0 ]; then + die "Failed to sync from ${STAGING}" + fi } cmd() { - echo "${@:1:40} ..." >&2 - if [ "${STAGING}" == "" ]; then - /bin/bash -c "$*" || die "Failed to run $@" - else - chroot ${STAGING} /bin/bash -c "$*" || die "Failed to run $@" - fi - echo "...done" >&2 + cmd_rc "$@" + rc=$? + if [ $rc != 0 ]; then + die "Failed to run $@" + fi +} +cmd_rc() { + echo "${@:1:40} ..." >&2 + if [ "${STAGING}" == "" ]; then + /bin/bash -c "$*" + rc=$? + else + chroot ${STAGING} /bin/bash -c "$*" + rc=$? + fi + echo "...done rc is $rc" >&2 + return $rc } + yum_install() { - cmd $YUM --assumeyes --nogpgcheck install "$@" || die "yum '$@' failed" + if [[ $DISTRO == fedora ]]; then + cmd $YUM --assumeyes --nogpgcheck install "$@" || die "$YUM '$@' failed" + else + cmd $YUM -y install "$@" || die "$YUM '$@' failed" + fi +} +yum_update() { + if [[ $DISTRO == fedora ]]; then + cmd $YUM --assumeyes --nogpgcheck update "$@" || die "$YUM '$@' failed" + else + cmd $YUM -y update "$@" || die "$YUM '$@' failed" + fi } pip_install() { - cmd=$1 - repo=$2 - shift - shift - if [ $USE_INTERNET_REPOS == 1 ]; then - cmd $cmd install "$@" || die "$cmd install $@ from internet failed" - else - #cmd $cmd install --use-wheel --no-index \ - # --find-links=https://wheel.riftio.com/mirrors/${repo}/ \ - # "$@" || die "$cmd install $@ from $repo failed" - cmd $cmd install --use-wheel --no-index \ - --find-links=${repo} \ - "$@" || die "$cmd install $@ from $repo failed" - fi + cmd=$1 + repo=$2 + shift + shift + if [ $USE_INTERNET_REPOS == 1 ]; then + cmd $cmd install --use-wheel \ + --find-links=${repo} \ + "$@" || die "$cmd install $@ from $repo failed" + else + cmd $cmd install --use-wheel --no-index \ + --find-links=${repo} \ + "$@" || die "$cmd install $@ from $repo failed" + fi } pip2_install() { - #pip_install /bin/pip2 wheelhouse "$@" - # pip2 needs to be non-ssl for now - pip_install /bin/pip2 http://wheel.riftio.com/mirrors/wheelhouse/ "$@" + #pip_install /bin/pip2 wheelhouse "$@" + # pip2 needs to be non-ssl for now + pip_install /bin/pip2 http://wheel.riftio.com/mirrors/wheelhouse/ "$@" } pip3_install() { - #pip_install $PIP3_INSTALLER python3_wheelhouse "$@" - pip_install $PIP3_INSTALLER https://wheel.riftio.com/mirrors/python3_wheelhouse/ "$@" + #pip_install $PIP3_INSTALLER python3_wheelhouse "$@" + pip_install $PIP3_INSTALLER https://wheel.riftio.com/mirrors/python3_wheelhouse/ "$@" } pip3_install_kilo_modules() { - #pip_install $PIP3_INSTALLER python3_kilo_wheelhouse "$@" - pip_install $PIP3_INSTALLER https://wheel.riftio.com/mirrors/python3_kilo_wheelhouse/ "$@" + #pip_install $PIP3_INSTALLER python3_kilo_wheelhouse "$@" + pip_install $PIP3_INSTALLER https://wheel.riftio.com/mirrors/python3_kilo_wheelhouse/ "$@" } pip3_install_kilo42_modules() { - #pip_install $PIP3_INSTALLER python3_kilo_wheelhouse "$@" - pip_install $PIP3_INSTALLER https://wheel.riftio.com/mirrors/python3_kilo_rel_4.2_wheelhouse/ "$@" + #pip_install $PIP3_INSTALLER python3_kilo_wheelhouse "$@" + pip_install $PIP3_INSTALLER https://wheel.riftio.com/mirrors/python3_kilo_rel_4.2_wheelhouse/ "$@" } -setup_fedora_repos() { - announce $FUNCNAME +setup_yum_repos() { + announce $FUNCNAME - if [ $ONLY_RIFT_REPOS == 1 ]; then - cmd $YUM clean all - rm -f $STAGING/etc/yum.repos.d/* - cmd rpm --rebuilddb - fi + if [[ $ONLY_RIFT_REPOS == 1 ]]; then + rm -f $STAGING/etc/yum.repos.d/* + cmd rpm --rebuilddb + fi + if [[ $DISTRO == fedora ]]; then if [[ $REPO_FILE =~ .rpm$ ]]; then - cmd $YUM localinstall --assumeyes $REPO_FILE + cmd rpm -i --force $REPO_FILE + else + cp $REPO_FILE $STAGING/etc/yum.repos.d/ + fi + elif [[ $DISTRO == Ubuntu ]]; then + if [[ $REPO_FILE =~ .deb$ ]]; then + cmd dpkg -i $REPO_FILE else - cp $REPO_FILE $STAGING/etc/yum.repos.d/ + cp $REPO_FILE $STAGING/etc/apt/sources.list.d fi + fi - cmd $YUM clean all + cmd $YUM clean all + if [[ $DISTRO == fedora ]]; then cmd $YUM makecache + else + cmd $YUM update + fi + + if [[ $DISTRO == fedora ]]; then + yum_install yum-utils + # ok if this fails + cmd yum-config-manager --quiet --enable updates3 + if [[ $RELEASE == 20 ]]; then + # avoid a conflict later + yum_update vim-minimal + fi + fi +} - if [ $FIX_PIP == 1 ]; then - - # PIP3 - echo "1) pip3 version is: "`cmd /bin/python3-pip --version` - rm -Rfv /tmp/pip_build_root # fixes: The temporary folder for building (/tmp/pip_build_root) is not owned by your user! - yum_install python3 python3-pip - #cat $STAGING/bin/python3-pip - ls -ld $STAGING/bin/*pip* - # the default version of pip is so old that it can't use a https server that has multiple servers - echo "2) pip3 version is: "`cmd /bin/python3-pip --version` - cmd curl https://wheel.riftio.com/mirrors/python3_wheelhouse/pip-7.1.2-py2.py3-none-any.whl -o /tmp/pip-7.1.2-py2.py3-none-any.whl - cmd /bin/python3-pip install /tmp/pip-7.1.2-py2.py3-none-any.whl - perl -i -p -e 's/1\.4\.[0-9]/7.1.2/g;' $STAGING/bin/python3-pip - echo "3) pip3 version is: "`cmd /bin/python3-pip --version` +setup_pip_repos() { - else - pip3 install --upgrade pip - fi - - yum_install yum-utils - # ok if this fails - cmd yum-config-manager --quiet --enable updates3 + rm -Rfv /tmp/pip_build_root # fixes: The temporary folder for building (/tmp/pip_build_root) is not owned by your user! + yum_install python3 + cmd curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py + cmd python3 get-pip.py + PIP3_INSTALLER=/bin/pip3 } # this needs to be after the .rpms installs so that yum-utils is installed config_rw_repos() { - announce $FUNCNAME + announce $FUNCNAME + if [[ $DISTRO == fedora ]]; then # release(stable) is the default in the riftware.repo # we never want to leave these enabled in production if [[ "$RW_REPO" = "nightly" ]]; then - YUM_OPTS="--enablerepo=RIFT.ware-4.1-nightly,RIFT.ware-4.1-testing" + YUM_OPTS="--enablerepo=RIFT.ware-4.1-nightly,RIFT.ware-4.1-testing" elif [[ "$RW_REPO" = "testing" ]]; then - YUM_OPTS="--enablerepo=RIFT.ware-4.1-testing" + YUM_OPTS="--enablerepo=RIFT.ware-4.1-testing" fi cmd $YUM clean all cmd $YUM makecache + fi } install_kernel() { - if [ -n "$KERNEL_REV" ]; then - yum_install kernel-${KERNEL_REV} kernel-devel-${KERNEL_REV} kernel-modules-extra-${KERNEL_REV} + if [ -n "$KERNEL_REV" ]; then + if $CONTAINER; then + yum_install kernel-devel-${KERNEL_REV} + else + yum_install kernel-${KERNEL_REV} kernel-devel-${KERNEL_REV} kernel-modules-extra-${KERNEL_REV} + fi + if [ ! -e /lib/modules/${KERNEL_REV}/build ]; then + mkdir -p /lib/modules/${KERNEL_REV} + ln -s /usr/src/kernels/${KERNEL_REV} /lib/modules/${KERNEL_REV}/build + fi + else + if [[ $DISTRO == fedora ]]; then + yum_install kernel-devel + else + : fi + fi } setup_usr_rift() { - announce $FUNCNAME + announce $FUNCNAME - # RIFT-11697 - #yum_install $YUM_OPTS rift_scripts + # RIFT-11697 + #yum_install $YUM_OPTS rift_scripts - cmd adduser -m -s /bin/bash -U rift - echo "rift:rift" | cmd chpasswd + cmd_rc id rift + if [ $? -ne 0 ]; then + if [[ $DISTRO == fedora ]]; then + cmd adduser -m -s /bin/bash -U rift + elif [[ $DISTRO == ubuntu ]]; then + cmd adduser --disabled-password --shell /bin/bash --gecos rift rift + fi + fi + echo "rift:rift" | cmd chpasswd - #rm -rf $STAGING/home/rift/scripts - #ln -s /usr/rift/scripts $STAGING/home/rift/scripts + #rm -rf $STAGING/home/rift/scripts + #ln -s /usr/rift/scripts $STAGING/home/rift/scripts + if [[ $PLATFORM_OS == fc20 ]]; then yum_install $YUM_OPTS riftware-base + fi - # - # FIX ME - #cp $REPO_FILE $STAGING/etc/yum.repos.d/ - # this looks fixed in setup_fedora_repos + # + # FIX ME + #cp $REPO_FILE $STAGING/etc/yum.repos.d/ + # this looks fixed in setup_repos } setup_access() { - announce $FUNCNAME + announce $FUNCNAME + + # sshd is already enabled for other distros + if [[ $DISTRO == fedora ]]; then cmd systemctl enable sshd + fi + echo root:toor | cmd chpasswd echo "ALL ALL=NOPASSWD: ALL" >> ${STAGING}/etc/sudoers sed -i '/requiretty/s/^/#/' ${STAGING}/etc/sudoers || die "sed failed" - install --group=root --owner=root --mode=700 -d $STAGING/root/.ssh/ - cp $RIFTROOT/scripts/vm/root/.ssh/* $STAGING/root/.ssh/ - chmod 600 $STAGING/root/.ssh/* + install --group=root --owner=root --mode=700 -d $STAGING/root/.ssh/ + if $CONTAINER; then + test -f /root/.ssh/id_rsa || ssh-keygen -N "" -f /root/.ssh/id_rsa + cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys + else + cp $RIFT_ROOT/scripts/vm/root/.ssh/* $STAGING/root/.ssh/ + fi + chmod 600 $STAGING/root/.ssh/* - perl -i -p -e 's/PasswordAuthentication yes/PasswordAuthentication no/;' ${STAGING}/etc/ssh/sshd_config - if [ -e ${STAGING}/etc/selinux/config ]; then - sed -i 's,^\(SELINUX=\).*,\1permissive,' ${STAGING}/etc/selinux/config || die "sed failed" - fi + sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' ${STAGING}/etc/ssh/sshd_config + if [ -e ${STAGING}/etc/selinux/config ]; then + sed -i 's,^\(SELINUX=\).*,\1permissive,' ${STAGING}/etc/selinux/config || die "sed failed" + fi } @@ -518,62 +592,71 @@ setup_access() { brand_images() { announce $FUNCNAME + if ! $CONTAINER; then + echo "${SHA}" > ${STAGING}/etc/rift.hash + echo -e "checking /etc/rift.hash: `cat ${STAGING}/etc/rift.hash` "; + fi - echo "${SHA}" > ${STAGING}/etc/rift.hash - echo -e "checking /etc/rift.hash: `cat ${STAGING}/etc/rift.hash` "; - - # remove extra spaces and make into CSV - clean_modes=$(echo "$MODES" | awk '$1=$1' | sed 's/ /,/g' ) + # remove extra spaces and make into CSV + clean_modes=$(echo "$MODES" | awk '$1=$1' | sed 's/ /,/g' ) - json=$(echo "{\"modes\":\"${clean_modes}\",\"build_number\":\"${RIFT_BUILD_NUMBER}\",\"version\":\"${VERSION}\",\"branch\":\"${BRANCH}\",\"hash\":\"${SHA}\"}") - echo "${json}" > ${STAGING}/etc/rift.vm + json=$(echo "{\"modes\":\"${clean_modes}\",\"build_number\":\"${RIFT_BUILD_NUMBER}\",\"version\":\"${VERSION}\",\"branch\":\"${BRANCH}\",\"hash\":\"${SHA}\"}") + echo "${json}" > ${STAGING}/etc/rift.vm echo -e "checking /etc/rift.vm: `cat ${STAGING}/etc/rift.vm` "; } output_images() { - local output_type - - announce $FUNCNAME - for output_type in ${OUTPUTS}; do - case ${output_type} in - qcow2) - pack_qcow2 - compress_qcow2 - ;; - disk-image) - pack_image - ;; - *) - echo - echo "WARNING: Unknown output type '${output_type}'" - echo - ;; - esac - done + local output_type + + announce $FUNCNAME + for output_type in ${OUTPUTS}; do + case ${output_type} in + qcow2) + pack_qcow2 + compress_qcow2 + ;; + disk-image) + pack_image + ;; + *) + echo + echo "WARNING: Unknown output type '${output_type}'" + echo + ;; + esac + done } -install_host_packages() { - - yum -y install nbd +RIFT_ROOT=$(dirname $(dirname $(dirname $(realpath $0)))) +BUILDDIR="${RIFT_ROOT}/.build/vm" -} - -RIFTROOT=$(dirname $(dirname $(dirname $(realpath $0)))) -BUILDDIR="${RIFTROOT}/.build/vm" +PLATFORM_OS=$(${RIFT_ROOT}/scripts/util/host-platform) #SEED_URL=http://download.fedoraproject.org/pub/fedora/linux/releases/20/Images/x86_64/ SEED_URL=http://repo.riftio.com/releases/4.0/vm_images -SEED=Fedora-x86_64-20-20131211.1-sda.qcow2 SEED_PATH="" FEDORA_REL=20 OUTPUTS="qcow2 disk-image" IMG_PREFIX="rift" INSTALL_ONLY=false INSTALL_EXTRA=true -ENABLE_LAB=fals3 +ENABLE_LAB=false RW_REPO="release" +# If we are in a container then proc 1 (the init process) will have control group +# restrictions. If we are not in a container then proc 1 will be in control group +# "/" for all control groups. So if /proc/1/cgroups has any line that does NOT +# end with /, we are in a container +if [ "$(basename $0)" == "mkcontainer" ]; then + CONTAINER=true +elif egrep '/.' /proc/1/cgroup >/dev/null 2>&1; then + CONTAINER=true +else + CONTAINER=false +fi + +echo "Setting up a container: $CONTAINER" # Are we building a local RIFT.io dev image. If so # additional configuration will be included that assumes @@ -591,260 +674,320 @@ _NBD_NODES="" # This is roughly the amount of space required to hold the .install tree when # built with NOT_DEVELOPER_BUILD=TRUE, also known as 1.5G _EXTRA_DISK_SPACE_K=1572864 -KERNEL_REV="3.12.9-301.fc20.x86_64" -REPO_FILE=http://repo.riftio.com/releases/riftware-release-latest.rpm -ONLY_RIFT_REPOS=1 -USE_INTERNET_REPOS=0 -FIX_PIP=1 -PIP3_INSTALLER=/bin/python3-pip -YUM=/bin/yum -RELEASE=20 +if [[ $PLATFORM_OS == 'fc20' ]]; then + DISTRO=fedora + RELEASE=20 + SHORTNAME=fc20 + YUM=/bin/yum + PIP3_INSTALLER=/bin/python3-pip + FIX_PIP=1 + ONLY_RIFT_REPOS=1 + USE_INTERNET_REPOS=0 + KERNEL_REV="3.12.9-301.fc20.x86_64" + SEED=Fedora-x86_64-20-20131211.1-sda.qcow2 + REPO_FILE=http://repos.riftio.com/releases/riftware-fedora.rpm + NODEJS=/usr/bin/node + +elif [[ $PLATFORM_OS == 'fc23' ]]; then + DISTRO=fedora + RELEASE=23 + SHORTNAME=fc23 + YUM=dnf + PIP3_INSTALLER=/bin/pip3 + FIX_PIP=0 + ONLY_RIFT_REPOS=0 + USE_INTERNET_REPOS=1 + KERNEL_REV="" + SEED="Fedora-Cloud-Base-23-20151030.x86_64.qcow2" + REPO_FILE="riftware-release.repo" + NODEJS=/usr/bin/node + +elif [[ $PLATFORM_OS == 'ub16' ]]; then + DISTRO=ubuntu + RELEASE=16.04 + SHORTNAME=ub16 + YUM="DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get" + PIP3_INSTALLER=/usr/bin/pip3 + FIX_PIP=0 + ONLY_RIFT_REPOS=0 + USE_INTERNET_REPOS=1 + KERNEL_REV="" + REPO_FILE= + NODEJS=/usr/bin/nodejs # renamed from 'node' to 'nodejs' in more recent versions + +else + echo "Internal error: PLATFORM_OS is set to $PLATFORM_OS" >&2 + exit 1 + +fi usage() { - MODES=$(ls $(dirname $0).rpm) - cat <<-EOF - $(basename $0) [ARGUMENTS] - - This script is used to create base VM images capable of running the RW.OS. In addition - it can also add a full RIFT.io developer environment which adds internal tools like - ldap and nfs. - - ARGUMENTS: - -h, --help This screen - -c, --clean clean the build area - - -b, --builddir [PATH] Directory to use for building the build [${BUILDDIR}] - -p, --prefix Prefix for the image filename [${IMG_PREFIX}] - -s, --seed [URL] Image seed [${SEED_URL}/${SEED}] - -r, --rwrepo [REPO] RW Repo to enable: release/testing/nightly [${RW_REPO}] - -o, --outputs [OUTPUTS] Comma seperated list of images to generate [${OUTPUTS}] - --install-only Only install packages, do not produce images - -m, --modes [MODES] Include packages for specified modes - -e, --extra extra space to reserve in GB - --repo_file file file to use to enable additional repos - --internet do not delete existing repo files and get stuff from internet - - OUTPUTS: - qcow2: Openstack/kvm suitable image - disk-image: Raw disk image, suitable for EC2 - - EXAMPLES: - build an image to be used in our environment, run in $RIFT_ROOT: - mkdir tmp - sudo ./scripts/cloud/mkvmimage -d -b tmp -o qcow2 - - MODES: - one or more of $MODES - - EOF + MODES=$(ls $(dirname $0).rpm) + cat <<-EOF + $(basename $0) [ARGUMENTS] + + This script is used to create base VM images or initialize a container so it is + capable of running the RW.OS. In addition + it can also add a full RIFT.io developer environment which adds internal tools like + ldap and nfs. + + Arguments and options for VM creation are very different from the arguments and options + for initializing a container. + + When initializing a container, it is assumed that /etc/resolv.conf is already initialized. + + COMMON OPTIONS: + -h, --help This screen + --container Initialize this container + -r, --rwrepo [REPO] RW Repo to enable: release/testing/nightly [${RW_REPO}] + -m, --modes [MODE] Include packages for specified modes, may be repeated for multiple modes + --repofile file file to use to enable additional repos + --internet do not delete existing repo files and get stuff from internet + + CONTAINER OPTIONS: + + VM OPTIONS: + -c, --clean clean the build area + + -b, --builddir [PATH] Directory to use for building the build [${BUILDDIR}] + -p, --prefix Prefix for the image filename [${IMG_PREFIX}] + -s, --seed [URL] Image seed [${SEED_URL}/${SEED}] + -o, --outputs [OUTPUTS] Comma seperated list of images to generate [${OUTPUTS}] + --install-only Only install packages, do not produce images + -e, --extra extra space to reserve in GB + + VM OUTPUTS: + qcow2: Openstack/kvm suitable image + disk-image: Raw disk image, suitable for EC2 + + EXAMPLES: + build an image to be used in our environment, run in $RIFT_ROOT: + mkdir tmp + sudo ./scripts/cloud/mkvmimage -d -b tmp -o qcow2 + + initialize a new container to be used for development (run as root): + ./scripts/vm_image/mkvmimage --container + + MODES: + one or more of $MODES + +EOF } while [ $# -gt 0 ]; do - case "$1" in - -h|--help) - usage - exit 0 - ;; - -b|--builddir) - shift - BUILDDIR=${1} - ;; - -p|--prefix) - shift - IMG_PREFIX=${1} - ;; - -r|--rwrepo) - shift - RW_REPO=${1} - ;; - -s|--seed) - shift - SEED_URL=${1%/*} - SEED=${1##*/} - ;; - -e|--extra) - shift - _EXTRA_DISK_SPACE_K=$(expr $1 \* 1024 \* 1024) - ;; - -o|--outputs) - shift - OUTPUTS=$(echo ${1} | tr ',' ' ') - ;; - --install-only) - INSTALL_ONLY=true - ;; - --modes|-m) - shift - modes_in="$modes_in ${1}" - ;; - --clean|-c) - CLEAN_FIRST=true - ;; - --repo-file) - shift - REPO_FILE="$1" - ;; - --internet) - ONLY_RIFT_REPOS=0 - USE_INTERNET_REPOS=1 - ;; - --no-fix-pip) - FIX_PIP=0 - ;; - --kernel) - shift - KERNEL_REV="$1" - ;; - --fc23) - # short hand - PIP3_INSTALLER=/bin/pip3 - FIX_PIP=0 - ONLY_RIFT_REPOS=0 - USE_INTERNET_REPOS=1 - KERNEL_REV="" - SEED="Fedora-Cloud-Base-23-20151030.x86_64.qcow2" - YUM=dnf - RELEASE=23 - REPO_FILE="riftware-release.repo" - ;; - *) - set -x - echo "args= $# " - #die "Unknown argument $1" - ;; - esac - shift + case "$1" in + -h|--help) + usage + exit 0 + ;; + -b|--builddir) + shift + BUILDDIR=${1} + ;; + -p|--prefix) + shift + IMG_PREFIX=${1} + ;; + -r|--rwrepo) + shift + RW_REPO=${1} + ;; + -s|--seed) + shift + SEED_URL=${1%/*} + SEED=${1##*/} + ;; + -e|--extra) + shift + _EXTRA_DISK_SPACE_K=$(expr $1 \* 1024 \* 1024) + ;; + -o|--outputs) + shift + OUTPUTS=$(echo ${1} | tr ',' ' ') + ;; + --install-only) + INSTALL_ONLY=true + ;; + --modes|-m) + shift + modes_in="$modes_in ${1}" + ;; + --clean|-c) + CLEAN_FIRST=true + ;; + --repo-file|--repofile) + shift + REPO_FILE="$1" + ;; + --no-repo-file) + REPO_FILE="" + ;; + --internet) + ONLY_RIFT_REPOS=0 + USE_INTERNET_REPOS=1 + ;; + --no-fix-pip) + FIX_PIP=0 + ;; + --kernel) + shift + KERNEL_REV="$1" + ;; + *) + set -x + echo "args= $# " + die "Unknown argument $1" + ;; + esac + shift done +if ${CONTAINER}; then + # These need to be reset when setting up a container: + BUILDDIR= + STAGING= +fi + if [ ${UID} != 0 ]; then - die "$(basename $0) must be run as root" + die "$(basename $0) must be run as root" fi VM_DIR=$(dirname $0) -if $CLEAN_FIRST; then - rm -rf $BUILDDIR +if ! ${CONTAINER}; then + if $CLEAN_FIRST; then + rm -rf $BUILDDIR + fi + mkdir -p $BUILDDIR fi -mkdir -p $BUILDDIR -# process MODES +# process MODES MODES=" " add_mode2() { - if [[ "$MODES" =~ " $1 " ]]; then - return - fi - if [ -f $VM_DIR/${1}.depends ]; then - for dep in $(cat $VM_DIR/${1}.depends); do - add_mode2 $dep - done - fi - MODES=" $MODES $1 " + if [[ "$MODES" =~ " $1 " ]]; then + return + fi + if [ -f $VM_DIR/${1}.depends ]; then + for dep in $(cat $VM_DIR/${1}.depends); do + add_mode2 $dep + done + fi + MODES=" $MODES $1 " } add_mode() { - IMG_PREFIX="${IMG_PREFIX}-${1}" - add_mode2 $1 + IMG_PREFIX="${IMG_PREFIX}-${1}" + add_mode2 $1 } for mode in $modes_in; do - add_mode $mode + add_mode $mode done -SHA=$(git rev-parse --short HEAD) -if [ -z "${SHA}" ]; then - die "Failed to find a git sha" -fi +if ! ${CONTAINER}; then + SHA=$(git rev-parse --short HEAD) + if [ -z "${SHA}" ]; then + die "Failed to find a git sha" + fi -BRANCH=$(git rev-parse --abbrev-ref HEAD) -VERSION=$(cat ./RELEASE) # full 4 digits like 4.2.0.0 + BRANCH=$(git rev-parse --abbrev-ref HEAD) + VERSION=$(cat ./RELEASE) # full 4 digits like 4.2.0.0 -RIFT_ROOT=$(pwd) -source ./scripts/packaging/getbuild -echo "RIFT_BUILD_NUMBER=${RIFT_BUILD_NUMBER}"; + source ${RIFT_ROOT}/scripts/packaging/getbuild + echo "RIFT_BUILD_NUMBER=${RIFT_BUILD_NUMBER}"; -#if [ $BRANCH == "master" ]; then -# IMG_PREFIX="${IMG_PREFIX}-${SHA}" -#else - #IMG_PREFIX="${IMG_PREFIX}-${VERSION}-${BRANCH}-${SHA}" - #IMG_PREFIX="${IMG_PREFIX}-${VERSION}-${RIFT_BUILD_NUMBER}-${BRANCH}" -#fi + #if [ $BRANCH == "master" ]; then + # IMG_PREFIX="${IMG_PREFIX}-${SHA}" + #else + # IMG_PREFIX="${IMG_PREFIX}-${VERSION}-${BRANCH}-${SHA}" + # IMG_PREFIX="${IMG_PREFIX}-${VERSION}-${RIFT_BUILD_NUMBER}-${BRANCH}" + #fi -IMG_PREFIX="${IMG_PREFIX}-${VERSION}-${RIFT_BUILD_NUMBER}-${BRANCH}" + IMG_PREFIX="${IMG_PREFIX}-${VERSION}-${RIFT_BUILD_NUMBER}-${BRANCH}" + + announce "BUILDING $IMG_PREFIX " +fi -announce "BUILDING $IMG_PREFIX " echo "MODES=$MODES " #echo "printenv:" #printenv +if ! ${CONTAINER}; then + #check_build_area -- we cannot be under $RIFT_ROOT unless we are also in .build + # JLM -- IS THIS STILL TRUE???? + x=$(realpath $BUILDDIR) + if [[ $x =~ $RIFT_ROOT && ! $x =~ $RIFT_ROOT/.build ]]; then + echo "ERROR $x is not an approriate BUILDDIR. It must not be inside RIFT_ROOT unless it is under .build" + exit 1 + fi -#check_build_area -- we cannot be under $RIFT_ROOT unless we are also in .build -# JLM -- IS THIS STILL TRUE???? -x=$(realpath $BUILDDIR) -if [[ $x =~ $RIFTROOT && ! $x =~ $RIFTROOT/.build ]]; then - echo "ERROR $x is not an approriate BUILDDIR. It must not be inside RIFTROOT unless it is under .build" - exit 1 -fi - - -STAGING=${BUILDDIR}/image-staging -if ${INSTALL_ONLY}; then - STAGING="" -fi -SEED_PATH=${BUILDDIR}/${SEED} + STAGING=${BUILDDIR}/image-staging + if ${INSTALL_ONLY}; then + STAGING="" + fi -install_host_packages + SEED_PATH=${BUILDDIR}/${SEED} -if ! ${INSTALL_ONLY}; then - fetch_seed - setup + if ! ${INSTALL_ONLY}; then + fetch_seed + setup + fi fi -setup_fedora_repos +if [ -n "$REPO_FILE" ]; then + setup_yum_repos +fi +setup_pip_repos install_kernel cmd df -h / for mode in $MODES; do - announce "installing $mode" - basename="$VM_DIR/$mode" - if [ -s $basename.setup.sh ]; then - announce "Sourcing $basename.setup.sh" - source $basename.setup.sh - cmd df -h / - fi - if [ -s $basename.rpms ]; then - announce "Installing $basename.rpms" - yum_install $(cat $basename.rpms) - cmd df -h / - fi - if [ -s $basename.pip ]; then - announce "Installing $basename.pip" - pip2_install $(cat $basename.pip) - cmd df -h / - fi - if [ -s $basename.pip3 ]; then - announce "Installing $basename.pip3" - pip3_install $(cat $basename.pip3) - cmd df -h / - fi - if [ -s $basename.kilo ]; then - announce "Installing $basename.kilo" - - #pip3_install_kilo_modules $(cat $basename.kilo) - # switch to new kilo pip3 wheelhouse after 4.1 - pip3_install_kilo42_modules $(cat $basename.kilo) - - cmd df -h / - fi - if [ -s $basename.config.sh ]; then - announce "Sourcing $basename.config.sh" - source $basename.config.sh - cmd df -h / - fi + announce "installing $mode" + basename="$VM_DIR/$mode" + if [ -s $basename.setup.sh ]; then + announce "Sourcing $basename.setup.sh" + source $basename.setup.sh + cmd df -h / + fi + if [ -s $basename.rpms ]; then + announce "Installing $basename.rpms" + # The format of the .rpms file is: + # - Comments run from '#' to end-of-line + # - Blank lines are ignored + # - Packages listed on a line without : are always included + # - format of other lines is: "os(,os)*:pkg" where os is ub16, fc20, etc. + yum_install $(cat $basename.rpms | sed 's/#.*//' | egrep -v '^\s*$' | egrep '^[^:]*'$SHORTNAME'[^:]*:|^[^:]+$' | sed -r 's/^[^:]*:\s*//') + cmd df -h / + fi + if [ -s $basename.pip ]; then + announce "Installing $basename.pip" + pip2_install $(cat $basename.pip) + cmd df -h / + fi + if [ -s $basename.pip3 ]; then + announce "Installing $basename.pip3" + pip3_install $(cat $basename.pip3) + cmd df -h / + fi + if [ -s $basename.kilo ]; then + announce "Installing $basename.kilo" + + #pip3_install_kilo_modules $(cat $basename.kilo) + # switch to new kilo pip3 wheelhouse after 4.1 + pip3_install_kilo42_modules $(cat $basename.kilo) + + cmd df -h / + fi + if [ -s $basename.config.sh ]; then + announce "Sourcing $basename.config.sh" + source $basename.config.sh + cmd df -h / + fi done # needs to happen after .rpm installs to yum-utils is installed @@ -854,12 +997,14 @@ setup_usr_rift setup_access if ${INSTALL_ONLY}; then - exit 0 + exit 0 fi brand_images -output_images + +if ! $CONTAINER; then + output_images +fi _on_exit -# vim: noet diff --git a/scripts/vm_image/package.depends b/scripts/vm_image/package.depends new file mode 100644 index 0000000..df967b9 --- /dev/null +++ b/scripts/vm_image/package.depends @@ -0,0 +1 @@ +base diff --git a/scripts/vm_image/package.rpms b/scripts/vm_image/package.rpms new file mode 100644 index 0000000..5507afd --- /dev/null +++ b/scripts/vm_image/package.rpms @@ -0,0 +1,39 @@ +# Needed for building: +ub16: autoconf +ub16: autoconf-archive +ub16: autofs +ub16: automake +ub16: autopoint +ub16: autotools-dev +ub16: bison +ub16: build-essential +ub16: bzr +ub16: bzr-builder +ub16: ca-certificates +ub16: cdbs +ub16: debconf +ub16: debhelper +ub16: debianutils +ub16: debootstrap +ub16: devscripts +ub16: dh-autoreconf +ub16: dh-python +ub16: dh-strip-nondeterminism +ub16: dh-translations +ub16: dpkg-dev +ub16: fakeroot +ub16: git-build-recipe +ub16: gnome-pkg-tools +ub16: gnupg +ub16: gtk-doc-tools +ub16: language-pack-en +ub16: lintian +ub16: make +ub16: patch +ub16: patchutils +ub16: pbuilder +ub16: pbzip2 +ub16: pkg-config +ub16: po-debconf +ub16: pristine-tar +ub16: quilt diff --git a/scripts/vm_image/riftware-mirrors.repo b/scripts/vm_image/riftware-mirrors.repo new file mode 100644 index 0000000..c3d8696 --- /dev/null +++ b/scripts/vm_image/riftware-mirrors.repo @@ -0,0 +1,98 @@ +[fedora] +name=Fedora $releasever - $basearch +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/releases/$releasever/Everything/$basearch/os/ +enabled=1 +metadata_expire=7d +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[fedora-debuginfo] +name=Fedora $releasever - $basearch - Debug +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/releases/$releasever/Everything/$basearch/debug/ +enabled=0 +#metadata_expire=7d +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[fedora-source] +name=Fedora $releasever - Source +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/releases/$releasever/Everything/source/SRPMS/ +enabled=0 +#metadata_expire=7d +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[updates2] +name=RW Fedora Updates2 +baseurl=http://repos.riftio.com/frozen/fedora/updates2/ +enabled=1 +skip_if_unavailable=False + +[updates3] +name=RW Fedora Updates3 +baseurl=http://repos.riftio.com/frozen/fedora/updates3/$releasever/$basearch/ +enabled=1 +skip_if_unavailable=False + +[updates] +name=Fedora $releasever - $basearch - Updates +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/updates/$releasever/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[updates-debuginfo] +name=Fedora $releasever - $basearch - Updates - Debug +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/updates/$releasever/$basearch/debug/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[updates-source] +name=Fedora $releasever - Updates Source +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/updates/$releasever/SRPMS/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[updates-testing] +name=Fedora $releasever - $basearch - Test Updates +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/updates/testing/$releasever/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[updates-testing-debuginfo] +name=Fedora $releasever - $basearch - Test Updates Debug +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/updates/testing/$releasever/$basearch/debug/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + +[updates-testing-source] +name=Fedora $releasever - Test Updates Source +failovermethod=priority +baseurl=http://repos.riftio.com/frozen/fedora/updates/testing/$releasever/SRPMS/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch +skip_if_unavailable=False + + + diff --git a/scripts/vm_image/riftware-release.repo b/scripts/vm_image/riftware-release.repo deleted file mode 100644 index cab9375..0000000 --- a/scripts/vm_image/riftware-release.repo +++ /dev/null @@ -1,91 +0,0 @@ -# -# Copyright 2016 RIFT.IO Inc -# -# 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. -# -# RIFT.ware 4.1 -# -[RIFT.ware-4.1] -name=RIFT.ware -baseurl=http://repo.riftio.com/releases/riftware/4.1/20/x86_64/release -enabled=1 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False - -[RIFT.ware-4.1-testing] -name=RIFT.ware Testing -baseurl=http://repo.riftio.com/releases/riftware/4.1/20/x86_64/testing -enabled=0 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False - -[RIFT.ware-4.1-nightly] -name=RIFT.ware Nightly -baseurl=http://repo.riftio.com/releases/riftware/4.1/20/x86_64/nightly -enabled=0 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False -# -# RIFT.ware 4.1 -# - -# -# RIFT.ware 4.0 -# -[RIFT.ware] -name=RIFT.ware -baseurl=http://repo.riftio.com/releases/riftware/4.0/20/x86_64/release -enabled=0 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False - -[RIFT.ware-testing] -name=RIFT.ware Testing -baseurl=http://repo.riftio.com/releases/riftware/4.0/20/x86_64/testing -enabled=0 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False - -[RIFT.ware-nightly] -name=RIFT.ware Nightly -baseurl=http://repo.riftio.com/releases/riftware/4.0/20/x86_64/nightly -enabled=0 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False -# -# RIFT.ware 4.0 -# - -[RW.misc] -name=Misc Packages Repacked by RIFT.io -baseurl=http://repo.riftio.com/misc -enabled=1 -metadata_expire=1m -gpgcheck=0 -skip_if_unavailable=False - -[RW.kilo] -name=openstack packstack Repacked by RIFT.io -baseurl=http://repo.riftio.com/releases/4.0/kilo_yum -enabled=1 -metadata_expire=1d -gpgcheck=0 -skip_if_unavailable=False - - diff --git a/scripts/vm_image/riftware.repo b/scripts/vm_image/riftware.repo new file mode 100644 index 0000000..0128523 --- /dev/null +++ b/scripts/vm_image/riftware.repo @@ -0,0 +1,42 @@ +# +# RIFT.ware +# Source is available at https://github.com/RIFTIO/RIFT.ware +# +[RIFT.ware] +name=RIFT.ware +baseurl=http://repos.riftio.com/releases/riftware/release/fedora/$releasever +enabled=1 +metadata_expire=1m +gpgcheck=0 +skip_if_unavailable=False +# +# open source projects modified and/or repackaged by RIFT.io +# modified packages can be found in our github account https://github.com/RIFTIO/ +# +[RIFT.packages] +name=RIFT.ware Packages +baseurl=http://repos.riftio.com/packages/fedora/$releasever +enabled=1 +metadata_expire=1m +gpgcheck=0 +skip_if_unavailable=False +# +# miscelaneous packages that are not part of a stock fc20 distribution +# +[RIFT.misc] +name=Misc Packages collected by RIFT.io +baseurl=http://repos.riftio.com/mirrors/fedora/$releasever/misc +enabled=1 +metadata_expire=1m +gpgcheck=0 +skip_if_unavailable=False +# +# RIFT.ware OSM +# +[RIFT.ware-OSM] +name=RIFT.ware OSM +baseurl=http://repos.riftio.com/public/releases/riftware/OSM/fedora/20 +enabled=1 +metadata_expire=1m +gpgcheck=0 +skip_if_unavailable=False diff --git a/scripts/vm_image/scripts/build_rift_build b/scripts/vm_image/scripts/build_rift_build new file mode 100644 index 0000000..92589e2 --- /dev/null +++ b/scripts/vm_image/scripts/build_rift_build @@ -0,0 +1,21 @@ +#!/bin/bash + + +if [ $(whoami) != "root" ]; then + echo "MUST be root to get a prviliged container with LXC" + exit 1 +fi +container=${1:-rift-build} +image=${2:-fc20} +script=${3:-init_build_container_osm} +echo building container ${container} based on image ${image} using script ${script} +lxc launch ${image} ${container} + +output=$(lxc exec ${container} -- ping -c 1 repo.riftio.com) +while [[ ! $output =~ "1 received" ]]; do + echo "waiting for DNS" + sleep 1 + output=$(lxc exec ${container} -- ping -c 1 repo.riftio.com) +done +lxc file push ${script} ${container}/root/${script} +lxc exec ${container} -- bash /root/${script} diff --git a/scripts/vm_image/scripts/build_rift_container b/scripts/vm_image/scripts/build_rift_container new file mode 100644 index 0000000..b6ed518 --- /dev/null +++ b/scripts/vm_image/scripts/build_rift_container @@ -0,0 +1,27 @@ +#!/bin/bash + +re="Starting ([-a-z]+)\b" + +echo building container.... +output=$(lxc launch rift) +if [[ $output =~ $re ]]; then + echo $output + container=${BASH_REMATCH[1]} + echo container name is $container +else + echo -e "error parsing output for container name:\n$output\n" + exit 1 +fi + + +lxc exec $container -- yum-config-manager --enable RIFT.ware-4.2-testing +output=$(lxc exec $container -- host repo.riftio.com) +re="repo\.riftio\.com has address 50\.252\.212\.201" +while [[ ! $output =~ $re ]]; do + echo waiting for DNS + sleep 1 + output=$(lxc exec $container -- host repo.riftio.com) +done +lxc exec $container -- yum makecache +lxc exec $container -- yum install -y riftware-launchpad.x86_64 +lxc exec $container -- systemctl start rwlp diff --git a/scripts/vm_image/scripts/build_rift_runtime b/scripts/vm_image/scripts/build_rift_runtime new file mode 100644 index 0000000..a7d4d32 --- /dev/null +++ b/scripts/vm_image/scripts/build_rift_runtime @@ -0,0 +1,21 @@ +#!/bin/bash + + +if [ $(whoami) != "root" ]; then + echo "MUST be root to get a privileged container with LXC" + exit 1 +fi +container=${1:-rift} +image=${2:-fc20} +script=${3:-init_container_osm} +echo building container ${container} based on image ${image} using script ${script} +lxc launch ${image} ${container} + +output=$(lxc exec ${container} -- ping -c 1 repo.riftio.com) +while [[ ! $output =~ "1 received" ]]; do + echo "waiting for DNS" + sleep 1 + output=$(lxc exec ${container} -- ping -c 1 repo.riftio.com) +done +lxc file push ${script} ${container}/root/${script} +lxc exec ${container} -- bash /root/${script} diff --git a/scripts/vm_image/scripts/init_build_container_osm b/scripts/vm_image/scripts/init_build_container_osm new file mode 100644 index 0000000..17e8709 --- /dev/null +++ b/scripts/vm_image/scripts/init_build_container_osm @@ -0,0 +1,12 @@ +#!/bin/bash + + +yum -y install wget +mkdir rift +cd rift +wget -O - http://repo.riftio.com/releases/open.riftio.com/OSM/mkvmimg.tar | tar xf - +bash ./mkvmimg --container --modes build +echo Container is now ready to build RIFT.ware +# got clone ... +# cd .... +# make build diff --git a/scripts/vm_image/scripts/init_container b/scripts/vm_image/scripts/init_container new file mode 100644 index 0000000..f550d77 --- /dev/null +++ b/scripts/vm_image/scripts/init_container @@ -0,0 +1,59 @@ +#!/bin/bash + + +yum install -y git +git config --global user.email "Jeremy.Mordkoff@riftio.com" +git config --global user.name "Jeremy Mordkoff" +git config --global push.default simple + +mkdir .ssh +cat <.ssh/config +StrictHostKeyChecking no + + +host git + user git + forwardX11 no + identityFile ~/.ssh/id_git + +EOF + +cat <.ssh/id_git +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAycReMTCf0oDQRagaPmvxokzaWu4h7uBgUc06eJxUnfAO6zAU +RzPHL35+X7xXVONjEY27taMLY3KNaNAl15vKjcidb6PpFMWDLHQrlV5uipTbojgF +rkQ/tZ8PhPSVcoWsSSXJr0jZipIGRZnu3evd7b18qDBlj8eRLR6K2FZKAvVhygXe +Ele5eXEU/McqMh/Dm0ejJ4qp0BtiyEf5tFAUMNnNGt4WgiwQ9CGpdzt/kSfBSgIA +Cx/CEX5GeudpK3Ny2cYHpQGbbdangTzy7EOgG9bNkODM7dtFhmhYWRs9Cdy2xAQn +4I825PpaUYiJW9/G/bZvimgs/wVuLDve/TU+gwIBIwKCAQEAm6YcxtxeCMnFPQym +h+ze+Yu+Y2c+v5clu3Ju71QGwvsEMcYBA7o6klpEOzmFMttMbKCJfX3G9PH4Dwb4 +nwMnOi0LvIXCbxwGGvqIBYNclsqazZjucH3Kv07RdTG1HdTVXP/kumtl/S7Ro2ge +qzJMHcywnwDDYEl+nyYwmEKQ3bSbEKH516stIOzc+1VkajzYVCOmQ4yIuqQD6uh3 +Pwpq/3X1Rsu9Bw1970+P00t+1bKhq8k37biUZDAXPoU6CnY2eLPq35mL0Cc5Wv3S +CDfwTn8BePma3o9pgtbxDDTVcC2+mmV66ny3+8rP0q6uZeJ/vTALOwcXG+LPFT6n +ugVlcwKBgQD3b5uk1/28sn8ehynVNg5l9S/pMCAtsPKkXhwvLolIfn3RnAysf/jR +Au+jNNgF3A3bIv316UN2vK9K14qW5DI7ApDG40yvzh+3Hx106gbCISZroyRdbS2X +yv0kiy0AWsKZd09x1OQAoNWPtxaLgyOLi3Qdx93cvuNt3kQ3UPbTDQKBgQDQwBz+ +1u3euLVvtI10AJMV0LobVAApsfVRCkDRIRgbEd+Ep8lPDAVQ12wS7h4OLk7Iuhul +MBLzRLaRp6ajfBBGkBMjQQpS1EG4/yJRTOrfXAu+1ahH7mWNQTghQtkoAT2hexS3 +5S93LSdeY2mghBHhteeYiPxhs7AjRWQQnqkzzwKBgQCGUoexQg1mb4bWDtwx6iUS +xu4fgIZ/NCvy1ACr5hACyFLuIYM5EkU+Q2wlZdRa880B7mybcAANQduAZmEtV053 +zjFWBlzUdzXJzw/9o51E0CrMt6YG1N48dYIbJvssFAM9XgaOQF6D/4ngTXKjgbQ1 +z1xKrlPeO71KRXV9HVLKVwKBgGVkoF6Fpryi28iK5Z6+c1O9JzHYV9m81j1OH3uF +GlZKgoJC3h8Ud5xLYGD3UG1JsTzsrleMYPnQ6vZKHb0fAJdNSx/AgVtuaRC2b8EW +uzlJ9xOMWQz+w5xhganBYilfsDh9nFlSD72K9d1jfHKJSoOS3jQlR2Knu/Pf4CVU +YNAFAoGBAKU4EcntM5eA1EAsJ29i8GlB3e2+Q7JE1bPO98iAZEmYzew7+4yYN6Nd +8cJhaVM6YUb2K7AU1sLJtibi59NO/hJx1epLgyPMEPVe55IdFw91a479dmv2lP9G +Ma4ub/Xn1ReaRkZYnz/VZEQ598heAJ5hNLkf8EzS8v7iV/leDXjw +-----END RSA PRIVATE KEY----- +EOF + +chmod 700 .ssh +chmod 600 .ssh/* + +git clone git@git:rift.git +cd rift +git checkout lezz-mkvmimage +./scripts/vm_image/mkvmimg --container --modes ui +yum install -y riftware-launchpad +systemctl start rwlp diff --git a/scripts/vm_image/scripts/init_container_osm b/scripts/vm_image/scripts/init_container_osm new file mode 100644 index 0000000..9a3ce5f --- /dev/null +++ b/scripts/vm_image/scripts/init_container_osm @@ -0,0 +1,10 @@ +#!/bin/bash + + +yum -y install wget +mkdir rift +cd rift +wget -O - http://repo.riftio.com/releases/open.riftio.com/OSM/mkvmimg.tar | tar xf - +bash ./mkvmimg --container --modes ui +yum install -y riftware-launchpad +systemctl start rwlp diff --git a/scripts/vm_image/ui-lab.config.sh b/scripts/vm_image/ui-lab.config.sh index fd90004..0a7c913 100644 --- a/scripts/vm_image/ui-lab.config.sh +++ b/scripts/vm_image/ui-lab.config.sh @@ -1,19 +1,4 @@ #!/bin/bash -# -# Copyright 2016 RIFT.IO Inc -# -# 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. -# echo "installing lab scripts" #cmd yum -y --enablerepo='*' install riftware-scripts-internal-lab @@ -28,18 +13,18 @@ cmd "rpm -qa | grep -i rift" #ls -all $STAGING/home/rift/scripts/ echo "running enable_lab" +# For VMs this MUST come from /usr/rift so +# do containers need this from $RIFT_ROOT ??? cmd /usr/rift/scripts/cloud/enable_lab echo "2) checking RPMS" cmd "rpm -qa | grep -i rift" -<<<<<<< HEAD #echo "2a) checking scripts" #cmd "ls -all /home/rift/scripts/" #echo "2b) checking scripts" #ls -all $STAGING/home/rift/scripts/ -======= -echo "2a) checking scripts" -cmd "ls -all /home/rift/scripts/" -echo "2b) checking scripts" -ls -all $STAGING/home/rift/scripts/ ->>>>>>> 124aa0224ed0fc6c0ae399e03292388eab11fe35 + +if [ ! -e /usr/rift/bin/ssh_root ]; then + ln -s /usr/rift/scripts/env/ssh_root /usr/rift/bin/ +fi + diff --git a/scripts/vm_image/ui.config.sh b/scripts/vm_image/ui.config.sh index bf3ee55..3f9f4ca 100644 --- a/scripts/vm_image/ui.config.sh +++ b/scripts/vm_image/ui.config.sh @@ -1,21 +1,5 @@ -# -# Copyright 2016 RIFT.IO Inc -# -# 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. -# - -# -# + +# STANDARD_RIFT_IO_COPYRIGHT # upgrade node binary manually if [[ -f $STAGING/usr/bin/node ]]; then @@ -28,11 +12,13 @@ cmd npm set registry https://npm.riftio.com:4873/ cmd npm set strict-ssl false cmd npm set progress=false -# NPM self-update -echo "===== NPM self-update take #1" -cmd npm install npm@3.8.6 -g -echo "===== NPM self-update take #2 (twice is required to pull in and update everything!)" -cdm npm install npm@3.8.6 -g +if [[ $PLATFORM_OS == 'fc20' ]]; then + # NPM self-update + echo "===== NPM self-update take #1" + cmd npm install npm@3.8.6 -g + echo "===== NPM self-update take #2 (twice is required to pull in and update everything!)" + cmd npm install npm@3.8.6 -g +fi # upgrade node-gyp? #npm explore npm -g -- npm install node-gyp @@ -41,7 +27,7 @@ cdm npm install npm@3.8.6 -g cmd npm install -g --production forever echo "===== Checking Versions:" -echo "node:"; cmd node -v +echo "node:"; cmd $NODEJS -v echo "npm:"; cmd npm -v echo "node-gyp:"; cmd node-gyp -v @@ -49,4 +35,8 @@ echo "node-gyp:"; cmd node-gyp -v echo 'auto_accept: True' >>$STAGING/etc/salt/master cmd systemctl enable salt-master cmd systemctl enable salt-minion -cmd systemctl enable libvirtd \ No newline at end of file +if [[ -f /etc/sysconfig/libvirtd ]]; then + cmd systemctl enable libvirtd +elif [[ -f etc/init/libvirt-bin.conf ]]; then + cmd sysetmctl enable libvirt-bin +fi diff --git a/scripts/vm_image/ui.pip3 b/scripts/vm_image/ui.pip3 index 0b942bf..c9bd999 100644 --- a/scripts/vm_image/ui.pip3 +++ b/scripts/vm_image/ui.pip3 @@ -5,7 +5,6 @@ certifi==2015.4.28 crossbar==0.11.1 dicttoxml ecdsa==0.13 -enum34==1.0.4 futures==2.2.0 junit-xml jsonpath-rw==1.4.0 @@ -23,10 +22,12 @@ pycrypto==2.6.1 PyYAML==3.11 pytest pytest-xdist +python-daemon requests==2.8.1 six==1.10.0 statistics tornado==4.1 +tosca-parser==0.4.1.dev40 websockets xmltodict zake==0.2.1 diff --git a/scripts/vm_image/ui.rpms b/scripts/vm_image/ui.rpms index 3a64686..ec80ee8 100644 --- a/scripts/vm_image/ui.rpms +++ b/scripts/vm_image/ui.rpms @@ -1,491 +1,496 @@ -acl-2.2.52-4.fc20.x86_64 -audit-2.3.2-1.fc20.x86_64 -audit-libs-2.3.2-1.fc20.x86_64 -audit-libs-python-2.3.2-1.fc20.x86_64 -augeas-libs-1.1.0-2.fc20.x86_64 -autogen-libopts-5.18-1.fc20.x86_64 -avahi-libs-0.6.31-21.fc20.x86_64 -basesystem-10.0-9.fc20.noarch -bash-4.2.45-4.fc20.x86_64 -bind-libs-lite-9.9.4-8.fc20.x86_64 -bind-license-9.9.4-8.fc20.noarch -bind-utils -binutils-2.23.88.0.1-13.fc20.x86_64 -boost-filesystem-1.54.0-9.fc20.x86_64 -boost-system-1.54.0-9.fc20.x86_64 -boost-thread-1.54.0-9.fc20.x86_64 -bzip2-1.0.6-9.fc20.x86_64 -bzip2-libs-1.0.6-9.fc20.x86_64 -ca-certificates-2013.1.94-18.fc20.noarch -c-ares-1.10.0-2.fc20.x86_64 -c-ares-devel-1.10.0-2.fc20.x86_64 -ceph-libs-0.67.3-2.fc20.x86_64 -chkconfig-1.3.60-4.fc20.x86_64 -cloud-init-0.7.2-7.fc20.noarch -cloud-utils-growpart-0.27-9.fc20.noarch -coreutils-8.21-18.fc20.x86_64 -corosync-2.3.3-1.fc20.x86_64 -corosynclib-2.3.3-1.fc20.x86_64 -cpio-2.11-24.fc20.x86_64 -cpp-4.8.2-7.fc20.x86_64 -cracklib-2.9.0-5.fc20.x86_64 -cracklib-dicts-2.9.0-5.fc20.x86_64 -cronie-1.4.11-4.fc20.x86_64 -cronie-anacron-1.4.11-4.fc20.x86_64 -crontabs-1.11-6.20121102git.fc20.noarch -cryptopp-5.6.2-3.fc20.x86_64 -cryptsetup-libs-1.6.2-1.fc20.x86_64 -curl-7.32.0-3.fc20.x86_64 -cyrus-sasl-2.1.26-14.fc20.x86_64 -cyrus-sasl-lib-2.1.26-14.fc20.x86_64 -cyrus-sasl-md5-2.1.26-14.fc20.x86_64 -dbus-1.6.12-1.fc20.x86_64 -dbus-libs-1.6.12-1.fc20.x86_64 -device-mapper-1.02.82-5.fc20.x86_64 -device-mapper-event-1.02.82-5.fc20.x86_64 -device-mapper-event-libs-1.02.82-5.fc20.x86_64 -device-mapper-libs-1.02.82-5.fc20.x86_64 -device-mapper-persistent-data-0.2.8-1.fc20.x86_64 -dhclient-4.2.5-26.fc20.x86_64 -dhcp-common-4.2.5-26.fc20.x86_64 -dhcp-libs-4.2.5-26.fc20.x86_64 -diffutils-3.3-4.fc20.x86_64 -dmidecode-2.12-4.fc20.x86_64 -dnsmasq-2.68-1.fc20.x86_64 -dracut-034-64.git20131205.fc20.x86_64 -dracut-config-generic-034-64.git20131205.fc20.x86_64 -dtc-1.4.0-2.fc20.x86_64 -dwz-0.11-2.fc20.x86_64 -e2fsprogs-1.42.8-3.fc20.x86_64 -e2fsprogs-libs-1.42.8-3.fc20.x86_64 -ebtables-2.0.10-11.fc20.x86_64 -elfutils-libelf-0.157-1.fc20.x86_64 -expat-2.1.0-7.fc20.x86_64 -expect-5.45-10.fc20.x86_64 -fedora-logos-21.0.1-1.fc20.x86_64 -fedora-release-20-1.noarch -file-5.14-14.fc20.x86_64 -file-libs-5.14-14.fc20.x86_64 -filesystem-3.2-19.fc20.x86_64 -findutils-4.5.11-4.fc20.x86_64 -fipscheck-1.4.1-2.fc20.x86_64 -fipscheck-lib-1.4.1-2.fc20.x86_64 -freetype-2.5.0-4.fc20.x86_64 -fuse-libs-2.9.3-2.fc20.x86_64 -gawk-4.1.0-2.fc20.x86_64 -gcc-4.8.2-7.fc20.x86_64 -gcc-c++-4.8.2-7.fc20.x86_64 -gdbm-1.10-7.fc20.x86_64 -gettext-0.18.3.1-1.fc20.x86_64 -gettext-libs-0.18.3.1-1.fc20.x86_64 -glib2 -glibc -glibc-common -glibc-devel -glibc-headers -glusterfs-3.4.2-1.fc20.x86_64 -glusterfs-api-3.4.2-1.fc20.x86_64 -glusterfs-fuse-3.4.2-1.fc20.x86_64 -glusterfs-libs-3.4.2-1.fc20.x86_64 -gmp-5.1.2-2.fc20.x86_64 -gnupg2-2.0.22-1.fc20.x86_64 -gnutls-3.1.20-1.fc20.x86_64 -gnutls-dane-3.1.20-1.fc20.x86_64 -gnutls-utils-3.1.20-1.fc20.x86_64 -gpgme-1.3.2-4.fc20.x86_64 -grep-2.15-1.fc20.x86_64 -groff-base-1.22.2-8.fc20.x86_64 -grub2-2.00-25.fc20.x86_64 -grub2-tools-2.00-25.fc20.x86_64 -grubby-8.28-1.fc20.x86_64 -gyp-0.1-0.11.1617svn.fc20.noarch -gzip-1.6-2.fc20.x86_64 -hardlink-1.0-18.fc20.x86_64 -heat-cfntools-1.2.3-2.fc20.noarch -hostname-3.13-2.fc20.x86_64 -http-parser-2.0-5.20121128gitcd01361.fc20.x86_64 -http-parser-devel-2.0-5.20121128gitcd01361.fc20.x86_64 -httpd -hwdata-0.260-1.fc20.noarch -info-5.1-4.fc20.x86_64 -initscripts-9.50-1.fc20.x86_64 -iproute-3.11.0-1.fc20.x86_64 -iptables-1.4.19.1-1.fc20.x86_64 -iptables-services-1.4.19.1-1.fc20.x86_64 -iputils-20121221-4.fc20.x86_64 -iscsi-initiator-utils-6.2.0.873-17.fc20.x86_64 -jbigkit-libs-2.0-9.fc20.x86_64 -json-c-0.11-3.fc20.x86_64 -kbd-1.15.5-12.fc20.x86_64 -kbd-legacy-1.15.5-12.fc20.noarch -kbd-misc-1.15.5-12.fc20.noarch -keyutils -keyutils-libs -keyutils-libs-devel -kmod-15-1.fc20.x86_64 -kmod-libs-15-1.fc20.x86_64 -kpartx-0.4.9-55.fc20.x86_64 -krb5-devel-1.11.3-39.fc20.x86_64 -krb5-libs-1.11.3-39.fc20.x86_64 -lcms-libs-1.19-10.fc20.x86_64 -ldns-1.6.16-6.fc20.x86_64 -less-458-4.fc20.x86_64 -leveldb-1.12.0-5.fc20.x86_64 -libacl-2.2.52-4.fc20.x86_64 -libaio-0.3.109-8.fc20.x86_64 -libassuan-2.1.0-2.fc20.x86_64 -libattr-2.4.47-3.fc20.x86_64 -libblkid-2.24-2.fc20.x86_64 -libcap-2.22-7.fc20.x86_64 -libcap-ng-0.7.3-6.fc20.x86_64 -libcgroup-0.38-7.fc20.x86_64 -libcom_err-1.42.8-3.fc20.x86_64 -libcom_err-devel-1.42.8-3.fc20.x86_64 -libcroco-0.6.8-3.fc20.x86_64 -libcurl-7.32.0-3.fc20.x86_64 -libdaemon-0.14-6.fc20.x86_64 -libdb-5.3.28-1.fc20.x86_64 -libdb-utils-5.3.28-1.fc20.x86_64 -libedit-3.1-2.20130601cvs.fc20.x86_64 -libestr-0.1.5-2.fc20.x86_64 -libevent-2.0.21-3.fc20.x86_64 -libffi-3.0.13-5.fc20.x86_64 -libgcc-4.8.2-7.fc20.x86_64 -libgcrypt-1.5.3-2.fc20.x86_64 -libgomp-4.8.2-7.fc20.x86_64 -libgpg-error-1.12-1.fc20.x86_64 -libibverbs-1.1.7-3.fc20.x86_64 -libicu-50.1.2-10.fc20.x86_64 -libidn-1.28-2.fc20.x86_64 -libiscsi-1.9.0-4.fc20.x86_64 -libjpeg-turbo-1.3.0-1.fc20.x86_64 -libmetalink-0.1.2-4.fc20.x86_64 -libmount-2.24-2.fc20.x86_64 -libmpc-1.0.1-2.fc20.x86_64 -libnfsidmap-0.25-7.fc20.x86_64 -libnl3-3.2.21-2.fc20.x86_64 -libpcap-1.5.3-1.fc20.x86_64 -libpciaccess-0.13.2-1.fc20.x86_64 -libpipeline-1.2.4-2.fc20.x86_64 -libpng-1.6.3-3.fc20.x86_64 -libpwquality-1.2.3-1.fc20.x86_64 -libqb-0.16.0-1.fc20.x86_64 -librdmacm-1.0.17-2.fc20.x86_64 -libselinux-2.2.1-6.fc20.x86_64 -libselinux-devel-2.2.1-6.fc20.x86_64 -libselinux-python-2.2.1-6.fc20.x86_64 -libselinux-utils-2.2.1-6.fc20.x86_64 -libsemanage-2.1.10-14.fc20.x86_64 -libsemanage-python-2.1.10-14.fc20.x86_64 -libsepol-2.1.9-2.fc20.x86_64 -libsepol-devel-2.1.9-2.fc20.x86_64 -libss-1.42.8-3.fc20.x86_64 -libssh2-1.4.3-8.fc20.x86_64 -libstdc++-4.8.2-1.fc20.x86_64 -libtasn1-3.3-2.fc20.x86_64 -libtiff-4.0.3-12.fc20.x86_64 -libtirpc-0.2.4-1.0.fc20.x86_64 -libunistring-0.9.3-9.fc20.x86_64 -libuser-0.60-3.fc20.x86_64 -libutempter-1.1.6-3.fc20.x86_64 -libuuid-2.24-2.fc20.x86_64 -libuv-0.10.21-1.fc20.x86_64 -libuv-devel-0.10.21-1.fc20.x86_64 -libverto-0.2.5-3.fc20.x86_64 -libverto-devel-0.2.5-3.fc20.x86_64 -libvirt-1.1.3.3-2.fc20.x86_64 -libvirt-client-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-config-network-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-config-nwfilter-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-interface-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-libxl-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-lxc-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-network-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-nodedev-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-nwfilter-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-qemu-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-secret-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-storage-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-uml-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-vbox-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-driver-xen-1.1.3.3-2.fc20.x86_64 -libvirt-daemon-lxc-1.1.3.3-2.fc20.x86_64 -libwebp-0.3.1-2.fc20.x86_64 -libwsman1-2.3.6-8.fc20.x86_64 -libxml2-2.9.1-2.fc20.x86_64 -libxslt-1.1.28-5.fc20.x86_64 -libyaml-0.1.4-5.fc20.x86_64 -linux-atm-libs-2.5.1-8.fc20.x86_64 -logrotate-3.8.7-1.fc20.x86_64 -lua-5.2.2-5.fc20.x86_64 -lvm2-2.02.103-5.fc20.x86_64 -lvm2-libs-2.02.103-5.fc20.x86_64 -lxc-0.9.0-2.fc20.x86_64 -lxc-extra-0.9.0-2.fc20.x86_64 -lxc-libs-0.9.0-2.fc20.x86_64 -lzo-2.06-5.fc20.x86_64 -lzop-1.03-9.fc20.x86_64 -m2crypto-0.21.1-13.fc20.x86_64 -make-4.0-3.1.fc22.x86_64 -man-db-2.6.5-2.fc20.x86_64 -mozjs17-17.0.0-8.fc20.x86_64 -mpfr-3.1.2-4.fc20.x86_64 -mtools-4.0.18-4.fc20.x86_64 -nbd -ncurses-5.9-12.20130511.fc20.x86_64 -ncurses-base-5.9-12.20130511.fc20.noarch -ncurses-libs-5.9-12.20130511.fc20.x86_64 -netcf-libs-0.2.3-5.fc20.x86_64 -net-snmp-libs-5.7.2-16.fc20.x86_64 -nettle-2.7.1-3.fc20.x86_64 -net-tools-2.0-0.15.20131119git.fc20.x86_64 -nfs-utils-1.2.9-3.0.fc20.x86_64 -nmap-ncat-6.40-2.fc20.x86_64 -node-gyp-0.10.6-2.fc20.noarch -nodejs-0.10.24-1.fc20.x86_64 -nodejs-abbrev-1.0.4-7.fc20.noarch -nodejs-ansi-0.2.1-1.fc20.noarch -nodejs-archy-0.0.2-9.fc20.noarch -nodejs-asn1-0.1.11-4.fc20.noarch -nodejs-assert-plus-0.1.4-1.fc20.noarch -nodejs-async-0.2.9-3.fc20.noarch -nodejs-aws-sign-0.3.0-2.fc20.noarch -nodejs-block-stream-0.0.7-1.fc20.noarch -nodejs-boom-0.4.2-3.fc20.noarch -nodejs-child-process-close-0.1.1-3.fc20.noarch -nodejs-chmodr-0.1.0-5.fc20.noarch -nodejs-chownr-0.0.1-10.fc20.noarch -nodejs-cmd-shim-1.1.0-4.fc20.noarch -nodejs-combined-stream-0.0.4-4.fc20.noarch -nodejs-config-chain-1.1.7-2.fc20.noarch -nodejs-cookie-jar-0.3.0-2.fc20.noarch -nodejs-couch-login-0.1.18-1.fc20.noarch -nodejs-cryptiles-0.2.2-1.fc20.noarch -nodejs-ctype-0.5.3-4.fc20.noarch -nodejs-delayed-stream-0.0.5-6.fc20.noarch -nodejs-devel-0.10.24-1.fc20.x86_64 -nodejs-editor-0.0.4-3.fc20.noarch -nodejs-forever-agent-0.5.0-2.fc20.noarch -nodejs-form-data-0.1.1-1.fc20.noarch -nodejs-fstream-0.1.24-1.fc20.noarch -nodejs-fstream-ignore-0.0.7-2.fc20.noarch -nodejs-fstream-npm-0.1.5-2.fc20.noarch -nodejs-github-url-from-git-1.1.1-3.fc20.noarch -nodejs-glob-3.2.6-1.fc20.noarch -nodejs-graceful-fs-2.0.0-3.fc20.noarch -nodejs-hawk-1.0.0-1.fc20.noarch -nodejs-hoek-0.9.1-2.fc20.noarch -nodejs-http-signature-0.10.0-4.fc20.noarch -nodejs-inherits-2.0.0-4.fc20.noarch -nodejs-ini-1.1.0-4.fc20.noarch -nodejs-init-package-json-0.0.10-2.fc20.noarch -nodejs-json-stringify-safe-5.0.0-2.fc20.noarch -nodejs-lockfile-0.4.2-1.fc20.noarch -nodejs-lru-cache-2.3.0-4.fc20.noarch -nodejs-mime-1.2.11-1.fc20.noarch -nodejs-minimatch-0.2.12-3.fc20.noarch -nodejs-mkdirp-0.3.5-4.fc20.noarch -nodejs-mute-stream-0.0.4-1.fc20.noarch -nodejs-node-uuid-1.4.1-1.fc20.noarch -nodejs-nopt-2.1.2-1.fc20.noarch -nodejs-normalize-package-data-0.2.1-1.fc20.noarch -nodejs-npmconf-0.1.2-1.fc20.noarch -nodejs-npmlog-0.0.4-2.fc20.noarch -nodejs-npm-registry-client-0.2.28-1.fc20.noarch -nodejs-npm-user-validate-0.0.3-2.fc20.noarch -nodejs-oauth-sign-0.3.0-2.fc20.noarch -nodejs-once-1.1.1-6.fc20.noarch -nodejs-opener-1.3.0-8.fc20.noarch -nodejs-osenv-0.0.3-6.fc20.noarch -nodejs-packaging-4-1.fc20.noarch -nodejs-promzard-0.2.0-7.fc20.noarch -nodejs-proto-list-1.2.2-6.fc20.noarch -nodejs-qs-0.6.5-3.fc20.noarch -nodejs-read-1.0.5-1.fc20.noarch -nodejs-read-installed-0.2.3-1.fc20.noarch -nodejs-read-package-json-1.1.3-1.fc20.noarch -nodejs-request-2.25.0-1.fc20.noarch -nodejs-retry-0.6.0-6.fc20.noarch -nodejs-rimraf-2.2.2-1.fc20.noarch -nodejs-semver-2.1.0-1.fc20.noarch -nodejs-sha-1.2.1-1.fc20.noarch -nodejs-sigmund-1.0.0-6.fc20.noarch -nodejs-slide-1.1.5-1.fc20.noarch -nodejs-sntp-0.2.4-2.fc20.noarch -nodejs-tar-0.1.18-1.fc20.noarch -nodejs-tunnel-agent-0.3.0-2.fc20.noarch -nodejs-uid-number-0.0.3-8.fc20.noarch -nodejs-which-1.0.5-9.fc20.noarch -npm -nspr-4.10.1-1.fc20.x86_64 -nss-3.15.2-3.fc20.x86_64 -nss-softokn-3.15.2-2.fc20.x86_64 -nss-softokn-freebl-3.17.1-2.fc20.x86_64 -nss-sysinit-3.15.2-3.fc20.x86_64 -nss-tools-3.15.2-3.fc20.x86_64 -nss-util-3.15.2-2.fc20.x86_64 -numactl-libs-2.0.9-1.fc20.x86_64 -numad-0.5-12.20130814git.fc20.x86_64 -openldap-2.4.36-4.fc20.x86_64 -openpgm-5.2.122-2.fc20.x86_64 -openssh -openssh-clients -openssh-server -openssl -openssl-devel -openssl-libs -os-prober-1.58-4.fc20.x86_64 -p11-kit-0.20.1-1.fc20.x86_64 -p11-kit-trust-0.20.1-1.fc20.x86_64 -pam-1.1.8-1.fc20.x86_64 -parted-3.1-13.fc20.x86_64 -passwd-0.79-2.fc20.x86_64 -pciutils-3.2.1-1.fc20.x86_64 -pciutils-libs-3.2.1-1.fc20.x86_64 -pcre-8.33-4.fc20.x86_64 -pcre-devel-8.33-4.fc20.x86_64 -perl-5.18.2-289.fc20.x86_64 -perl-Carp-1.26-245.fc20.noarch -perl-constant-1.27-292.fc20.noarch -perl-Encode-2.54-2.fc20.x86_64 -perl-Exporter-5.68-293.fc20.noarch -perl-File-Path-2.09-292.fc20.noarch -perl-File-Temp-0.23.01-4.fc20.noarch -perl-Filter-1.49-5.fc20.x86_64 -perl-Getopt-Long-2.42-1.fc20.noarch -perl-HTTP-Tiny-0.034-4.fc20.noarch -perl-libs-5.18.2-289.fc20.x86_64 -perl-macros-5.18.2-289.fc20.x86_64 -perl-Module-CoreList-3.03-289.fc20.noarch -perl-parent-0.228-1.fc20.noarch -perl-PathTools-3.40-291.fc20.x86_64 -perl-Pod-Escapes-1.04-289.fc20.noarch -perl-podlators-2.5.1-291.fc20.noarch -perl-Pod-Perldoc-3.20-7.fc20.noarch -perl-Pod-Simple-3.28-292.fc20.noarch -perl-Pod-Usage-1.63-4.fc20.noarch -perl-Scalar-List-Utils-1.31-293.fc20.x86_64 -perl-Socket-2.013-1.fc20.x86_64 -perl-srpm-macros-1-10.fc20.noarch -perl-Storable-2.45-2.fc20.x86_64 -perl-Text-ParseWords-3.29-3.fc20.noarch -perl-threads-1.89-1.fc20.x86_64 -perl-threads-shared-1.45-1.fc20.x86_64 -perl-Time-HiRes-1.9726-1.fc20.x86_64 -perl-Time-Local-1.2300-291.fc20.noarch -perl-version-0.99.04-2.fc20.x86_64 -php -php-gd -pinentry-0.8.1-11.fc20.x86_64 -pkgconfig-0.28-3.fc20.x86_64 -pm-utils-1.4.1-26.fc20.x86_64 -policycoreutils-2.2.2-3.fc20.x86_64 -policycoreutils-python-2.2.2-3.fc20.x86_64 -polkit-0.112-2.fc20.x86_64 -polkit-pkla-compat-0.1-3.fc20.x86_64 -popt-1.13-15.fc20.x86_64 -procps-ng-3.3.8-14.fc20.x86_64 -pth-2.0.7-21.fc20.x86_64 -pygpgme-0.3-8.fc20.x86_64 -pyliblzma-0.5.3-10.fc20.x86_64 -python-2.7.5-9.fc20.x86_64 -python3-3.3.2-8.fc20.x86_64 -python3-libs-3.3.2-8.fc20.x86_64 -python3-lxc-0.9.0-2.fc20.x86_64 -python3-pip-1.4.1-1.fc20.noarch -python3-setuptools-1.4.2-1.fc20.noarch -python-babel-1.3-2.fc20.noarch -python-backports-1.0-3.fc20.x86_64 -python-backports-ssl_match_hostname-3.4.0.2-1.fc20.noarch -python-boto-2.13.3-1.fc20.noarch -python-chardet-2.0.1-7.fc20.noarch -python-cheetah-2.4.4-5.fc20.x86_64 -python-configobj-4.7.2-7.fc20.noarch -python-crypto-2.6.1-1.fc20.x86_64 -python-iniparse-0.4-9.fc20.noarch -python-IPy-0.75-6.fc20.noarch -python-jinja2-2.7.1-1.fc20.noarch -python-kitchen-1.1.1-5.fc20.noarch -python-libs-2.7.5-9.fc20.x86_64 -python-markdown-2.3.1-3.fc20.noarch -python-markupsafe-0.18-1.fc20.x86_64 -python-msgpack-0.1.13-4.fc20.x86_64 -python-pillow-2.2.1-2.fc20.x86_64 -python-prettytable-0.6.1-3.fc20.noarch -python-psutil-1.0.1-1.fc20.x86_64 -python-pycurl-7.19.0-17.20120408git9b8f4e38.fc20.x86_64 -python-pygments-1.4-9.fc20.noarch -python-requests-1.2.3-5.fc20.noarch -python-setuptools-1.3.1-1.fc20.noarch -python-six-1.4.1-1.fc20.noarch -python-urlgrabber-3.9.1-32.fc20.noarch -python-urllib3-1.7-4.fc20.noarch -python-zmq-13.0.2-1.fc20.x86_64 -pyxattr-0.5.1-4.fc20.x86_64 -PyYAML-3.10-9.fc20.x86_64 -qemu-img-1.6.1-3.fc20.x86_64 -qrencode-libs-3.4.2-1.fc20.x86_64 -quota-4.01-10.fc20.x86_64 -quota-nls-4.01-10.fc20.noarch -radvd-1.9.2-4.fc20.x86_64 -readline-6.2-8.fc20.x86_64 -redhat-rpm-config-9.1.0-54.fc20.noarch -rootfiles-8.1-16.fc20.noarch -rpcbind-0.2.1-0.2.fc20.x86_64 -rpm-4.11.1-7.fc20.x86_64 -rpm-build-libs-4.11.1-7.fc20.x86_64 -rpm-libs-4.11.1-7.fc20.x86_64 -rpm-python-4.11.1-7.fc20.x86_64 -rsync-3.1.0-1pre1.fc20.x86_64 -rsyslog-7.4.2-2.fc20.x86_64 -salt-master-2015.5.0-1.fc20.noarch -salt-2015.5.0-1.fc20.noarch -salt-minion-2015.5.0-1.fc20.noarch -screen -sed-4.2.2-5.fc20.x86_64 -selinux-policy-3.12.1-106.fc20.noarch -selinux-policy-targeted-3.12.1-106.fc20.noarch -setools-libs-3.3.7-41.fc20.x86_64 -setup-2.8.71-2.fc20.noarch -shadow-utils-4.1.5.1-8.fc20.x86_64 -shared-mime-info-1.2-1.fc20.x86_64 -sheepdog-0.3.0-5.fc20.x86_64 -snappy-1.1.0-2.fc20.x86_64 -socat-1.7.2.2-3.fc20.x86_64 -sqlite-3.8.1-2.fc20.x86_64 -sshpass-1.05-5.fc20.x86_64 -sudo-1.8.8-1.fc20.x86_64 -syslinux-4.05-7.fc20.x86_64 -syslinux-extlinux-4.05-7.fc20.x86_64 -systemd-208-9.fc20.x86_64 -systemd-libs-208-9.fc20.x86_64 -sysvinit-tools-2.88-14.dsf.fc20.x86_64 -tar-1.26-29.fc20.x86_64 -tcl-8.5.14-1.fc20.x86_64 -tcp_wrappers-7.6-76.fc20.x86_64 -tcp_wrappers-libs-7.6-76.fc20.x86_64 -tmux -trousers-0.3.11.2-1.fc20.x86_64 -tzdata-2013h-1.fc20.noarch -uboot-tools-2013.10-3.fc20.x86_64 -unbound-libs-1.4.21-1.fc20.x86_64 -ustr-1.0.4-15.fc20.x86_64 -util-linux-2.24-2.fc20.x86_64 -v8-3.14.5.10-3.fc20.x86_64 -v8-devel-3.14.5.10-3.fc20.x86_64 -vim-minimal-7.4.027-2.fc20.x86_64 -which-2.20-6.fc20.x86_64 -xen-libs-4.3.1-8.fc20.x86_64 -xen-licenses-4.3.1-8.fc20.x86_64 -xz-5.1.2-6alpha.fc20.x86_64 -xz-libs-5.1.2-6alpha.fc20.x86_64 -yajl-2.0.4-3.fc20.x86_64 -yum-3.4.3-106.fc20.noarch -yum-metadata-parser-1.1.4-9.fc20.x86_64 -yum-utils-1.1.31-20.fc20.noarch -zeromq3-3.2.4-1.fc20.x86_64 -zip-3.0-9.fc20.x86_64 -zlib-1.2.8-3.fc20.x86_64 -zlib-devel-1.2.8-3.fc20.x86_64 -zookeeper-java.noarch +fc20: acl-2.2.52-4.fc20.x86_64 +fc20: audit-2.3.2-1.fc20.x86_64 +fc20: audit-libs-2.3.2-1.fc20.x86_64 +fc20: audit-libs-python-2.3.2-1.fc20.x86_64 +fc20: augeas-libs-1.1.0-2.fc20.x86_64 +fc20: autogen-libopts-5.18-1.fc20.x86_64 +fc20: avahi-libs-0.6.31-21.fc20.x86_64 +fc20: basesystem-10.0-9.fc20.noarch +fc20: bash-4.2.45-4.fc20.x86_64 +fc20: bind-libs-lite-9.9.4-8.fc20.x86_64 +fc20: bind-license-9.9.4-8.fc20.noarch +fc20: bind-utils +fc20: binutils-2.23.88.0.1-13.fc20.x86_64 +fc20: boost-filesystem-1.54.0-9.fc20.x86_64 +fc20: boost-system-1.54.0-9.fc20.x86_64 +fc20: boost-thread-1.54.0-9.fc20.x86_64 +fc20: bridge-utils +fc20: bzip2-1.0.6-9.fc20.x86_64 +fc20: bzip2-libs-1.0.6-9.fc20.x86_64 +fc20: ca-certificates-2013.1.94-18.fc20.noarch +fc20: c-ares-1.10.0-2.fc20.x86_64 +fc20: c-ares-devel-1.10.0-2.fc20.x86_64 +fc20: ceph-libs-0.67.3-2.fc20.x86_64 +fc20: chkconfig-1.3.60-4.fc20.x86_64 +fc20: cloud-init-0.7.2-7.fc20.noarch +fc20: cloud-utils-growpart-0.27-9.fc20.noarch +fc20: coreutils-8.21-18.fc20.x86_64 +fc20: corosync-2.3.3-1.fc20.x86_64 +fc20: corosynclib-2.3.3-1.fc20.x86_64 +fc20: cpio-2.11-24.fc20.x86_64 +fc20: cpp-4.8.2-7.fc20.x86_64 +fc20: cracklib-2.9.0-5.fc20.x86_64 +fc20: cracklib-dicts-2.9.0-5.fc20.x86_64 +fc20: cronie-1.4.11-4.fc20.x86_64 +fc20: cronie-anacron-1.4.11-4.fc20.x86_64 +fc20: crontabs-1.11-6.20121102git.fc20.noarch +fc20: cryptopp-5.6.2-3.fc20.x86_64 +fc20: cryptsetup-libs-1.6.2-1.fc20.x86_64 +fc20: curl-7.32.0-3.fc20.x86_64 +fc20: cyrus-sasl-2.1.26-14.fc20.x86_64 +fc20: cyrus-sasl-lib-2.1.26-14.fc20.x86_64 +fc20: cyrus-sasl-md5-2.1.26-14.fc20.x86_64 +fc20: dbus-1.6.12-1.fc20.x86_64 +fc20: dbus-libs-1.6.12-1.fc20.x86_64 +fc20: device-mapper-1.02.82-5.fc20.x86_64 +fc20: device-mapper-event-1.02.82-5.fc20.x86_64 +fc20: device-mapper-event-libs-1.02.82-5.fc20.x86_64 +fc20: device-mapper-libs-1.02.82-5.fc20.x86_64 +fc20: device-mapper-persistent-data-0.2.8-1.fc20.x86_64 +fc20: dhclient-4.2.5-26.fc20.x86_64 +fc20: dhcp-common-4.2.5-26.fc20.x86_64 +fc20: dhcp-libs-4.2.5-26.fc20.x86_64 +fc20: diffutils-3.3-4.fc20.x86_64 +fc20: dmidecode-2.12-4.fc20.x86_64 +fc20: dnsmasq-2.68-1.fc20.x86_64 +fc20: dracut-034-64.git20131205.fc20.x86_64 +fc20: dracut-config-generic-034-64.git20131205.fc20.x86_64 +fc20: dtc-1.4.0-2.fc20.x86_64 +fc20: dwz-0.11-2.fc20.x86_64 +fc20: e2fsprogs-1.42.8-3.fc20.x86_64 +fc20: e2fsprogs-libs-1.42.8-3.fc20.x86_64 +fc20: ebtables-2.0.10-11.fc20.x86_64 +fc20: elfutils-libelf-0.157-1.fc20.x86_64 +fc20: expat-2.1.0-7.fc20.x86_64 +fc20: expect-5.45-10.fc20.x86_64 +fc20: fedora-logos-21.0.1-1.fc20.x86_64 +fc20: fedora-release-20-1.noarch +fc20: file-5.14-14.fc20.x86_64 +fc20: file-libs-5.14-14.fc20.x86_64 +fc20: filesystem-3.2-19.fc20.x86_64 +fc20: findutils-4.5.11-4.fc20.x86_64 +fc20: fipscheck-1.4.1-2.fc20.x86_64 +fc20: fipscheck-lib-1.4.1-2.fc20.x86_64 +fc20: freetype-2.5.0-4.fc20.x86_64 +ub16: libfreetype6-dev +fc20: fuse-libs-2.9.3-2.fc20.x86_64 +fc20: gawk-4.1.0-2.fc20.x86_64 +fc20: gcc-4.8.2-7.fc20.x86_64 +fc20: gcc-c++-4.8.2-7.fc20.x86_64 +fc20: gdbm-1.10-7.fc20.x86_64 +fc20: gettext-0.18.3.1-1.fc20.x86_64 +fc20: gettext-libs-0.18.3.1-1.fc20.x86_64 +fc20: glib2 +fc20: glibc +fc20: glibc-common +fc20: glibc-devel +fc20: glibc-headers +fc20: glusterfs-3.4.2-1.fc20.x86_64 +fc20: glusterfs-api-3.4.2-1.fc20.x86_64 +fc20: glusterfs-fuse-3.4.2-1.fc20.x86_64 +fc20: glusterfs-libs-3.4.2-1.fc20.x86_64 +fc20: gmp-5.1.2-2.fc20.x86_64 +fc20: gnupg2-2.0.22-1.fc20.x86_64 +fc20: gnutls-3.1.20-1.fc20.x86_64 +fc20: gnutls-dane-3.1.20-1.fc20.x86_64 +fc20: gnutls-utils-3.1.20-1.fc20.x86_64 +fc20: gpgme-1.3.2-4.fc20.x86_64 +fc20: grep-2.15-1.fc20.x86_64 +fc20: groff-base-1.22.2-8.fc20.x86_64 +fc20: grub2-2.00-25.fc20.x86_64 +fc20: grub2-tools-2.00-25.fc20.x86_64 +fc20: grubby-8.28-1.fc20.x86_64 +fc20: gyp-0.1-0.11.1617svn.fc20.noarch +fc20: gzip-1.6-2.fc20.x86_64 +fc20: hardlink-1.0-18.fc20.x86_64 +fc20: heat-cfntools-1.2.3-2.fc20.noarch +fc20: hostname-3.13-2.fc20.x86_64 +fc20: http-parser-2.0-5.20121128gitcd01361.fc20.x86_64 +fc20: http-parser-devel-2.0-5.20121128gitcd01361.fc20.x86_64 +fc20: hwdata-0.260-1.fc20.noarch +fc20: info-5.1-4.fc20.x86_64 +fc20: initscripts-9.50-1.fc20.x86_64 +fc20: iproute-3.11.0-1.fc20.x86_64 +fc20: iptables-1.4.19.1-1.fc20.x86_64 +fc20: iptables-services-1.4.19.1-1.fc20.x86_64 +fc20: iputils-20121221-4.fc20.x86_64 +fc20: iscsi-initiator-utils-6.2.0.873-17.fc20.x86_64 +fc20: jbigkit-libs-2.0-9.fc20.x86_64 +fc20: json-c-0.11-3.fc20.x86_64 +fc20: kbd-1.15.5-12.fc20.x86_64 +fc20: kbd-legacy-1.15.5-12.fc20.noarch +fc20: kbd-misc-1.15.5-12.fc20.noarch +fc20: keyutils +fc20: keyutils-libs +fc20: keyutils-libs-devel +fc20: kmod-15-1.fc20.x86_64 +fc20: kmod-libs-15-1.fc20.x86_64 +fc20: kpartx-0.4.9-55.fc20.x86_64 +fc20: krb5-devel-1.11.3-39.fc20.x86_64 +fc20: krb5-libs-1.11.3-39.fc20.x86_64 +fc20: lcms-libs-1.19-10.fc20.x86_64 +fc20: ldns-1.6.16-6.fc20.x86_64 +fc20: less-458-4.fc20.x86_64 +fc20: leveldb-1.12.0-5.fc20.x86_64 +fc20: libacl-2.2.52-4.fc20.x86_64 +fc20: libaio-0.3.109-8.fc20.x86_64 +fc20: libassuan-2.1.0-2.fc20.x86_64 +fc20: libattr-2.4.47-3.fc20.x86_64 +fc20: libblkid-2.24-2.fc20.x86_64 +fc20: libcap-2.22-7.fc20.x86_64 +fc20: libcap-ng-0.7.3-6.fc20.x86_64 +fc20: libcgroup-0.38-7.fc20.x86_64 +fc20: libcom_err-1.42.8-3.fc20.x86_64 +fc20: libcom_err-devel-1.42.8-3.fc20.x86_64 +fc20: libcroco-0.6.8-3.fc20.x86_64 +fc20: libcurl-7.32.0-3.fc20.x86_64 +fc20: libdaemon-0.14-6.fc20.x86_64 +fc20: libdb-5.3.28-1.fc20.x86_64 +fc20: libdb-utils-5.3.28-1.fc20.x86_64 +fc20: libedit-3.1-2.20130601cvs.fc20.x86_64 +fc20: libestr-0.1.5-2.fc20.x86_64 +fc20: libevent-2.0.21-3.fc20.x86_64 +fc20: libffi-3.0.13-5.fc20.x86_64 +ub16: libffi-dev +fc20: libgcc-4.8.2-7.fc20.x86_64 +fc20: libgcrypt-1.5.3-2.fc20.x86_64 +fc20: libgomp-4.8.2-7.fc20.x86_64 +fc20: libgpg-error-1.12-1.fc20.x86_64 +fc20: libibverbs-1.1.7-3.fc20.x86_64 +fc20: libicu-50.1.2-10.fc20.x86_64 +fc20: libidn-1.28-2.fc20.x86_64 +fc20: libiscsi-1.9.0-4.fc20.x86_64 +fc20: libjpeg-turbo-1.3.0-1.fc20.x86_64 +fc20: libmetalink-0.1.2-4.fc20.x86_64 +fc20: libmount-2.24-2.fc20.x86_64 +fc20: libmpc-1.0.1-2.fc20.x86_64 +fc20: libnfsidmap-0.25-7.fc20.x86_64 +fc20: libnl3-3.2.21-2.fc20.x86_64 +fc20: libpcap-1.5.3-1.fc20.x86_64 +fc20: libpciaccess-0.13.2-1.fc20.x86_64 +fc20: libpipeline-1.2.4-2.fc20.x86_64 +fc20: libpng-1.6.3-3.fc20.x86_64 +ub16: libpng12-dev +fc20: libpwquality-1.2.3-1.fc20.x86_64 +fc20: libqb-0.16.0-1.fc20.x86_64 +fc20: librdmacm-1.0.17-2.fc20.x86_64 +fc20: libselinux-2.2.1-6.fc20.x86_64 +fc20: libselinux-devel-2.2.1-6.fc20.x86_64 +fc20: libselinux-python-2.2.1-6.fc20.x86_64 +fc20: libselinux-utils-2.2.1-6.fc20.x86_64 +fc20: libsemanage-2.1.10-14.fc20.x86_64 +fc20: libsemanage-python-2.1.10-14.fc20.x86_64 +fc20: libsepol-2.1.9-2.fc20.x86_64 +fc20: libsepol-devel-2.1.9-2.fc20.x86_64 +fc20: libss-1.42.8-3.fc20.x86_64 +fc20: libssh2-1.4.3-8.fc20.x86_64 +fc20: libstdc++-4.8.2-1.fc20.x86_64 +fc20: libtasn1-3.3-2.fc20.x86_64 +fc20: libtiff-4.0.3-12.fc20.x86_64 +fc20: libtirpc-0.2.4-1.0.fc20.x86_64 +fc20: libunistring-0.9.3-9.fc20.x86_64 +fc20: libuser-0.60-3.fc20.x86_64 +fc20: libutempter-1.1.6-3.fc20.x86_64 +fc20: libuuid-2.24-2.fc20.x86_64 +fc20: libuv-0.10.21-1.fc20.x86_64 +fc20: libuv-devel-0.10.21-1.fc20.x86_64 +fc20: libverto-0.2.5-3.fc20.x86_64 +fc20: libverto-devel-0.2.5-3.fc20.x86_64 +fc20: libvirt-1.1.3.3-2.fc20.x86_64 +ub16: libvirt-bin +fc20: libvirt-client-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-config-network-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-config-nwfilter-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-interface-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-libxl-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-lxc-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-network-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-nodedev-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-nwfilter-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-qemu-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-secret-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-storage-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-uml-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-vbox-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-driver-xen-1.1.3.3-2.fc20.x86_64 +fc20: libvirt-daemon-lxc-1.1.3.3-2.fc20.x86_64 +fc20: libwebp-0.3.1-2.fc20.x86_64 +fc20: libwsman1-2.3.6-8.fc20.x86_64 +fc20: libxml2-2.9.1-2.fc20.x86_64 +fc20: libxslt-1.1.28-5.fc20.x86_64 +fc20: libyaml-0.1.4-5.fc20.x86_64 +fc20: linux-atm-libs-2.5.1-8.fc20.x86_64 +fc20: logrotate-3.8.7-1.fc20.x86_64 +fc20: lua-5.2.2-5.fc20.x86_64 +fc20: lvm2-2.02.103-5.fc20.x86_64 +fc20: lvm2-libs-2.02.103-5.fc20.x86_64 +fc20: lxc-0.9.0-2.fc20.x86_64 +fc20: lxc-extra-0.9.0-2.fc20.x86_64 +fc20: lxc-libs-0.9.0-2.fc20.x86_64 +fc20: lzo-2.06-5.fc20.x86_64 +fc20: lzop-1.03-9.fc20.x86_64 +fc20: m2crypto-0.21.1-13.fc20.x86_64 +fc20: make-4.0-3.1.fc22.x86_64 +fc20: man-db-2.6.5-2.fc20.x86_64 +fc20: mozjs17-17.0.0-8.fc20.x86_64 +fc20: mpfr-3.1.2-4.fc20.x86_64 +fc20: mtools-4.0.18-4.fc20.x86_64 +fc20: nbd +fc20: ncurses-5.9-12.20130511.fc20.x86_64 +fc20: ncurses-base-5.9-12.20130511.fc20.noarch +fc20: ncurses-libs-5.9-12.20130511.fc20.x86_64 +fc20: netcf-libs-0.2.3-5.fc20.x86_64 +fc20: net-snmp-libs-5.7.2-16.fc20.x86_64 +fc20: nettle-2.7.1-3.fc20.x86_64 +fc20: net-tools-2.0-0.15.20131119git.fc20.x86_64 +fc20: nfs-utils-1.2.9-3.0.fc20.x86_64 +fc20: nmap-ncat-6.40-2.fc20.x86_64 +fc20: node-gyp-0.10.6-2.fc20.noarch +fc20: nodejs-0.10.24-1.fc20.x86_64 +fc20: nodejs-abbrev-1.0.4-7.fc20.noarch +fc20: nodejs-ansi-0.2.1-1.fc20.noarch +fc20: nodejs-archy-0.0.2-9.fc20.noarch +fc20: nodejs-asn1-0.1.11-4.fc20.noarch +fc20: nodejs-assert-plus-0.1.4-1.fc20.noarch +fc20: nodejs-async-0.2.9-3.fc20.noarch +fc20: nodejs-aws-sign-0.3.0-2.fc20.noarch +fc20: nodejs-block-stream-0.0.7-1.fc20.noarch +fc20: nodejs-boom-0.4.2-3.fc20.noarch +fc20: nodejs-child-process-close-0.1.1-3.fc20.noarch +fc20: nodejs-chmodr-0.1.0-5.fc20.noarch +fc20: nodejs-chownr-0.0.1-10.fc20.noarch +fc20: nodejs-cmd-shim-1.1.0-4.fc20.noarch +fc20: nodejs-combined-stream-0.0.4-4.fc20.noarch +fc20: nodejs-config-chain-1.1.7-2.fc20.noarch +fc20: nodejs-cookie-jar-0.3.0-2.fc20.noarch +fc20: nodejs-couch-login-0.1.18-1.fc20.noarch +fc20: nodejs-cryptiles-0.2.2-1.fc20.noarch +fc20: nodejs-ctype-0.5.3-4.fc20.noarch +fc20: nodejs-delayed-stream-0.0.5-6.fc20.noarch +fc20: nodejs-devel-0.10.24-1.fc20.x86_64 +fc20: nodejs-editor-0.0.4-3.fc20.noarch +fc20: nodejs-forever-agent-0.5.0-2.fc20.noarch +fc20: nodejs-form-data-0.1.1-1.fc20.noarch +fc20: nodejs-fstream-0.1.24-1.fc20.noarch +fc20: nodejs-fstream-ignore-0.0.7-2.fc20.noarch +fc20: nodejs-fstream-npm-0.1.5-2.fc20.noarch +fc20: nodejs-github-url-from-git-1.1.1-3.fc20.noarch +fc20: nodejs-glob-3.2.6-1.fc20.noarch +fc20: nodejs-graceful-fs-2.0.0-3.fc20.noarch +fc20: nodejs-hawk-1.0.0-1.fc20.noarch +fc20: nodejs-hoek-0.9.1-2.fc20.noarch +fc20: nodejs-http-signature-0.10.0-4.fc20.noarch +fc20: nodejs-inherits-2.0.0-4.fc20.noarch +fc20: nodejs-ini-1.1.0-4.fc20.noarch +fc20: nodejs-init-package-json-0.0.10-2.fc20.noarch +fc20: nodejs-json-stringify-safe-5.0.0-2.fc20.noarch +fc20: nodejs-lockfile-0.4.2-1.fc20.noarch +fc20: nodejs-lru-cache-2.3.0-4.fc20.noarch +fc20: nodejs-mime-1.2.11-1.fc20.noarch +fc20: nodejs-minimatch-0.2.12-3.fc20.noarch +fc20: nodejs-mkdirp-0.3.5-4.fc20.noarch +fc20: nodejs-mute-stream-0.0.4-1.fc20.noarch +fc20: nodejs-node-uuid-1.4.1-1.fc20.noarch +fc20: nodejs-nopt-2.1.2-1.fc20.noarch +fc20: nodejs-normalize-package-data-0.2.1-1.fc20.noarch +fc20: nodejs-npmconf-0.1.2-1.fc20.noarch +fc20: nodejs-npmlog-0.0.4-2.fc20.noarch +fc20: nodejs-npm-registry-client-0.2.28-1.fc20.noarch +fc20: nodejs-npm-user-validate-0.0.3-2.fc20.noarch +fc20: nodejs-oauth-sign-0.3.0-2.fc20.noarch +fc20: nodejs-once-1.1.1-6.fc20.noarch +fc20: nodejs-opener-1.3.0-8.fc20.noarch +fc20: nodejs-osenv-0.0.3-6.fc20.noarch +fc20: nodejs-packaging-4-1.fc20.noarch +fc20: nodejs-promzard-0.2.0-7.fc20.noarch +fc20: nodejs-proto-list-1.2.2-6.fc20.noarch +fc20: nodejs-qs-0.6.5-3.fc20.noarch +fc20: nodejs-read-1.0.5-1.fc20.noarch +fc20: nodejs-read-installed-0.2.3-1.fc20.noarch +fc20: nodejs-read-package-json-1.1.3-1.fc20.noarch +fc20: nodejs-request-2.25.0-1.fc20.noarch +fc20: nodejs-retry-0.6.0-6.fc20.noarch +fc20: nodejs-rimraf-2.2.2-1.fc20.noarch +fc20: nodejs-semver-2.1.0-1.fc20.noarch +fc20: nodejs-sha-1.2.1-1.fc20.noarch +fc20: nodejs-sigmund-1.0.0-6.fc20.noarch +fc20: nodejs-slide-1.1.5-1.fc20.noarch +fc20: nodejs-sntp-0.2.4-2.fc20.noarch +fc20: nodejs-tar-0.1.18-1.fc20.noarch +fc20: nodejs-tunnel-agent-0.3.0-2.fc20.noarch +fc20: nodejs-uid-number-0.0.3-8.fc20.noarch +fc20: nodejs-which-1.0.5-9.fc20.noarch +fc20: npm +ub16: npm +fc20: nspr-4.10.1-1.fc20.x86_64 +fc20: nss-3.15.2-3.fc20.x86_64 +fc20: nss-softokn-3.15.2-2.fc20.x86_64 +fc20: nss-softokn-freebl-3.17.1-2.fc20.x86_64 +fc20: nss-sysinit-3.15.2-3.fc20.x86_64 +fc20: nss-tools-3.15.2-3.fc20.x86_64 +fc20: nss-util-3.15.2-2.fc20.x86_64 +fc20: numactl-libs-2.0.9-1.fc20.x86_64 +fc20: numad-0.5-12.20130814git.fc20.x86_64 +fc20: openldap-2.4.36-4.fc20.x86_64 +fc20: openpgm-5.2.122-2.fc20.x86_64 +fc20: openssh +fc20: openssh-clients +fc20: openssh-server +fc20: openssl +ub16: libssl-dev +fc20: openssl-devel +fc20: openssl-libs +fc20: os-prober-1.58-4.fc20.x86_64 +fc20: p11-kit-0.20.1-1.fc20.x86_64 +fc20: p11-kit-trust-0.20.1-1.fc20.x86_64 +fc20: pam-1.1.8-1.fc20.x86_64 +fc20: parted-3.1-13.fc20.x86_64 +fc20: passwd-0.79-2.fc20.x86_64 +fc20: pciutils-3.2.1-1.fc20.x86_64 +fc20: pciutils-libs-3.2.1-1.fc20.x86_64 +fc20: pcre-8.33-4.fc20.x86_64 +fc20: pcre-devel-8.33-4.fc20.x86_64 +fc20: perl-5.18.2-289.fc20.x86_64 +fc20: perl-Carp-1.26-245.fc20.noarch +fc20: perl-constant-1.27-292.fc20.noarch +fc20: perl-Encode-2.54-2.fc20.x86_64 +fc20: perl-Exporter-5.68-293.fc20.noarch +fc20: perl-File-Path-2.09-292.fc20.noarch +fc20: perl-File-Temp-0.23.01-4.fc20.noarch +fc20: perl-Filter-1.49-5.fc20.x86_64 +fc20: perl-Getopt-Long-2.42-1.fc20.noarch +fc20: perl-HTTP-Tiny-0.034-4.fc20.noarch +fc20: perl-libs-5.18.2-289.fc20.x86_64 +fc20: perl-macros-5.18.2-289.fc20.x86_64 +fc20: perl-Module-CoreList-3.03-289.fc20.noarch +fc20: perl-parent-0.228-1.fc20.noarch +fc20: perl-PathTools-3.40-291.fc20.x86_64 +fc20: perl-Pod-Escapes-1.04-289.fc20.noarch +fc20: perl-podlators-2.5.1-291.fc20.noarch +fc20: perl-Pod-Perldoc-3.20-7.fc20.noarch +fc20: perl-Pod-Simple-3.28-292.fc20.noarch +fc20: perl-Pod-Usage-1.63-4.fc20.noarch +fc20: perl-Scalar-List-Utils-1.31-293.fc20.x86_64 +fc20: perl-Socket-2.013-1.fc20.x86_64 +fc20: perl-srpm-macros-1-10.fc20.noarch +fc20: perl-Storable-2.45-2.fc20.x86_64 +fc20: perl-Text-ParseWords-3.29-3.fc20.noarch +fc20: perl-threads-1.89-1.fc20.x86_64 +fc20: perl-threads-shared-1.45-1.fc20.x86_64 +fc20: perl-Time-HiRes-1.9726-1.fc20.x86_64 +fc20: perl-Time-Local-1.2300-291.fc20.noarch +fc20: perl-version-0.99.04-2.fc20.x86_64 +fc20: php +fc20: php-gd +fc20: pinentry-0.8.1-11.fc20.x86_64 +fc20: pkgconfig-0.28-3.fc20.x86_64 +fc20: pm-utils-1.4.1-26.fc20.x86_64 +fc20: policycoreutils-2.2.2-3.fc20.x86_64 +fc20: policycoreutils-python-2.2.2-3.fc20.x86_64 +fc20: polkit-0.112-2.fc20.x86_64 +fc20: polkit-pkla-compat-0.1-3.fc20.x86_64 +fc20: popt-1.13-15.fc20.x86_64 +fc20: procps-ng-3.3.8-14.fc20.x86_64 +fc20: pth-2.0.7-21.fc20.x86_64 +fc20: pygpgme-0.3-8.fc20.x86_64 +fc20: pyliblzma-0.5.3-10.fc20.x86_64 +fc20: python-2.7.5-9.fc20.x86_64 +fc20: python3-3.3.2-8.fc20.x86_64 +fc20: python3-libs-3.3.2-8.fc20.x86_64 +fc20: python3-magic +fc20: python3-lxc-0.9.0-2.fc20.x86_64 +fc20: python-babel-1.3-2.fc20.noarch +fc20: python-backports-1.0-3.fc20.x86_64 +fc20: python-backports-ssl_match_hostname-3.4.0.2-1.fc20.noarch +fc20: python-boto-2.13.3-1.fc20.noarch +fc20: python-chardet-2.0.1-7.fc20.noarch +fc20: python-cheetah-2.4.4-5.fc20.x86_64 +fc20: python-configobj-4.7.2-7.fc20.noarch +fc20: python-crypto-2.6.1-1.fc20.x86_64 +fc20: python-iniparse-0.4-9.fc20.noarch +fc20: python-IPy-0.75-6.fc20.noarch +fc20: python-jinja2-2.7.1-1.fc20.noarch +fc20: python-kitchen-1.1.1-5.fc20.noarch +fc20: python-libs-2.7.5-9.fc20.x86_64 +fc20: python-markdown-2.3.1-3.fc20.noarch +fc20: python-markupsafe-0.18-1.fc20.x86_64 +fc20: python-msgpack-0.1.13-4.fc20.x86_64 +fc20: python-pillow-2.2.1-2.fc20.x86_64 +fc20: python-prettytable-0.6.1-3.fc20.noarch +fc20: python-psutil-1.0.1-1.fc20.x86_64 +fc20: python-pycurl-7.19.0-17.20120408git9b8f4e38.fc20.x86_64 +fc20: python-pygments-1.4-9.fc20.noarch +fc20: python-requests-1.2.3-5.fc20.noarch +fc20: python-six-1.4.1-1.fc20.noarch +fc20: python-urlgrabber-3.9.1-32.fc20.noarch +fc20: python-urllib3-1.7-4.fc20.noarch +fc20: python-zmq-13.0.2-1.fc20.x86_64 +fc20: pyxattr-0.5.1-4.fc20.x86_64 +fc20: PyYAML-3.10-9.fc20.x86_64 +fc20: qemu-img-1.6.1-3.fc20.x86_64 +fc20: qrencode-libs-3.4.2-1.fc20.x86_64 +fc20: quota-4.01-10.fc20.x86_64 +fc20: quota-nls-4.01-10.fc20.noarch +fc20: radvd-1.9.2-4.fc20.x86_64 +fc20: readline-6.2-8.fc20.x86_64 +fc20: redhat-rpm-config-9.1.0-54.fc20.noarch +fc20: rootfiles-8.1-16.fc20.noarch +fc20: rpcbind-0.2.1-0.2.fc20.x86_64 +fc20: rpm-4.11.3-1.fc20.x86_64 +fc20: rpm-build-libs-4.11.3-1.fc20.x86_64 +fc20: rpm-libs-4.11.3-1.fc20.x86_64 +fc20: rpm-python-4.11.3-1.fc20.x86_64 +fc20: rsync-3.1.0-1pre1.fc20.x86_64 +fc20: rsyslog-7.4.2-2.fc20.x86_64 +fc20: salt-master-2015.5.0-1.fc20.noarch +ub16: salt-master +fc20: salt-2015.5.0-1.fc20.noarch +fc20: salt-minion-2015.5.0-1.fc20.noarch +ub16: salt-minion +fc20: screen +fc20: sed-4.2.2-5.fc20.x86_64 +fc20: selinux-policy-3.12.1-106.fc20.noarch +fc20: selinux-policy-targeted-3.12.1-106.fc20.noarch +fc20: setools-libs-3.3.7-41.fc20.x86_64 +fc20: setup-2.8.71-2.fc20.noarch +fc20: shadow-utils-4.1.5.1-8.fc20.x86_64 +fc20: shared-mime-info-1.2-1.fc20.x86_64 +fc20: sheepdog-0.3.0-5.fc20.x86_64 +fc20: snappy-1.1.0-2.fc20.x86_64 +fc20: socat-1.7.2.2-3.fc20.x86_64 +fc20: sqlite-3.8.1-2.fc20.x86_64 +fc20: sshpass-1.05-5.fc20.x86_64 +fc20: sudo-1.8.8-1.fc20.x86_64 +fc20: syslinux-4.05-7.fc20.x86_64 +fc20: syslinux-extlinux-4.05-7.fc20.x86_64 +fc20: sysvinit-tools-2.88-14.dsf.fc20.x86_64 +fc20: tar-1.26-29.fc20.x86_64 +fc20: tcl-8.5.14-1.fc20.x86_64 +fc20: tcp_wrappers-7.6-76.fc20.x86_64 +fc20: tcp_wrappers-libs-7.6-76.fc20.x86_64 +fc20: tmux +fc20: trousers-0.3.11.2-1.fc20.x86_64 +fc20: tzdata-2013h-1.fc20.noarch +fc20: uboot-tools-2013.10-3.fc20.x86_64 +fc20: unbound-libs-1.4.21-1.fc20.x86_64 +fc20: ustr-1.0.4-15.fc20.x86_64 +fc20: util-linux-2.24-2.fc20.x86_64 +fc20: v8-3.14.5.10-3.fc20.x86_64 +fc20: v8-devel-3.14.5.10-3.fc20.x86_64 +fc20: vim-minimal-7.4.027-2.fc20.x86_64 +fc20: which-2.20-6.fc20.x86_64 +fc20: xen-libs-4.3.1-8.fc20.x86_64 +fc20: xen-licenses-4.3.1-8.fc20.x86_64 +fc20: xz-5.1.2-6alpha.fc20.x86_64 +fc20: xz-libs-5.1.2-6alpha.fc20.x86_64 +fc20: yajl-2.0.4-3.fc20.x86_64 +fc20: yum-3.4.3-106.fc20.noarch +fc20: yum-metadata-parser-1.1.4-9.fc20.x86_64 +fc20: yum-utils-1.1.31-20.fc20.noarch +fc20: zeromq3-3.2.4-1.fc20.x86_64 +fc20: zip-3.0-9.fc20.x86_64 +fc20: zlib-1.2.8-3.fc20.x86_64 +fc20: zlib-devel-1.2.8-3.fc20.x86_64 +fc20: zookeeper-java.noarch +fc20: pcs diff --git a/scripts/vm_image/vnf.config.sh b/scripts/vm_image/vnf.config.sh index 9791735..820e05c 100644 --- a/scripts/vm_image/vnf.config.sh +++ b/scripts/vm_image/vnf.config.sh @@ -1,18 +1,3 @@ -# -# Copyright 2016 RIFT.IO Inc -# -# 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. -# cmd npm set registry https://npm.riftio.com:4873/ cmd npm set strict-ssl false cmd npm install -g --production forever diff --git a/scripts/vm_image/vnf.pip3 b/scripts/vm_image/vnf.pip3 index 5651214..1f54d14 100644 --- a/scripts/vm_image/vnf.pip3 +++ b/scripts/vm_image/vnf.pip3 @@ -3,7 +3,6 @@ beautifulsoup4==4.3.2 certifi==2015.4.28 dicttoxml==1.6.6 ecdsa==0.13 -enum34==1.0.4 Flask_SocketIO==0.6.0 futures==2.2.0 jsonpath-rw==1.4.0 diff --git a/scripts/vm_image/vnf.rpms b/scripts/vm_image/vnf.rpms index 0d81528..447241b 100644 --- a/scripts/vm_image/vnf.rpms +++ b/scripts/vm_image/vnf.rpms @@ -1,10 +1,25 @@ -libnl3-3.2.21-2.fc20.x86_64 +fc20: libnl3-3.2.21-2.fc20.x86_64 +ub16: libnl-3-200 + zookeeper-java.noarch -libpcap -boost-filesystem-1.54.0-9.fc20.x86_64 -boost-system-1.54.0-9.fc20.x86_64 -boost-thread-1.54.0-9.fc20.x86_64 + +fc20: libpcap +ub16: libpcap0.8 + +fc20: boost-filesystem-1.54.0-9.fc20.x86_64 +ub16: libboost-filesystem1.58.0 +fc20: boost-system-1.54.0-9.fc20.x86_64 +ub16: libboost-system1.58.0 +fc20: boost-thread-1.54.0-9.fc20.x86_64 +ub16: libboost-thread1.58.0 +fc20: i40evf-1.5.14 + npm pciutils -icu -vconfig + +fc20: qat_guest + +fc20: icu +ub16: icu-devtools + +fc20: vconfig