Commit ae96bbde authored by Dan Radez's avatar Dan Radez
Browse files

adding master support for building


updating build.sh to use RDO manager
ensuring jenkins will build properly

Change-Id: Id7660c49650a85958e5ff0153d9b5cc6255cb6ad
Signed-off-by: default avatarDan Radez <dradez@redhat.com>
parent 3f313d76
......@@ -15,6 +15,7 @@ SHELL = /bin/bash
#
#Input args
export UNIT_TEST = FALSE
export USE_MASTER = ""
export INTERACTIVE = TRUE
export CENTDNLD = http://mirrors.cat.pdx.edu/centos/7.1.1503/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso
export ISOSRC = file:$(shell pwd)/CentOS-7-x86_64-DVD-1503-01.iso
......@@ -22,7 +23,7 @@ export ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC))
export PRODNO = "OPNFV_BGS"
export REVSTATE = "P0000"
export NEWISO = $(shell pwd)/release/OPNFV-CentOS-7-x86_64-${REVSTATE}.iso
export GENESISRPM = $(shell pwd)/x86_64/opnfv-genesis-0.1-1.x86_64.rpm
export APEXRPM = $(shell pwd)/x86_64/opnfv-apex-2.0-1.x86_64.rpm
# Note! Invoke with "make REVSTATE=RXXXX all" to make release build!
# Invoke with ICOCACHE=/full/path/to/iso if cached ISO is in non-standard location.
......@@ -80,7 +81,7 @@ build-clean: $(SUBCLEAN)
@rm -f $(NEWISO)
.PHONY: clean $(SUBCLEAN)
clean: clean-cache $(SUBCLEAN)
clean: clean-cache instack-clean $(SUBCLEAN)
@rm -f *.iso
@rm -Rf release
@rm -Rf newiso
......@@ -92,44 +93,46 @@ $(SUBCLEAN): %.clean:
.PHONY: rpm-clean
rpm-clean:
rpmbuild --clean opnfv-genesis.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
@rm -f build/opnfv-apex.tar.gz
.PHONY: rpm
rpm:
pushd ../../ && git archive --format=tar --prefix=opnfv-genesis-0.1/ HEAD | gzip > foreman/build/opnfv-genesis.tar.gz
rpmbuild -ba opnfv-genesis.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
@make rpm-clean
pushd ../ && git archive --format=tar --prefix=opnfv-apex-2.0/ HEAD > build/opnfv-apex.tar
tar -u --xform="s:instack.qcow2:opnfv-apex-2.0/build/instack.qcow2:" --file=opnfv-apex.tar instack.qcow2
gzip -f opnfv-apex.tar
rpmbuild -ba opnfv-apex.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
.PHONY: instack
instack: instack.qcow2
instack.qcow2:
@./instack.sh
@./instack.sh $(USE_MASTER)
.PHONY: instack-clean
instack-clean:
@virsh destroy instack 2> /dev/null || echo -n ''
@virsh undefine instack 2> /dev/null || echo -n ''
@virsh destroy baremetal_0 2> /dev/null || echo -n ''
@virsh undefine baremetal_0 2> /dev/null || echo -n ''
@virsh destroy baremetal_1 2> /dev/null || echo -n ''
@virsh undefine baremetal_1 2> /dev/null || echo -n ''
#@virsh destroy instack 2> /dev/null || echo -n ''
#@virsh undefine instack 2> /dev/null || echo -n ''
#@virsh destroy baremetal_0 2> /dev/null || echo -n ''
#@virsh undefine baremetal_0 2> /dev/null || echo -n ''
#@virsh destroy baremetal_1 2> /dev/null || echo -n ''
#@virsh undefine baremetal_1 2> /dev/null || echo -n ''
rm -f instackenv.json
rm -f baremetal_0.xml
rm -f baremetal_1.xml
rm -f instack.xml
rm -f instack.qcow2
rm -rf stack
# Todo: Make things smarter - we shouldn't need to clean everything
# betwen make invocations.
.PHONY: iso
iso: build-clean $(ISOCACHE) instack.qcow2 rpm
iso: build-clean instack.qcow2 rpm $(ISOCACHE)
@make mount-centiso
@mkdir centos release
cp -r $(CENTDIR)/* centos
@make umount-centiso
# modify the installer iso's contents
@cp -f isolinux.cfg centos/isolinux/isolinux.cfg
@cp $(GENESISRPM) centos/Packages
@cp $(APEXRPM) centos/Packages
# regenerate yum repo data
@echo "Generating new yum metadata"
createrepo --update -g ../c7-opnfv-x86_64-comps.xml centos
......
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE comps PUBLIC "-//CentOS//DTD Comps info//EN" "comps.dtd">
<comps>
<group>
<id>core</id>
<name>Core</name>
<name xml:lang='af'>Kern</name>
<name xml:lang='am'>ማዕከላዊ ቦታ</name>
<name xml:lang='ar'>اللبّ</name>
<name xml:lang='as'>ভিত্তি</name>
<name xml:lang='bal'>هستگ</name>
<name xml:lang='be'>Падмурак</name>
<name xml:lang='bg'>Основа</name>
<name xml:lang='bn'>কোর</name>
<name xml:lang='bn_IN'>কোর</name>
<name xml:lang='bs'>Jezgra</name>
<name xml:lang='ca'>Nucli</name>
<name xml:lang='cs'>Úplný základ</name>
<name xml:lang='cy'>Craidd</name>
<name xml:lang='da'>Grundlæggende</name>
<name xml:lang='de'>Kern</name>
<name xml:lang='el'>Πυρήνας</name>
<name xml:lang='en_GB'>Core</name>
<name xml:lang='es'>Núcleo</name>
<name xml:lang='et'>Tuum</name>
<name xml:lang='fa'>اصل</name>
<name xml:lang='fi'>Keskeiset</name>
<name xml:lang='fr'>Core</name>
<name xml:lang='gl'>Núcleo</name>
<name xml:lang='gu'>મૂળ</name>
<name xml:lang='he'>ליבה</name>
<name xml:lang='hi'>कोर</name>
<name xml:lang='hr'>Jezgra</name>
<name xml:lang='hu'>Mag</name>
<name xml:lang='hy'>Հիմք</name>
<name xml:lang='ia'>Nucleo</name>
<name xml:lang='id'>Inti</name>
<name xml:lang='ilo'>Bugas</name>
<name xml:lang='is'>Lágmarkskerfi</name>
<name xml:lang='it'>Principale</name>
<name xml:lang='ja'>コア</name>
<name xml:lang='ka'>ბირთვი</name>
<name xml:lang='kn'>ಅಂತಸ್ಸಾರ</name>
<name xml:lang='ko'>핵심</name>
<name xml:lang='lv'>Pamatsistēma</name>
<name xml:lang='mai'>कोर</name>
<name xml:lang='mk'>Основни</name>
<name xml:lang='ml'>കോറ്‍</name>
<name xml:lang='mr'>कोर</name>
<name xml:lang='ms'>Teras</name>
<name xml:lang='nb'>Kjerne</name>
<name xml:lang='ne'>कोर</name>
<name xml:lang='nl'>Kern</name>
<name xml:lang='no'>Kjerne</name>
<name xml:lang='nso'>Bogare</name>
<name xml:lang='or'>ପ୍ରମୂଖ</name>
<name xml:lang='pa'>ਮੂਲ</name>
<name xml:lang='pl'>Rdzeń</name>
<name xml:lang='pt'>Núcleo</name>
<name xml:lang='pt_BR'>Núcleo</name>
<name xml:lang='ro'>Nucleu</name>
<name xml:lang='ru'>Основа</name>
<name xml:lang='si'>න්‍යෂ්ඨිය</name>
<name xml:lang='sk'>Jadro</name>
<name xml:lang='sl'>Jedro</name>
<name xml:lang='sq'>Bërthama</name>
<name xml:lang='sr'>Срж</name>
<name xml:lang='sr@latin'>Srž</name>
<name xml:lang='sr@Latn'>Srž</name>
<name xml:lang='sv'>Grund</name>
<name xml:lang='ta'>கோர்</name>
<name xml:lang='te'>అంతర్భాగం</name>
<name xml:lang='tg'>Система</name>
<name xml:lang='th'>แกนหลัก</name>
<name xml:lang='tr'>Çekirdek</name>
<name xml:lang='uk'>Основа</name>
<name xml:lang='ur'>مرکز</name>
<name xml:lang='vi'>Lõi</name>
<name xml:lang='zh_CN'>核心</name>
<name xml:lang='zh_TW'>核心</name>
<name xml:lang='zu'>Okuyikhona</name>
<description>Smallest possible installation.</description>
<description xml:lang='as'>ন্যূনতম ইনস্টল।</description>
<description xml:lang='bn'>ন্যূনতম ইনস্টলেশন।</description>
<description xml:lang='bn_IN'>ন্যূনতম ইনস্টলেশন।</description>
<description xml:lang='cs'>Nejmenší možná instalace.</description>
<description xml:lang='de'>Kleinstmögliche Installation.</description>
<description xml:lang='es'>La instalación más pequeña posible.</description>
<description xml:lang='fr'>Plus petite installation possible.</description>
<description xml:lang='gu'>નાનામાં નાના શક્ય સ્થાપન.</description>
<description xml:lang='hi'>लघुतम संभावित संस्थापन.</description>
<description xml:lang='ia'>Le minime possibile installation.</description>
<description xml:lang='it'>Minima installazione possibile.</description>
<description xml:lang='ja'>最小限のインストール</description>
<description xml:lang='kn'>ಅತ್ಯಲ್ಪಸಾಧ್ಯ ಅನುಸ್ಥಾಪನೆ.</description>
<description xml:lang='ko'>가능한 최소 설치</description>
<description xml:lang='ml'>സാധ്യമായ ഏറ്റവും ചെറിയ ഇന്‍സ്റ്റലേഷന്‍.</description>
<description xml:lang='mr'>शक्यतया सर्वात लहान प्रतिष्ठापन.</description>
<description xml:lang='or'>କ୍ଷୁଦ୍ରତମ ସମ୍ଭାବ୍ଯ ସ୍ଥାପନା।</description>
<description xml:lang='pa'>ਘੱਟੋ-ਘੱਟ ਸੰਭਵ ਇੰਸਟਾਲੇਸ਼ਨ।</description>
<description xml:lang='pl'>Najmniejsza możliwa instalacja.</description>
<description xml:lang='pt_BR'>Menor instalação possível</description>
<description xml:lang='ru'>Минимально возможная установка</description>
<description xml:lang='sv'>Minsta möjliga installation</description>
<description xml:lang='ta'>மிகச் சிறிய செயல்படுத்தக்கூடிய நிறுவல்.</description>
<description xml:lang='te'>సాధ్యమగు అతిచిన్న సంస్థాపన.</description>
<description xml:lang='uk'>Мінімально можливе встановлення.</description>
<description xml:lang='zh_CN'>最小可能安装。</description>
<description xml:lang='zh_TW'>最小型安裝。</description>
<default>false</default>
<uservisible>false</uservisible>
<packagelist>
<packagereq type="default">aic94xx-firmware</packagereq>
<packagereq type="default">alsa-firmware</packagereq>
<packagereq type="default">bfa-firmware</packagereq>
<packagereq type="default">dracut-config-rescue</packagereq>
<packagereq type="default">ivtv-firmware</packagereq>
<packagereq type="default">iwl1000-firmware</packagereq>
<packagereq type="default">iwl100-firmware</packagereq>
<packagereq type="default">iwl105-firmware</packagereq>
<packagereq type="default">iwl135-firmware</packagereq>
<packagereq type="default">iwl2000-firmware</packagereq>
<packagereq type="default">iwl2030-firmware</packagereq>
<packagereq type="default">iwl3160-firmware</packagereq>
<packagereq type="default">iwl3945-firmware</packagereq>
<packagereq type="default">iwl4965-firmware</packagereq>
<packagereq type="default">iwl5000-firmware</packagereq>
<packagereq type="default">iwl5150-firmware</packagereq>
<packagereq type="default">iwl6000-firmware</packagereq>
<packagereq type="default">iwl6000g2a-firmware</packagereq>
<packagereq type="default">iwl6000g2b-firmware</packagereq>
<packagereq type="default">iwl6050-firmware</packagereq>
<packagereq type="default">iwl7260-firmware</packagereq>
<packagereq type="default">kernel-tools</packagereq>
<packagereq type="default">libertas-sd8686-firmware</packagereq>
<packagereq type="default">libertas-sd8787-firmware</packagereq>
<packagereq type="default">libertas-usb8388-firmware</packagereq>
<packagereq type="default">linux-firmware</packagereq>
<packagereq type="default">microcode_ctl</packagereq>
<packagereq type="default">NetworkManager</packagereq>
<packagereq type="default">NetworkManager-tui</packagereq>
<packagereq type="default">postfix</packagereq>
<packagereq type="default">ql2100-firmware</packagereq>
<packagereq type="default">ql2200-firmware</packagereq>
<packagereq type="default">ql23xx-firmware</packagereq>
<packagereq type="mandatory">audit</packagereq>
<packagereq type="mandatory">basesystem</packagereq>
<packagereq type="mandatory">bash</packagereq>
<packagereq type="mandatory">biosdevname</packagereq>
<packagereq type="mandatory">btrfs-progs</packagereq>
<packagereq type="mandatory">coreutils</packagereq>
<packagereq type="mandatory">cpp</packagereq>
<packagereq type="mandatory">cronie</packagereq>
<packagereq type="mandatory">curl</packagereq>
<packagereq type="mandatory">dhclient</packagereq>
<packagereq type="mandatory">dkms</packagereq>
<packagereq type="mandatory">e2fsprogs</packagereq>
<packagereq type="mandatory">filesystem</packagereq>
<packagereq type="mandatory">gcc</packagereq>
<packagereq type="mandatory">glibc</packagereq>
<packagereq type="mandatory">glibc-devel</packagereq>
<packagereq type="mandatory">glibc-headers</packagereq>
<packagereq type="mandatory">git</packagereq>
<packagereq type="mandatory">hostname</packagereq>
<packagereq type="mandatory">initscripts</packagereq>
<packagereq type="mandatory">iproute</packagereq>
<packagereq type="mandatory">iprutils</packagereq>
<packagereq type="mandatory">iptables</packagereq>
<packagereq type="mandatory">iputils</packagereq>
<packagereq type="mandatory">irqbalance</packagereq>
<packagereq type="mandatory">kbd</packagereq>
<packagereq type="mandatory">kernel-devel</packagereq>
<packagereq type="mandatory">kernel-headers</packagereq>
<packagereq type="mandatory">kexec-tools</packagereq>
<packagereq type="mandatory">less</packagereq>
<packagereq type="mandatory">libmpc</packagereq>
<packagereq type="mandatory">mpfr</packagereq>
<packagereq type="mandatory">man-db</packagereq>
<packagereq type="mandatory">ncurses</packagereq>
<packagereq type="mandatory">net-tools</packagereq>
<packagereq type="mandatory">less</packagereq>
<packagereq type="mandatory">man-db</packagereq>
<packagereq type="mandatory">ncurses</packagereq>
<packagereq type="mandatory">openssh-clients</packagereq>
<packagereq type="mandatory">openssh-server</packagereq>
<packagereq type="mandatory">opnfv-apex</packagereq>
<packagereq type="mandatory">parted</packagereq>
<packagereq type="mandatory">passwd</packagereq>
<packagereq type="mandatory">patch</packagereq>
<packagereq type="mandatory">plymouth</packagereq>
<packagereq type="mandatory">policycoreutils</packagereq>
<packagereq type="mandatory">procps-ng</packagereq>
<packagereq type="mandatory">rootfiles</packagereq>
<packagereq type="mandatory">rpm</packagereq>
<packagereq type="mandatory">rsyslog</packagereq>
<packagereq type="mandatory">selinux-policy-targeted</packagereq>
<packagereq type="mandatory">setup</packagereq>
<packagereq type="mandatory">shadow-utils</packagereq>
<packagereq type="mandatory">sudo</packagereq>
<packagereq type="mandatory">systemd</packagereq>
<packagereq type="mandatory">tar</packagereq>
<packagereq type="mandatory">tuned</packagereq>
<packagereq type="mandatory">util-linux</packagereq>
<packagereq type="mandatory">vagrant</packagereq>
<packagereq type="mandatory">vim-minimal</packagereq>
<packagereq type="mandatory">VirtualBox-4.3</packagereq>
<packagereq type="mandatory">xfsprogs</packagereq>
<packagereq type="mandatory">yum</packagereq>
<packagereq type="optional">dracut-config-generic</packagereq>
<packagereq type="optional">dracut-fips-aesni</packagereq>
<packagereq type="optional">dracut-fips</packagereq>
<packagereq type="optional">dracut-network</packagereq>
<packagereq type="optional">openssh-keycat</packagereq>
<packagereq type="optional">selinux-policy-mls</packagereq>
<packagereq type="optional">tboot</packagereq>
</packagelist>
</group>
<environment>
<id>opnfv_provisioning</id>
<name>OPNFV Provisioning Server Install</name>
<name xml:lang='as'>নূন্যতম ইনস্টল</name>
<name xml:lang='bn_IN'>ন্যূনতম ইনস্টল</name>
<name xml:lang='cs'>Minimální instalace</name>
<name xml:lang='de'>Minimale Installation</name>
<name xml:lang='es'>Instalación mínima</name>
<name xml:lang='fr'>Installation minimale</name>
<name xml:lang='gu'>ન્યૂનતમ સ્થાપન</name>
<name xml:lang='hi'>न्यूनतम संस्थापन</name>
<name xml:lang='it'>Installazione minima</name>
<name xml:lang='ja'>最小限のインストール</name>
<name xml:lang='kn'>ಕನಿಷ್ಟ ಅನುಸ್ಥಾಪನೆ</name>
<name xml:lang='ko'>최소 설치</name>
<name xml:lang='ml'>ഏറ്റവും കുറഞ്ഞ ഇന്‍സ്റ്റോള്‍</name>
<name xml:lang='mr'>किमान इंस्टॉल</name>
<name xml:lang='or'>ସର୍ବନିମ୍ନ ସ୍ଥାପନ</name>
<name xml:lang='pa'>ਘੱਟ ਤੋਂ ਘੱਟ ਇੰਸਟਾਲ</name>
<name xml:lang='pl'>Minimalna instalacja</name>
<name xml:lang='pt_BR'>Instalações Mínimas</name>
<name xml:lang='ru'>Минимальная установка</name>
<name xml:lang='ta'>குறைந்தபட்ச நிறுவல்</name>
<name xml:lang='te'>కనీసపు సంస్థాపన</name>
<name xml:lang='uk'>Мінімальна система</name>
<name xml:lang='zh_CN'>最小安装</name>
<name xml:lang='zh_TW'>最小型安裝</name>
<description>Installs an OPNFV Provisioning Server</description>
<description xml:lang='as'>মৌলি কাৰ্য্যকৰীতা।</description>
<description xml:lang='bn_IN'>প্রাথমিক বৈশিষ্ট্য।</description>
<description xml:lang='cs'>Základní funkcionalita.</description>
<description xml:lang='de'>Grundlegende Funktionalität.</description>
<description xml:lang='es'>Funcionalidad básica.</description>
<description xml:lang='fr'>Fonctionnalité de base.</description>
<description xml:lang='gu'>મૂળભૂત વિધેય.</description>
<description xml:lang='hi'>मौलिक प्रकार्यात्मकता.</description>
<description xml:lang='it'>Funzione di base.</description>
<description xml:lang='ja'>基本的な機能です。</description>
<description xml:lang='kn'>ಮೂಲಭೂತ ಕ್ರಿಯಾಶೀಲತೆ.</description>
<description xml:lang='ko'>기본적인 기능입니다.</description>
<description xml:lang='ml'>അടിസ്ഥാന പ്രവൃത്തിവിശേഷണം.</description>
<description xml:lang='mr'>मूळ कार्यक्षमता.</description>
<description xml:lang='or'>ସାଧାରଣ କାର୍ଯ୍ୟକାରିତା।</description>
<description xml:lang='pa'>ਮੁੱਢਲੀ ਕਾਰਜਸ਼ੀਲਤਾ।</description>
<description xml:lang='pl'>Podstawowa funkcjonalność.</description>
<description xml:lang='pt_BR'>Função básica</description>
<description xml:lang='ru'>Базовая функциональность.</description>
<description xml:lang='ta'>அடிப்படை செயலம்சம்.</description>
<description xml:lang='te'>ప్రాథమిక ఫంక్షనాలిటి.</description>
<description xml:lang='uk'>Основні можливості.</description>
<description xml:lang='zh_CN'>基本功能。</description>
<description xml:lang='zh_TW'>基本功能。</description>
<display_order>5</display_order>
<grouplist>
<groupid>core</groupid>
</grouplist>
<optionlist>
</optionlist>
</environment>
<langpacks>
<match install="autocorr-%s" name="autocorr-en"/>
<match install="firefox-langpack-%s" name="firefox"/>
<match install="gimp-help-%s" name="gimp-help"/>
<match install="gnome-getting-started-docs-%s" name="gnome-getting-started-docs"/>
<match install="hunspell-%s" name="hunspell"/>
<match install="hyphen-%s" name="hyphen"/>
<match install="kde-l10n-%s" name="kdelibs"/>
<match install="libreoffice-langpack-%s" name="libreoffice-core"/>
<match install="man-pages-%s" name="man-pages"/>
<match install="mythes-%s" name="mythes"/>
</langpacks>
</comps>
##############################################################################
#############################################################################
# Copyright (c) 2015 Ericsson AB and others.
# stefan.k.berg@ericsson.com
# jonas.bjurel@ericsson.com
......
#!/bin/sh
#!/bin/sh
set -e
declare -i CNT
RDO_RELEASE=kilo
# RDO Manager expects a stack user to exist, this checks for one
# and creates it if you are root
if ! id stack > /dev/null; then
useradd stack;
echo 'stack ALL=(root) NOPASSWD:ALL' | sudo tee -a /etc/sudoers.d/stack
echo 'Defaults:stack !requiretty' | sudo tee -a /etc/sudoers.d/stack
chmod 0440 /etc/sudoers.d/stack
sudo useradd stack;
sudo echo 'stack ALL=(root) NOPASSWD:ALL' | sudo tee -a /etc/sudoers.d/stack
sudo echo 'Defaults:stack !requiretty' | sudo tee -a /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack
echo 'Added user stack'
fi
# ensure that I can ssh as the stack user
if ! sudo grep "$(cat ~/.ssh/id_rsa.pub)" /home/stack/.ssh/authorized_keys; then
if ! sudo ls -d /home/stack/.ssh/ ; then
sudo mkdir /home/stack/.ssh
sudo chown stack:stack /home/stack/.ssh
sudo chmod 700 /home/stack/.ssh
fi
USER=$(whoami) sudo sh -c "cat ~$USER/.ssh/id_rsa.pub >> /home/stack/.ssh/authorized_keys"
sudo chown stack:stack /home/stack/.ssh/authorized_keys
fi
# clean up stack user previously build instack disk images
ssh -T -o "StrictHostKeyChecking no" stack@localhost "rm -f instack*.qcow2"
# Yum repo setup for building the undercloud
if ! rpm -q epel-release > /dev/null; then
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
fi
if ! rpm -q rdo-release > /dev/null; then
yum install -y https://rdoproject.org/repos/openstack-kilo/rdo-release-kilo.rpm
sudo yum install -y https://rdoproject.org/repos/openstack-${RDO_RELEASE}/rdo-release-${RDO_RELEASE}.rpm
fi
if ! [ -a /etc/yum.repos.d/rdo-management-trunk.repo ]; then
curl -o /etc/yum.repos.d/rdo-management-trunk.repo http://trunk-mgt.rdoproject.org/centos-kilo/current-passed-ci/delorean-rdo-management.repo
if ! rpm -q rdo-release > /dev/null && [ "$1" != "-master" ]; then
sudo yum install -y https://rdoproject.org/repos/openstack-${RDO_RELEASE}/rdo-release-${RDO_RELEASE}.rpm
sudo rm -rf /etc/yum.repos.d/delorean.repo
sudo rm -rf /etc/yum.repos.d/delorean-current.repo
sudo rm -rf /etc/yum.repos.d/delorean-deps.repo
elif [ "$1" == "-master" ]; then
sudo yum -y install yum-plugin-priorities
sudo yum-config-manager --disable openstack-${RDO_RELEASE}
sudo curl -o /etc/yum.repos.d/delorean.repo http://trunk.rdoproject.org/centos7/current-tripleo/delorean.repo
sudo curl -o /etc/yum.repos.d/delorean-current.repo http://trunk.rdoproject.org/centos7/current/delorean.repo
sudo sed -i 's/\[delorean\]/\[delorean-current\]/' /etc/yum.repos.d/delorean-current.repo
sudo curl -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos7/delorean-deps.repo
fi
# ensure the undercloud package is installed so we can build the undercloud
if ! rpm -q instack-undercloud > /dev/null; then
yum install -y instack-undercloud
sudo yum install -y instack-undercloud
fi
sudo -u stack -- sh -c 'cd; instack-virt-setup'
# ensure openvswitch is installed
if ! rpm -q openvswitch > /dev/null; then
sudo yum install -y openvswitch
fi
# ensure libvirt is installed
if ! rpm -q libvirt-daemon-kvm > /dev/null; then
sudo yum install -y libvirt-daemon-kvm
fi
# ensure that no previous undercloud VMs are running
# and rebuild the bare undercloud VMs
ssh -T -o "StrictHostKeyChecking no" stack@localhost <<EOI
virsh destroy instack 2> /dev/null || echo -n ''
virsh undefine instack 2> /dev/null || echo -n ''
virsh destroy baremetal_0 2> /dev/null || echo -n ''
virsh undefine baremetal_0 2> /dev/null || echo -n ''
virsh destroy baremetal_1 2> /dev/null || echo -n ''
virsh undefine baremetal_1 2> /dev/null || echo -n ''
instack-virt-setup
EOI
# attach undercloud to the underlay network for
# baremetal installations
#if ! ovs-vsctl show | grep brbm; then
# ovs-vsctl add-port brbm em2
#fi
cp /home/stack/.ssh/id_rsa* /root/.ssh/
UNDERCLOUD=$(virsh net-dhcp-leases default | grep instack | awk '{print $5}' | awk -F '/' '{print $1}')
ssh -T -o "StrictHostKeyChecking no" root@$UNDERCLOUD <<EOI
if ! rpm -q rdo-release > /dev/null; then
yum install -y https://rdoproject.org/repos/openstack-kilo/rdo-release-kilo.rpm
fi
# let dhcp happen so we can get the ip
# just wait instead of checking until we see an address
# because there may be a previous lease that needs
# to be cleaned up
sleep 5
# get the undercloud ip address
UNDERCLOUD=$(grep instack /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}' | head -n 1)
if ! [ -a /etc/yum.repos.d/rdo-management-trunk.repo ]; then
curl -o /etc/yum.repos.d/rdo-management-trunk.repo http://trunk-mgt.rdoproject.org/centos-kilo/current-passed-ci/delorean-rdo-management.repo
# ensure that we can ssh to the undercloud
CNT=10
while ! ssh -T -o "StrictHostKeyChecking no" "root@$UNDERCLOUD" "echo ''" > /dev/null && [ $CNT -gt 0 ]; do
echo -n "."
sleep 3
CNT=CNT-1
done
# TODO fail if CNT=0
# yum repo, triple-o package and ssh key setup for the undercloud
ssh -T -o "StrictHostKeyChecking no" "root@$UNDERCLOUD" <<EOI
if ! rpm -q epel-release > /dev/null; then
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
fi
yum install -y python-rdomanager-oscplugin
curl -o /etc/yum.repos.d/delorean.repo http://trunk.rdoproject.org/centos7/current-tripleo/delorean.repo
curl -o /etc/yum.repos.d/delorean-current.repo http://trunk.rdoproject.org/centos7/current/delorean.repo
sed -i 's/\\[delorean\\]/\\[delorean-current\\]/' /etc/yum.repos.d/delorean-current.repo
echo "\\nincludepkgs=diskimage-builder,openstack-heat,instack,instack-undercloud,openstack-ironic,openstack-ironic-inspector,os-cloud-config,python-ironic-inspector-client,python-tripleoclient,tripleo-common,openstack-tripleo-heat-templates,openstack-tripleo-image-elements,openstack-tripleo-puppet-elements,openstack-tuskar-ui-extras,openstack-puppet-modules" >> /etc/yum.repos.d/delorean-current.repo
curl -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos7/delorean-deps.repo
yum install -y python-tripleoclient
cp /root/.ssh/authorized_keys /home/stack/.ssh/authorized_keys
chown stack:stack /home/stack/.ssh/authorized_keys
EOI
ssh -o "StrictHostKeyChecking no" stack@$UNDERCLOUD "openstack undercloud install"
#ssh -T -o "StrictHostKeyChecking no" stack@$UNDERCLOUD <<EOI
#echo "Running undercloud install"
#openstack undercloud install
#dontexit=\$(openstack undercloud install)
#openstack undercloud install && sudo halt -p
#EOI
# install undercloud on Undercloud VM
ssh -o "StrictHostKeyChecking no" "stack@$UNDERCLOUD" "openstack undercloud install"
# make a copy of instack VM's definitions, and disk image
# it must be stopped to make a copy of its disk image
ssh -T -o "StrictHostKeyChecking no" stack@localhost <<EOI
echo "Shuttind down instack to take snapshop"
virsh shutdown instack
echo "Waiting for instack VM to shutdown"
while virsh list | grep instack; do
CNT=20
while virsh list | grep instack > /dev/null && [ $CNT -gt 0 ]; do
echo -n "."
sleep 5
CNT=CNT-1
done
if virsh list | grep instack > /dev/null; then
echo "instack failed to shutdown for copy"
exit 1
fi
echo "Copying instack disk image and starting instack VM."
echo "\nCopying instack disk image and starting instack VM."
virsh dumpxml baremetal_0 > baremetal_0.xml
virsh dumpxml baremetal_1 > baremetal_1.xml
cp -f /var/lib/libvirt/images/instack.qcow2 .
virsh dumpxml instack > instack.xml
virsh vol-dumpxml instack.qcow2 --pool default > instack.qcow2.xml
#virsh vol-dumpxml instack.qcow2 --pool default > instack.qcow2.xml
virsh start instack
EOI
# copy off the instack artifacts
echo "Copying instack files to build directory"
scp -o "StrictHostKeyChecking no" stack@localhost:baremetal_0.xml .
scp -o "StrictHostKeyChecking no" stack@localhost:baremetal_1.xml .
scp -o "StrictHostKeyChecking no" stack@localhost:instack.xml .
scp -o "StrictHostKeyChecking no" stack@localhost:instack.qcow2 .
# start the instack VM back up to continue installation
echo "Waiting for instack VM to start"
while ! ping -c 1 $UNDERCLOUD > /dev/null; do
CNT=10
while ! ping -c 1 "$UNDERCLOUD" > /dev/null && [ $CNT -gt 0 ]; do
echo -n "."
sleep 5
CNT=CNT-1
done
while ! ssh -T -o "StrictHostKeyChecking no" root@$UNDERCLOUD "echo ''" > /dev/null; do
CNT=10
while ! ssh -T -o "StrictHostKeyChecking no" "root@$UNDERCLOUD" "echo ''" > /dev/null && [ $CNT -gt 0 ]; do
echo -n "."
sleep 3
CNT=CNT-1
done
# inject the already downloaded cloud image so it's not downloaded again
echo "Copying CentOS Cache to instack VM"
ssh -o "StrictHostKeyChecking no" stack@$UNDERCLOUD "mkdir .cache"
scp -r /home/stack/.cache/image-create/CentOS-7-x86_64-GenericCloud* stack@$UNDERCLOUD:.cache/
ssh -o "StrictHostKeyChecking no" "stack@$UNDERCLOUD" "mkdir .cache"
ssh -T -o "StrictHostKeyChecking no" stack@localhost "scp -r -o 'StrictHostKeyChecking no' /home/stack/.cache/image-create/CentOS-7-x86_64-GenericCloud* \"stack@$UNDERCLOUD\":.cache/"
# build the overcloud images
echo "Building overcloud images"
ssh -tt -o "StrictHostKeyChecking no" stack@$UNDERCLOUD "openstack overcloud image build --all"
ssh -tt -o "StrictHostKeyChecking no" "stack@$UNDERCLOUD" "openstack overcloud image build --all"
# copy off the built images
echo "Copying overcloud images"
mkdir stack
scp stack@$UNDERCLOUD:deploy-ramdisk-ironic.initramfs stack
scp stack@$UNDERCLOUD:deploy-ramdisk-ironic.kernel stack
scp stack@$UNDERCLOUD:discovery-ramdisk.initramfs stack
scp stack@$UNDERCLOUD:discovery-ramdisk.kernel stack
scp stack@$UNDERCLOUD:fedora-user.qcow2 stack
scp stac