From c3873f0153f7b8c0c060f05279a09eb47d49661b Mon Sep 17 00:00:00 2001 From: Aleksey Kasatkin Date: Fri, 27 Jun 2014 17:41:16 +0300 Subject: [PATCH] Make system for upgrades backport to 5.0.X Squashed from: 1. Build tarballs for upgrade Usage: make fuel-upgrade - create upgrade for master node (without openstack patches) make openstack-upgrade - create upgrade for openstack make upgrade - create full upgrade orig.Change-Id: I1a0b003d9efd5d85cdae7a41bbbea3eb8415a7b5 2. Add config.yaml to upgrade tarball, update package structure orig.Change-Id: I596d10833c979cd8941c4771e9f5fdeebe4c9948 blueprint upgrade-to-5-0-1 Change-Id: I0f8d8b8393eba9d9438382395bc6602660f1a1a4 --- Makefile | 1 + iso/ks.template | 4 +-- iso/module.mk | 10 +++++++ iso/pkg-versions.awk | 11 +++++++ upgrade/module.mk | 71 ++++++++++++++++++++++++++++++++++++++++++++ upgrade/upgrade.sh | 20 +++++++++++++ 6 files changed, 114 insertions(+), 3 deletions(-) create mode 100755 iso/pkg-versions.awk create mode 100644 upgrade/module.mk create mode 100755 upgrade/upgrade.sh diff --git a/Makefile b/Makefile index 9d77fdea9..46b78b1b9 100644 --- a/Makefile +++ b/Makefile @@ -72,4 +72,5 @@ include $(SOURCE_DIR)/packages/module.mk include $(SOURCE_DIR)/docker/module.mk include $(SOURCE_DIR)/bootstrap/module.mk include $(SOURCE_DIR)/iso/module.mk +include $(SOURCE_DIR)/upgrade/module.mk include $(SOURCE_DIR)/fuelweb_test/module.mk diff --git a/iso/ks.template b/iso/ks.template index 4707ba51f..b854b5750 100644 --- a/iso/ks.template +++ b/iso/ks.template @@ -375,13 +375,11 @@ chmod 600 /root/.ssh/bootstrap.rsa # Unpacking puppet manifests for master and slave cp ${SOURCE}/puppet-slave.tgz ${repodir}/ -#mkdir -p /opt/nailgun_puppet -#tar zxf ${SOURCE}/puppet-nailgun.tgz -C /opt/nailgun_puppet tar zxf ${SOURCE}/puppet-slave.tgz -C /etc/puppet/modules mkdir -p /etc/puppet/manifests/ cp /etc/puppet/modules/osnailyfacter/examples/site.pp /etc/puppet/manifests/site.pp +cp ${SOURCE}/centos-versions.yaml ${SOURCE}/ubuntu-versions.yaml /etc/puppet/manifests/ cp ${SOURCE}/send2syslog.py /bin/send2syslog.py -#ln -s /etc/puppet/modules/mcollective /etc/puppet/modules/nailgun /etc/puppet/modules/osnailyfacter /etc/puppet/modules/stdlib /etc/puppet/modules/rabbitmq /etc/puppet/modules/puppetdb/ /etc/puppet/modules/postgresql/ /etc/puppet/modules/inifile/ /etc/puppet/modules/sysctl/ /opt/nailgun_puppet/ mkdir -p /var/lib/hiera touch /var/lib/hiera/common.yaml /etc/puppet/hiera.yaml diff --git a/iso/module.mk b/iso/module.mk index b5251655b..d3badd82c 100644 --- a/iso/module.mk +++ b/iso/module.mk @@ -43,6 +43,8 @@ $(BUILD_DIR)/iso/isoroot-files.done: \ $(ISOROOT)/bootstrap_admin_node.conf \ $(ISOROOT)/send2syslog.py \ $(ISOROOT)/version.yaml \ + $(ISOROOT)/centos-versions.yaml \ + $(ISOROOT)/ubuntu-versions.yaml \ $(ISOROOT)/puppet-slave.tgz $(ACTION.TOUCH) @@ -81,6 +83,14 @@ endif cat $(BUILD_DIR)/repos/version.yaml >> $@ +$(ISOROOT)/centos-versions.yaml: \ + $(BUILD_DIR)/packages/build.done + rpm -qi -p $(LOCAL_MIRROR)/centos/os/x86_64/Packages/*.rpm | $(SOURCE_DIR)/iso/pkg-versions.awk > $@ + +$(ISOROOT)/ubuntu-versions.yaml: \ + $(BUILD_DIR)/packages/build.done + cat $(LOCAL_MIRROR)/ubuntu/dists/precise/main/binary-amd64/Packages | $(SOURCE_DIR)/iso/pkg-versions.awk > $@ + $(ISOROOT)/puppet-slave.tgz: \ $(BUILD_DIR)/repos/fuellib.done \ $(call find-files,$(BUILD_DIR)/repos/fuellib/deployment/puppet) diff --git a/iso/pkg-versions.awk b/iso/pkg-versions.awk new file mode 100755 index 000000000..8712587a9 --- /dev/null +++ b/iso/pkg-versions.awk @@ -0,0 +1,11 @@ +#!/usr/bin/awk -f + +# Parse repos databases and generate versions.yaml files for patching +# Usage: +# rpm -qi -p /path/to/repo/Packages/*.rpm | versions.awk > centos-versions.yaml +# cat /path/to/repo/dists/precise/main/binary-amd64/Packages | versions.awk > ubuntu-version.yaml +/^Name /{ name=$3} +/^Version /{ version=$3} +/^Release /{ print name ": \"" version "-" $3 "\""} +/^Package:/{ name=$2 } +/^Version:/{ print name ": \"" $2 "\""} diff --git a/upgrade/module.mk b/upgrade/module.mk new file mode 100644 index 000000000..3b05b342b --- /dev/null +++ b/upgrade/module.mk @@ -0,0 +1,71 @@ +.PHONY: upgrade fuel-upgrade openstack-upgrade + +upgrade: $(BUILD_DIR)/upgrade/upgrade.done + +fuel-upgrade: $(BUILD_DIR)/upgrade/fuel.done + +openstack-upgrade: $(BUILD_DIR)/upgrade/openstack.done + +$(BUILD_DIR)/upgrade/upgrade.done: \ + $(BUILD_DIR)/upgrade/openstack-part.done \ + $(BUILD_DIR)/upgrade/fuel-part.done \ + $(BUILD_DIR)/upgrade/common-part.done + rm -f $(BUILD_DIR)/upgrade/fuel-$(PRODUCT_VERSION)-upgrade.tar + tar Af $(BUILD_DIR)/upgrade/fuel-$(PRODUCT_VERSION)-upgrade.tar \ + $(BUILD_DIR)/upgrade/fuel-part.tar + tar Af $(BUILD_DIR)/upgrade/fuel-$(PRODUCT_VERSION)-upgrade.tar \ + $(BUILD_DIR)/upgrade/openstack-part.tar + tar Af $(BUILD_DIR)/upgrade/fuel-$(PRODUCT_VERSION)-upgrade.tar \ + $(BUILD_DIR)/upgrade/common-part.tar + # Looks like gzip is useless here + # gzip $(BUILD_DIR)/upgrade/fuel-$(PRODUCT_VERSION)-upgrade.tar + $(ACTION.TOUCH) + +$(BUILD_DIR)/upgrade/common-part.done: \ + $(BUILD_DIR)/iso/iso.done + rm -f $(BUILD_DIR)/upgrade/common-part.tar + mkdir -p $(BUILD_DIR)/upgrade/venv + tar cf $(BUILD_DIR)/upgrade/common-part.tar -C $(BUILD_DIR)/repos/fuellib/deployment --xform s:^puppet:upgrade/puppet/modules: puppet + tar rf $(BUILD_DIR)/upgrade/common-part.tar -C $(BUILD_DIR)/repos/fuellib/deployment/puppet/osnailyfacter/examples --xform s:^:upgrade/puppet/manifests/: site.pp + # Requires virtualenv, pip, python-dev packages + virtualenv $(BUILD_DIR)/upgrade/venv + $(BUILD_DIR)/upgrade/venv/bin/pip install -r $(BUILD_DIR)/repos/nailgun/fuel_upgrade_system/fuel_upgrade/requirements.txt + $(BUILD_DIR)/upgrade/venv/bin/pip install $(BUILD_DIR)/repos/nailgun/fuel_upgrade_system/fuel_upgrade + tar rf $(BUILD_DIR)/upgrade/common-part.tar -C $(BUILD_DIR)/upgrade/venv/lib/python* --xform s:^:upgrade/: site-packages + tar rf $(BUILD_DIR)/upgrade/common-part.tar -C $(BUILD_DIR)/upgrade/venv --xform s:^:upgrade/: bin/fuel-upgrade + tar rf $(BUILD_DIR)/upgrade/common-part.tar --mode=755 -C $(SOURCE_DIR)/upgrade upgrade.sh + $(ACTION.TOUCH) + +$(BUILD_DIR)/upgrade/fuel-part.done: \ + $(BUILD_DIR)/iso/iso.done + mkdir -p $(BUILD_DIR)/upgrade + rm -f $(BUILD_DIR)/upgrade/fuel-part.tar + tar cf $(BUILD_DIR)/upgrade/fuel-part.tar -C $(ISOROOT)/docker/images --xform s:^:upgrade/images/: fuel-images.tar.lrz + tar rf $(BUILD_DIR)/upgrade/fuel-part.tar -C $(BUILD_DIR)/iso/isoroot --xform s:^:upgrade/config/: version.yaml + $(ACTION.TOUCH) + +$(BUILD_DIR)/upgrade/openstack-part.done: \ + $(BUILD_DIR)/iso/iso.done + mkdir -p $(BUILD_DIR)/upgrade + rm -f $(BUILD_DIR)/upgrade/openstack-part.tar + tar cf $(BUILD_DIR)/upgrade/openstack-part.tar -C $(LOCAL_MIRROR) --xform s:^centos/os/x86_64:upgrade/repos/centos/x86_64: centos/os/x86_64 + tar rf $(BUILD_DIR)/upgrade/openstack-part.tar -C $(LOCAL_MIRROR) --xform s:^ubuntu:upgrade/repos/ubuntu/x86_64: ubuntu + tar rf $(BUILD_DIR)/upgrade/openstack-part.tar -C $(BUILD_DIR)/repos/nailgun/nailgun/nailgun/fixtures --xform s:^:upgrade/config/: openstack.yaml + tar rf $(BUILD_DIR)/upgrade/openstack-part.tar -C $(ISOROOT) --xform s:^:upgrade/puppet/manifests/: centos-versions.yaml ubuntu-versions.yaml + $(ACTION.TOUCH) + +$(BUILD_DIR)/upgrade/fuel.done: \ + $(BUILD_DIR)/upgrade/common-part.done \ + $(BUILD_DIR)/upgrade/fuel-part.done + rm -f $(BUILD_DIR)/upgrade/master-upgrade-$(PRODUCT_VERSION).tar + tar Af $(BUILD_DIR)/upgrade/master-upgrade-$(PRODUCT_VERSION).tar $(BUILD_DIR)/upgrade/fuel-part.tar + tar Af $(BUILD_DIR)/upgrade/master-upgrade-$(PRODUCT_VERSION).tar $(BUILD_DIR)/upgrade/common-part.tar + $(ACTION.TOUCH) + +$(BUILD_DIR)/upgrade/openstack.done: \ + $(BUILD_DIR)/upgrade/common-part.done \ + $(BUILD_DIR)/upgrade/openstack-part.done + rm -f $(BUILD_DIR)/upgrade/openstack-upgrade-$(PRODUCT_VERSION).tar + tar Af $(BUILD_DIR)/upgrade/openstack-upgrade-$(PRODUCT_VERSION).tar $(BUILD_DIR)/upgrade/openstack-part.tar + tar Af $(BUILD_DIR)/upgrade/openstack-upgrade-$(PRODUCT_VERSION).tar $(BUILD_DIR)/upgrade/common-part.tar + $(ACTION.TOUCH) diff --git a/upgrade/upgrade.sh b/upgrade/upgrade.sh new file mode 100755 index 000000000..b73c01606 --- /dev/null +++ b/upgrade/upgrade.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +SCRIPT_PATH=$(dirname $(readlink -e $0)) +UPGRADE_PATH=$SCRIPT_PATH/upgrade + +function prepare_upgrade_files { + DOCKER_IMAGES_DIR_PATH=$UPGRADE_PATH/images + DOCKER_IMAGES_ARCHIVE_PATH=$DOCKER_IMAGES_DIR_PATH/fuel-images.tar.lrz + + pushd $DOCKER_IMAGES_DIR_PATH + lrzuntar -f $DOCKER_IMAGES_ARCHIVE_PATH + popd +} + +function run_upgrade { + PYTHONPATH=$UPGRADE_PATH/site-packages python $UPGRADE_PATH/bin/fuel-upgrade --src $UPGRADE_PATH docker +} + +prepare_upgrade_files +run_upgrade