From e95a768460095b265b155acc0778f9e50e9a4a18 Mon Sep 17 00:00:00 2001 From: James Slagle Date: Mon, 29 Sep 2014 19:50:51 -0400 Subject: [PATCH] Add support for tripleo packages If instack-undercloud is installed from package, other tripleo packages will be used. If run from git, then other tripleo projects will also be used from source. The behavior can also be controlled via $INSTACK_TRIPLEO_SOURCE --- README-source.md | 1 - .../post-install.d/90-fix-ceilometer | 2 +- .../environment.d/00-package-install | 25 +- .../post-configure.d/98-undercloud-setup | 31 ++- .../config.json.template | 1 - .../post-install.d/10-tuskar-role-directory | 5 + instack-sourcerc | 22 +- instack-undercloud.spec | 11 +- scripts/instack-deploy-overcloud | 157 ++++++------- scripts/instack-install-undercloud-packages | 2 +- scripts/instack-install-undercloud-source | 217 ++++++++++-------- scripts/instack-prepare-for-overcloud | 5 +- 12 files changed, 250 insertions(+), 229 deletions(-) create mode 100755 elements/undercloud-stack-config/post-install.d/10-tuskar-role-directory diff --git a/README-source.md b/README-source.md index 687d2d9a0..637ecdf83 100644 --- a/README-source.md +++ b/README-source.md @@ -15,7 +15,6 @@ instack-undercloud via source 1. Create initial directory for instack, and clone the needed repositories. - mkdir instack cd instack git clone https://github.com/agroup/instack-undercloud diff --git a/elements/ceilometer-delorean/post-install.d/90-fix-ceilometer b/elements/ceilometer-delorean/post-install.d/90-fix-ceilometer index 21b2a54b3..f31d77c5f 100755 --- a/elements/ceilometer-delorean/post-install.d/90-fix-ceilometer +++ b/elements/ceilometer-delorean/post-install.d/90-fix-ceilometer @@ -13,7 +13,7 @@ sudo pip install -U oslo.serialization # in the spec. sudo yum -y install \ https://kojipkgs.fedoraproject.org//packages/python-tooz/0.3/1.fc22/noarch/python-tooz-0.3-1.fc22.noarch.rpm \ - https://kojipkgs.fedoraproject.org//packages/python-pymemcache/1.2.5/2.fc22/noarch/python-pymemcache-1.2.5-2.fc22.noarch.rpm + https://kojipkgs.fedoraproject.org//packages/python-pymemcache/1.2.5/2.fc22/noarch/python-pymemcache-1.2.5-2.fc22.noarch.rpm || true # ceilometer requires an api_paste.ini # not yet fixed in Delorean, fixed in dist-git diff --git a/elements/undercloud-package-install/environment.d/00-package-install b/elements/undercloud-package-install/environment.d/00-package-install index 501478c59..6b55ea459 100755 --- a/elements/undercloud-package-install/environment.d/00-package-install +++ b/elements/undercloud-package-install/environment.d/00-package-install @@ -11,26 +11,10 @@ export DIB_INSTALLTYPE_swift=package export DIB_INSTALLTYPE_cinder=package export DIB_INSTALLTYPE_horizon=source export DIB_INSTALLTYPE_ceilometer=package - -# We are installing ironic from source so we can easily apply the discovery -# patch for now. -# Nova must also be installed from source when installing ironic from source as -# they make use of each other's venv's. -# python-ironicclient also must be from source -# novnc from source as well. -# export DIB_INSTALLTYPE_ironic=source -# export DIB_REPOLOCATION_ironic=https://review.openstack.org/openstack/ironic -# export DIB_REPOREF_ironic=refs/changes/31/110031/30 -# export DIB_INSTALLTYPE_nova=source -# export DIB_INSTALLTYPE_python_ironicclient=source -# export DIB_INSTALLTYPE_novnc=source - export DIB_INSTALLTYPE_ironic=package export DIB_INSTALLTYPE_nova=package -export DIB_INSTALLTYPE_python_ironicclient=package -export DIB_INSTALLTYPE_novnc=package -# Use packages for the clients +# Clients export DIB_INSTALLTYPE_python_cinderclient=package export DIB_INSTALLTYPE_python_glanceclient=package export DIB_INSTALLTYPE_python_heatclient=package @@ -39,11 +23,18 @@ export DIB_INSTALLTYPE_python_neutronclient=package export DIB_INSTALLTYPE_python_novaclient=package export DIB_INSTALLTYPE_python_swiftclient=package export DIB_INSTALLTYPE_python_ceilometerclient=package +export DIB_INSTALLTYPE_python_ironicclient=package # os-*-config export DIB_INSTALLTYPE_os_collect_config=package export DIB_INSTALLTYPE_os_refresh_config=package export DIB_INSTALLTYPE_os_apply_config=package +# TripleO +# Make the setting for tripleo-heat-templates overrideable for the source +# install. Can be removed when source install is removed. +export DIB_INSTALLTYPE_tripleo_heat_templates=${DIB_INSTALLTYPE_tripleo_heat_templates:-package} + # Miscellaneous export DIB_INSTALLTYPE_get_pip_py=package +export DIB_INSTALLTYPE_novnc=package diff --git a/elements/undercloud-post-config-source/os-refresh-config/post-configure.d/98-undercloud-setup b/elements/undercloud-post-config-source/os-refresh-config/post-configure.d/98-undercloud-setup index 777cf53d1..33c7f0e43 100755 --- a/elements/undercloud-post-config-source/os-refresh-config/post-configure.d/98-undercloud-setup +++ b/elements/undercloud-post-config-source/os-refresh-config/post-configure.d/98-undercloud-setup @@ -14,7 +14,7 @@ sudo ip addr del 192.0.2.1/24 dev eth1 || true source /root/tripleo-undercloud-passwords source /root/stackrc -export PATH=$PATH:$INSTACK_ROOT/tripleo-incubator/scripts +export PATH=$PATH:$INSTACK_ROOT/instack-undercloud/scripts if [ ! -f /root/.ssh/authorized_keys ]; then sudo mkdir -p /root/.ssh @@ -36,7 +36,7 @@ fi # Ensure keystone is up before continuing on. # Waits for up to 2 minutes. -wait_for 12 10 service $KEYSTONE_SERVICE status +tripleo wait_for 12 10 service $KEYSTONE_SERVICE status # Because keystone just still isn't up yet... sleep 20 @@ -61,7 +61,7 @@ REGISTER_SERVICE_OPTS= keystone role-create --name=ResellerAdmin # TODO: this needs to be switched over to use os-cloud-config's setup-endpoints -setup-endpoints $UNDERCLOUD_IP $ENDPOINT_LIST $REGISTER_SERVICE_OPTS +tripleo setup-endpoints $UNDERCLOUD_IP $ENDPOINT_LIST $REGISTER_SERVICE_OPTS keystone role-create --name heat_stack_user @@ -72,10 +72,21 @@ NETWORK_GATEWAY=$(os-apply-config --key neutron.network_gateway --type netaddres METADATA_SERVER=$UNDERCLOUD_IP PHYSICAL_NETWORK=ctlplane -setup-neutron \ - $DHCP_START $DHCP_END \ - $NETWORK_CIDR $NETWORK_GATEWAY \ - $METADATA_SERVER $PHYSICAL_NETWORK +NETWORK_JSON=$(mktemp) +jq "." < $NETWORK_JSON +{ + "physical": { + "gateway": "$NETWORK_GATEWAY", + "metadata_server": "$UNDERCLOUD_IP", + "cidr": "$NETWORK_CIDR", + "allocation_start": "$DHCP_START", + "allocation_end": "$DHCP_END", + "name": "$PHYSICAL_NETWORK" + } +} +EOF +setup-neutron -n $NETWORK_JSON +rm $NETWORK_JSON # Delete initial flavors for flavor in m1.tiny m1.small m1.medium m1.large m1.xlarge; do @@ -88,8 +99,8 @@ done nova quota-update --cores -1 --instances -1 --ram -1 $(keystone tenant-get admin | awk '$2=="id" {print $4}') # Using the source checkout path for now. -sudo -u stack /home/stack/instack-undercloud/scripts/instack-prepare-for-overcloud -sudo rm -rf /home/stack/.novaclient -/home/stack/instack-undercloud/scripts/instack-prepare-discovery +instack-prepare-for-overcloud +rm -rf $HOME/.novaclient +instack-prepare-discovery touch $OK_FILE diff --git a/elements/undercloud-stack-config/config.json.template b/elements/undercloud-stack-config/config.json.template index 7a327328e..f5d41ac21 100644 --- a/elements/undercloud-stack-config/config.json.template +++ b/elements/undercloud-stack-config/config.json.template @@ -144,5 +144,4 @@ "recheck_interval": "5", "quorum_policy": "ignore" } - } diff --git a/elements/undercloud-stack-config/post-install.d/10-tuskar-role-directory b/elements/undercloud-stack-config/post-install.d/10-tuskar-role-directory new file mode 100755 index 000000000..f0a8ced29 --- /dev/null +++ b/elements/undercloud-stack-config/post-install.d/10-tuskar-role-directory @@ -0,0 +1,5 @@ +#!/bin/bash + +cat > /opt/stack/os-config-refresh/environment.d/10-tuskar-role-directory < overcloud.yaml - OVERCLOUD_YAML_PATH=overcloud.yaml +OVERCLOUD_YAML_PATH="$INSTACK_ROOT/openstack-tripleo-heat-templates/overcloud.yaml" +RESOURCE_REGISTRY_PATH="$INSTACK_ROOT/openstack-tripleo-heat-templates/overcloud-resource-registry.yaml" - export OVERCLOUD_PARAMETERS=${OVERCLOUD_PARAMETERS:-"\ - -P AdminPassword=${OVERCLOUD_ADMIN_PASSWORD} \ - -P AdminToken=${OVERCLOUD_ADMIN_TOKEN} \ - -P CinderPassword=${OVERCLOUD_CINDER_PASSWORD} \ - -P GlanceLogFile=\"''\" \ - -P GlancePassword=${OVERCLOUD_GLANCE_PASSWORD} \ - -P HeatPassword=${OVERCLOUD_HEAT_PASSWORD} \ - -P NeutronDnsmasqOptions=\"dhcp-option-force=26,1400\" \ - -P NeutronPassword=${OVERCLOUD_NEUTRON_PASSWORD} \ - -P NeutronPublicInterface=$NeutronPublicInterface \ - -P NovaComputeLibvirtType=$OVERCLOUD_LIBVIRT_TYPE \ - -P NovaPassword=${OVERCLOUD_NOVA_PASSWORD} \ - -P SwiftHashSuffix=${OVERCLOUD_SWIFT_HASH} \ - -P SwiftPassword=${OVERCLOUD_SWIFT_PASSWORD} \ - "} +NeutronControlPlaneID=$(neutron net-show ctlplane | grep ' id ' | awk '{print $4}') - HEAT_ENVIRONMENT="" +export OVERCLOUD_PARAMETERS=${OVERCLOUD_PARAMETERS:-"\ +-P AdminPassword=${OVERCLOUD_ADMIN_PASSWORD} \ +-P AdminToken=${OVERCLOUD_ADMIN_TOKEN} \ +-P CeilometerPassword=${OVERCLOUD_CEILOMETER_PASSWORD} \ +-P CeilometerMeteringSecret=${OVERCLOUD_CEILOMETER_SECRET} \ +-P CinderPassword=${OVERCLOUD_CINDER_PASSWORD} \ +-P CinderISCSIHelper=lioadm \ +-P CloudName=overcloud \ +-P GlancePassword=${OVERCLOUD_GLANCE_PASSWORD} \ +-P HeatPassword=${OVERCLOUD_HEAT_PASSWORD} \ +-P NeutronControlPlaneID=$NeutronControlPlaneID \ +-P NeutronDnsmasqOptions=dhcp-option-force=26,1400 \ +-P NeutronPassword=${OVERCLOUD_NEUTRON_PASSWORD} \ +-P NeutronPublicInterface=$NeutronPublicInterface \ +-P NovaComputeLibvirtType=$OVERCLOUD_LIBVIRT_TYPE \ +-P NovaPassword=${OVERCLOUD_NOVA_PASSWORD} \ +-P SwiftHashSuffix=${OVERCLOUD_SWIFT_HASH} \ +-P SwiftPassword=${OVERCLOUD_SWIFT_PASSWORD} \ +-P NeutronNetworkType=${NEUTRON_NETWORK_TYPE} \ +-P NeutronTunnelTypes=${NEUTRON_TUNNEL_TYPES} \ +-P SnmpdReadonlyUserPassword=${UNDERCLOUD_CEILOMETER_SNMPD_PASSWORD} \ +"} -else - make -C $INSTACK_ROOT/tripleo-heat-templates-instack overcloud.yaml COMPUTESCALE=$COMPUTESCALE BLOCKSTORAGESCALE=$BLOCKSTORAGESCALE SWIFTSTORAGESCALE=$SWIFTSTORAGESCALE - OVERCLOUD_YAML_PATH=$INSTACK_ROOT/tripleo-heat-templates-instack/overcloud.yaml +# -P OvercloudControlFlavor=${OVERCLOUD_CONTROL_FLAVOR} \ +# -P OvercloudComputeFlavor=${OVERCLOUD_COMPUTE_FLAVOR} \ +# -P OvercloudBlockStorageFlavor=${OVERCLOUD_BLOCKSTORAGE_FLAVOR} \ +# -P OvercloudSwiftStorageFlavor=${OVERCLOUD_SWIFTSTORAGE_FLAVOR} \ - NeutronControlPlaneID=$(neutron net-show ctlplane | grep ' id ' | awk '{print $4}') - - export OVERCLOUD_PARAMETERS=${OVERCLOUD_PARAMETERS:-"\ - -P AdminPassword=${OVERCLOUD_ADMIN_PASSWORD} \ - -P AdminToken=${OVERCLOUD_ADMIN_TOKEN} \ - -P CeilometerPassword=${OVERCLOUD_CEILOMETER_PASSWORD} \ - -P CeilometerMeteringSecret=${OVERCLOUD_CEILOMETER_SECRET} \ - -P CinderPassword=${OVERCLOUD_CINDER_PASSWORD} \ - -P CinderISCSIHelper=lioadm \ - -P CloudName=overcloud \ - -P GlancePassword=${OVERCLOUD_GLANCE_PASSWORD} \ - -P HeatPassword=${OVERCLOUD_HEAT_PASSWORD} \ - -P NeutronControlPlaneID=$NeutronControlPlaneID \ - -P NeutronDnsmasqOptions=dhcp-option-force=26,1400 \ - -P NeutronPassword=${OVERCLOUD_NEUTRON_PASSWORD} \ - -P NeutronPublicInterface=$NeutronPublicInterface \ - -P NovaComputeLibvirtType=$OVERCLOUD_LIBVIRT_TYPE \ - -P NovaPassword=${OVERCLOUD_NOVA_PASSWORD} \ - -P SwiftHashSuffix=${OVERCLOUD_SWIFT_HASH} \ - -P SwiftPassword=${OVERCLOUD_SWIFT_PASSWORD} \ - -P NeutronNetworkType=${NEUTRON_NETWORK_TYPE} \ - -P NeutronTunnelTypes=${NEUTRON_TUNNEL_TYPES} \ - -P SnmpdReadonlyUserPassword=${UNDERCLOUD_CEILOMETER_SNMPD_PASSWORD} \ - -P OvercloudControlFlavor=${OVERCLOUD_CONTROL_FLAVOR} \ - -P OvercloudComputeFlavor=${OVERCLOUD_COMPUTE_FLAVOR} \ - -P OvercloudBlockStorageFlavor=${OVERCLOUD_BLOCKSTORAGE_FLAVOR} \ - -P OvercloudSwiftStorageFlavor=${OVERCLOUD_SWIFTSTORAGE_FLAVOR} \ - "} +HEAT_ENV=${HEAT_ENV:-"overcloud-env.json"} +ENV_JSON='{"parameters":{}}' - HEAT_ENV=${HEAT_ENV:-"${INSTACK_ROOT}/overcloud-env.json"} - ENV_JSON='{"parameters":{}}' - jq . > "${HEAT_ENV}" <<< $ENV_JSON - chmod 0600 "${HEAT_ENV}" - generate-keystone-pki --heatenv $HEAT_ENV - HEAT_ENVIRONMENT="-e ${HEAT_ENV}" +RESOURCE_REGISTRY="-e $RESOURCE_REGISTRY_PATH" +ENV_JSON=$(jq '.parameters = .parameters + { + "ControllerCount": '${CONTROLSCALE}', + "ComputeCount": '${COMPUTESCALE}', + "BlockStorageCount": '${BLOCKSTORAGESCALE}', + "ObjectStorageCount": '${SWIFTSTORAGESCALE}' + }' <<< $ENV_JSON) -fi +jq . > "${HEAT_ENV}" <<< $ENV_JSON +chmod 0600 "${HEAT_ENV}" +generate-keystone-pki --heatenv $HEAT_ENV +HEAT_ENVIRONMENT="-e ${HEAT_ENV}" heat stack-create -f $OVERCLOUD_YAML_PATH \ + $RESOURCE_REGISTRY \ $OVERCLOUD_PARAMETERS \ $HEAT_ENVIRONMENT \ overcloud @@ -155,23 +132,15 @@ echo $NEW_JSON > $NODES_JSON export TE_DATAFILE=$NODES_JSON source $TRIPLEO_ROOT/overcloudrc -if [ -z "$INSTACK_ROOT" ]; then - tripleo init-keystone -p $OVERCLOUD_ADMIN_PASSWORD $OVERCLOUD_ADMIN_TOKEN \ - $OVERCLOUD_IP admin@example.com heat-admin@$OVERCLOUD_IP \ - ${SSLBASE:+--ssl $PUBLIC_API_URL} +init-keystone -o $OVERCLOUD_IP -t $OVERCLOUD_ADMIN_TOKEN \ +-e admin.example.com -p $OVERCLOUD_ADMIN_PASSWORD -u heat-admin \ +${SSLBASE:+-s $PUBLIC_API_URL} - REGISTER_SERVICE_OPTS= -else - init-keystone -o $OVERCLOUD_IP -t $OVERCLOUD_ADMIN_TOKEN \ - -e admin.example.com -p $OVERCLOUD_ADMIN_PASSWORD -u heat-admin \ - ${SSLBASE:+-s $PUBLIC_API_URL} +# REGISTER_SERVICE_OPTS="--ceilometer-password $OVERCLOUD_CEILOMETER_PASSWORD " +REGISTER_SERVICE_OPTS="" - # REGISTER_SERVICE_OPTS="--ceilometer-password $OVERCLOUD_CEILOMETER_PASSWORD " - REGISTER_SERVICE_OPTS="" - - keystone role-create --name=swiftoperator - keystone role-create --name=ResellerAdmin -fi +keystone role-create --name=swiftoperator +keystone role-create --name=ResellerAdmin tripleo setup-endpoints $OVERCLOUD_IP \ --cinder-password $OVERCLOUD_CINDER_PASSWORD \ @@ -188,7 +157,29 @@ NETWORK_CIDR=${NETWORK_CIDR:-"10.0.0.0/8"} FLOATING_IP_START=${FLOATING_IP_START:-"172.17.0.45"} FLOATING_IP_END=${FLOATING_IP_END:-"172.17.0.64"} FLOATING_IP_CIDR=${FLOATING_IP_CIDR:-"172.17.0.0/16"} -tripleo setup-neutron "" "" $NETWORK_CIDR "" "" "" "" $FLOATING_IP_START $FLOATING_IP_END $FLOATING_IP_CIDR +OVERCLOUD_NAMESERVER="8.8.8.8" +BM_NETWORK_GATEWAY="192.0.2.1" + +jq "." < $NETWORK_JSON +{ + "float": { + "cidr": "$NETWORK_CIDR", + "name": "default-net", + "nameserver": "$OVERCLOUD_NAMESERVER" + }, + "external": { + "name": "ext-net", + "cidr": "$FLOATING_IP_CIDR", + "allocation_start": "$FLOATING_IP_START", + "allocation_end": "$FLOATING_IP_END", + "gateway": "$BM_NETWORK_GATEWAY" + } +} +EOF + +setup-neutron -n $NETWORK_JSON +rm $NETWORK_JSON + nova flavor-delete m1.tiny nova flavor-create m1.tiny 1 512 2 1 diff --git a/scripts/instack-install-undercloud-packages b/scripts/instack-install-undercloud-packages index f291dac79..480053e0e 100755 --- a/scripts/instack-install-undercloud-packages +++ b/scripts/instack-install-undercloud-packages @@ -52,7 +52,7 @@ sudo -E instack \ RUN_ORC=${RUN_ORC:-"1"} if [ "$RUN_ORC" = "1" ]; then - sudo os-refresh-config + sudo IMAGE_PATH=$IMAGE_PATH os-refresh-config fi # generate ssh authentication keys if they don't exist diff --git a/scripts/instack-install-undercloud-source b/scripts/instack-install-undercloud-source index 233fcc194..782f3b648 100755 --- a/scripts/instack-install-undercloud-source +++ b/scripts/instack-install-undercloud-source @@ -2,17 +2,21 @@ set -eux -export INSTACK_ROOT=${INSTACK_ROOT:-$(pwd)} +export INSTACK_ROOT=${INSTACK_ROOT:-"/usr/share"} +export ELEMENTS_PATH=${ELEMENTS_PATH:-"\ +/usr/share/tripleo-image-elements:\ +/usr/share/diskimage-builder/elements:\ +/usr/share/instack-undercloud"} +export JSONFILE=${JSONFILE:-/usr/share/instack-undercloud/json-files/fedora-20-undercloud-delorean.json} -export ELEMENTS_PATH="$INSTACK_ROOT/tripleo-image-elements/elements:$INSTACK_ROOT/diskimage-builder/elements:$INSTACK_ROOT/instack-undercloud/elements" - -export JSONFILE=${JSONFILE:-$INSTACK_ROOT/instack-undercloud/json-files/fedora-20-undercloud-source.json} +source "$INSTACK_ROOT"/instack-undercloud/instack-sourcerc if [ "$DELOREAN" = "1" ]; then sudo curl -o /etc/yum.repos.d/delorean.repo $DELOREAN_REPO sudo curl -o /etc/yum.repos.d/delorean-alt.repo $DELOREAN_REPO_ALT sudo sed -i "s/delorean/delorean-alt/g" /etc/yum.repos.d/delorean-alt.repo - export JSONFILE=$INSTACK_ROOT/instack-undercloud/json-files/fedora-20-undercloud-delorean.json + sudo /bin/bash -c "echo >> /etc/yum.repos.d/delorean.repo" + sudo /bin/bash -c "echo >> /etc/yum.repos.d/delorean-alt.repo" fi sudo yum -y install git python-pip ccache @@ -24,127 +28,138 @@ mkdir -p $PIP_DOWNLOAD_CACHE git config --global user.email "instack@example.com" git config --global user.name "instack" -if [ ! -d $INSTACK_ROOT/tripleo-image-elements/elements ]; then - git clone https://git.openstack.org/openstack/tripleo-image-elements +function do_tripleo_source_installs { + if [ ! -d $INSTACK_ROOT/tripleo-image-elements/elements ]; then + git clone https://git.openstack.org/openstack/tripleo-image-elements - pushd tripleo-image-elements + pushd tripleo-image-elements - if [ "$LKG" = "1" ]; then - git fetch origin $DIB_REPOREF_tripleo_image_elements - git reset --hard FETCH_HEAD + if [ "$LKG" = "1" ]; then + git fetch origin $DIB_REPOREF_tripleo_image_elements + git reset --hard FETCH_HEAD + fi + + popd fi - popd -fi + if [ ! -d $INSTACK_ROOT/diskimage-builder ]; then + git clone https://git.openstack.org/openstack/diskimage-builder -if [ ! -d $INSTACK_ROOT/diskimage-builder ]; then - git clone https://git.openstack.org/openstack/diskimage-builder + pushd diskimage-builder - pushd diskimage-builder + if [ "$LKG" = "1" ]; then + git fetch origin $DIB_REPOREF_diskimage_builder + git reset --hard FETCH_HEAD + fi - if [ "$LKG" = "1" ]; then - git fetch origin $DIB_REPOREF_diskimage_builder - git reset --hard FETCH_HEAD + popd fi - popd -fi - -if [ ! -d "$INSTACK_ROOT/dib-utils" ]; then - git clone https://git.openstack.org/openstack/dib-utils -fi - - -if [ ! -d $INSTACK_ROOT/instack-undercloud ]; then - git clone https://github.com/agroup/instack-undercloud -fi - -if [ ! -d $INSTACK_ROOT/instack ]; then - git clone https://github.com/agroup/instack -fi - -if [ ! -d $INSTACK_ROOT/os-cloud-config ]; then - git clone https://git.openstack.org/openstack/os-cloud-config - - pushd os-cloud-config - - if [ "$LKG" = "1" ]; then - git fetch origin $DIB_REPOREF_os_cloud_config - git reset --hard FETCH_HEAD + if [ ! -d "$INSTACK_ROOT/dib-utils" ]; then + git clone https://git.openstack.org/openstack/dib-utils fi - # Reset to before requirements.txt update from - # https://review.openstack.org/#/c/106589/ - # Not yet sure why this is failing to install. - git reset --hard 4a03e6b129c91a7269b6103a1f85fd011ec92c91 - popd - -fi - - -if [ ! -d $INSTACK_ROOT/tripleo-incubator ]; then - git clone https://git.openstack.org/openstack/tripleo-incubator - - pushd tripleo-incubator - - if [ "$LKG" = "1" ]; then - git fetch origin $DIB_REPOREF_tripleo_incubator - git reset --hard FETCH_HEAD + if [ ! -d $INSTACK_ROOT/instack-undercloud ]; then + git clone https://github.com/agroup/instack-undercloud fi + if [ ! -d $INSTACK_ROOT/instack ]; then + git clone https://github.com/agroup/instack + fi + + if [ ! -d $INSTACK_ROOT/os-cloud-config ]; then + git clone https://git.openstack.org/openstack/os-cloud-config + + pushd os-cloud-config + + if [ "$LKG" = "1" ]; then + git fetch origin $DIB_REPOREF_os_cloud_config + git reset --hard FETCH_HEAD + fi + + popd + + fi + + + if [ ! -d $INSTACK_ROOT/tripleo-incubator ]; then + git clone https://git.openstack.org/openstack/tripleo-incubator + + pushd tripleo-incubator + + if [ "$LKG" = "1" ]; then + git fetch origin $DIB_REPOREF_tripleo_incubator + git reset --hard FETCH_HEAD + fi + + popd + + fi + + if [ ! -d $INSTACK_ROOT/tripleo-heat-templates ]; then + git clone https://git.openstack.org/openstack/tripleo-heat-templates + + pushd tripleo-heat-templates + ## Compute and controller templates without merge.py + Add converted version of block and object storage + # + # https://review.openstack.org/#/c/123100 + git fetch https://review.openstack.org/openstack/tripleo-heat-templates refs/changes/00/123100/4 && git cherry-pick FETCH_HEAD + # https://review.openstack.org/#/c/123713/ + git fetch https://review.openstack.org/openstack/tripleo-heat-templates refs/changes/13/123713/4 && git cherry-pick FETCH_HEAD + popd + + fi + + # Create a useful symlink for openstack-tripleo-heat-templates + # This simplifies the source vs package installs a bit so we can just use one path + ln -f -s $INSTACK_ROOT/tripleo-heat-templates $INSTACK_ROOT/openstack-tripleo-heat-templates + + export DIB_REPOLOCATION_tripleo_heat_templates=$INSTACK_ROOT/tripleo-heat-templates + export DIB_INSTALLTYPE_tripleo_heat_templates=source + export TUSKAR_ROLE_DIRECTORY=/opt/stack/tripleo-heat-templates + + pushd $INSTACK_ROOT/dib-utils + sudo pip install -U . popd -fi - -if [ ! -d $INSTACK_ROOT/tripleo-heat-templates ]; then - git clone https://git.openstack.org/openstack/tripleo-heat-templates - - # Create an unpatched copy for non-Tuskar testing - cp -r $INSTACK_ROOT/tripleo-heat-templates $INSTACK_ROOT/tripleo-heat-templates-instack - - pushd tripleo-heat-templates - - ## Compute and controller templates without merge.py + Add converted version of block and object storage - # - # https://review.openstack.org/#/c/123100 - git fetch https://review.openstack.org/openstack/tripleo-heat-templates refs/changes/00/123100/4 && git cherry-pick FETCH_HEAD - # https://review.openstack.org/#/c/123713/ - git fetch https://review.openstack.org/openstack/tripleo-heat-templates refs/changes/13/123713/4 && git cherry-pick FETCH_HEAD - + pushd $INSTACK_ROOT/diskimage-builder + sudo pip install -U . popd -fi + pushd $INSTACK_ROOT/instack + sudo pip install -e . + popd -export DIB_REPOLOCATION_tripleo_heat_templates=$INSTACK_ROOT/tripleo-heat-templates + # Needed to compile os-cloud-config + sudo yum install -y libffi-devel gcc python-devel openssl-devel libxml2-devel libxslt-devel + pushd $INSTACK_ROOT/os-cloud-config + sudo pip install -e . + popd + + # Must uninstall cmd2 otherwise, the package install will fail later on + sudo pip uninstall -y cmd2 + +} if [ ! -d $INSTACK_ROOT/tuskar-ui ]; then - git clone https://git.openstack.org/openstack/tuskar-ui - export DIB_REPOLOCATION_tuskar_ui=$INSTACK_ROOT/tuskar-ui + sudo git clone https://git.openstack.org/openstack/tuskar-ui $INSTACK_ROOT/tuskar-ui fi export DIB_REPOLOCATION_tuskar_ui=$INSTACK_ROOT/tuskar-ui -pushd $INSTACK_ROOT/dib-utils -sudo pip install -U . -popd - -pushd $INSTACK_ROOT/diskimage-builder -sudo pip install -U . -popd - -pushd $INSTACK_ROOT/instack -sudo pip install -e . -popd - -# Needed to compile os-cloud-config -sudo yum install -y libffi-devel gcc python-devel openssl-devel libxml2-devel libxslt-devel -pushd $INSTACK_ROOT/os-cloud-config -sudo pip install -e . -popd - +if [ "$INSTACK_TRIPLEO_SOURCE" = "1" ]; then + do_tripleo_source_installs +else + # Need to update to newer tripleo packages until we get more recent releases + sudo yum -y update openstack-tripleo-image-elements + sudo yum -y update diskimage-builder + # Make sure we don't end up with older oslo config from Fedora 20. + sudo yum -y update python-oslo-config + export TUSKAR_ROLE_DIRECTORY=/usr/share/openstack-tripleo-heat-templates +fi # tar is required if we want to run diskimage-builder sudo yum install -y tar @@ -160,7 +175,7 @@ if [ "$RUN_INSTACK" -eq 0 ]; then exit 0 fi -$INSTACK_ROOT/instack-undercloud/scripts/instack-install-undercloud-packages +instack-install-undercloud-packages if [ "$DELOREAN" -eq 1 ]; then @@ -200,11 +215,9 @@ if [ "$LKG" -eq 1 -a "$DELOREAN" -eq "0" ]; then sudo systemctl restart heat-engine fi - # Reset ownership of cache directory # This is needed in order for instack-build-images to make changes to the cache # $USER is not always set in a live cd building enviroment, so use || true sudo -E chown -R $USER: $HOME/.cache/image-create || true - echo "$COMPLETION_MESSAGE" diff --git a/scripts/instack-prepare-for-overcloud b/scripts/instack-prepare-for-overcloud index 5f777504f..b328870dc 100755 --- a/scripts/instack-prepare-for-overcloud +++ b/scripts/instack-prepare-for-overcloud @@ -4,12 +4,9 @@ set -eux IMAGE_PATH=${IMAGE_PATH:-"."} -export DEPLOY_NAME=${DEPLOY_NAME:-deploy-ramdisk} +export DEPLOY_NAME=${DEPLOY_NAME:-deploy-ramdisk-ironic} export DISCOVERY_NAME=${DISCOVERY_NAME:-discovery-ramdisk} -export INSTACK_ROOT=/home/stack -source $INSTACK_ROOT/instack-undercloud/instack-sourcerc - command $(sudo cat /root/stackrc | xargs) OS_AUTH_URL=${OS_AUTH_URL:-""}