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
This commit is contained in:
Aleksey Kasatkin 2014-06-27 17:41:16 +03:00
parent 6ff703ae9e
commit c3873f0153
6 changed files with 114 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

11
iso/pkg-versions.awk Executable file
View File

@ -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 "\""}

71
upgrade/module.mk Normal file
View File

@ -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)

20
upgrade/upgrade.sh Executable file
View File

@ -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