Andrew Bogott has submitted this change and it was merged.

Change subject: Updated dc-migrate a bit.
......................................................................


Updated dc-migrate a bit.

I added a few naps to avoid race conditions, and
added a salt line to enable clearing of the puppet master certs
post-migration.

Change-Id: I06179bb5b0714253c25a07b2a7f73ccb0aede196
---
D files/openstack/folsom/virtscripts/dc-migrate
M files/openstack/havana/virtscripts/dc-migrate
M manifests/role/nova.pp
3 files changed, 11 insertions(+), 78 deletions(-)

Approvals:
  Andrew Bogott: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/files/openstack/folsom/virtscripts/dc-migrate 
b/files/openstack/folsom/virtscripts/dc-migrate
deleted file mode 100755
index 53d9fda..0000000
--- a/files/openstack/folsom/virtscripts/dc-migrate
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-#####################################################################
-### THIS FILE IS MANAGED BY PUPPET
-### puppet:///files/openstack/folsom/virtscripts/dc-migrate
-#####################################################################
-#set -x
-ssh-add -l > /dev/null
-if [ "$?" != "0" ]
-then
-       echo "You must have a forwarded agent to use this script"
-       exit 1
-fi
-INSTANCENAME=$1
-PROJECT=$2
-FROMREGION='pmtpa'
-TOREGION='eqiad'
-FROMAUTH="http://virt0.wikimedia.org:35357/v2.0";
-TOAUTH="http://virt1000.wikimedia.org:35357/v2.0";
-FROMPUPPETMASTER="virt0.wikimedia.org"
-TOPUPPETMASTER="virt1000.wikimedia.org"
-TOINSTANCE=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova --os-region 
${TOREGION} show ${INSTANCENAME} | grep ' id ' | awk '{ print $4 }'`
-if [ -n "$TOINSTANCE" ]; then
-       echo "Name conflict!  ${INSTANCENAME} already exists in ${TOREGION} 
with ID \"${TOINSTANCE}\""
-       exit 1
-fi
-echo "(That error was a good thing.)"
-echo ""
-FROMIMAGE=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${FROMAUTH} nova --os-region 
${FROMREGION} show ${INSTANCENAME} | grep ' image ' | awk '{gsub ( "[()]","" ) 
; print $(NF-1) }'`
-FROMFLAVOR=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${FROMAUTH} nova --os-region 
${FROMREGION} show ${INSTANCENAME} | grep ' flavor ' | awk '{gsub ( "[()]","" ) 
; print $5 }'`
-FROMSECURITYRAW=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${FROMAUTH} nova 
--os-region ${FROMREGION} show ${INSTANCENAME} | grep ' security_groups ' | awk 
 -F "|" '{ print $3 }'`
-FROMSECURITY=`python -c "print ','.join([o['name'] for o in 
${FROMSECURITYRAW}])"`
-FROMHOST=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${FROMAUTH} nova --os-region 
${FROMREGION} show ${INSTANCENAME} | grep 'OS-EXT-SRV-ATTR:host' | awk '{ print 
$4 }'`
-FROMINSTANCENAME=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${FROMAUTH} nova 
--os-region ${FROMREGION} show ${INSTANCENAME} | grep 
'OS-EXT-SRV-ATTR:instance_name' | awk '{ print $4 }'`
-FROMINSTANCE=$FROMINSTANCENAME
-echo "Creating initial image in $TOREGION"
-cd /srv/org/wikimedia/controller/wikis/w && php 
./extensions/OpenStackManager/maintenance/createInstance.php --image 
${FROMIMAGE} --flavor ${FROMFLAVOR} --instance ${INSTANCENAME} --project 
${PROJECT} --region ${TOREGION} --securitygroups ${FROMSECURITY}
-echo "The new instance is building.  Waiting for it to be assigned a host..."
-TOHOST=''
-while [ -z $TOHOST ]; do
-       sleep 10
-       TOHOST=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova 
--os-region ${TOREGION} show ${INSTANCENAME} | grep 'OS-EXT-SRV-ATTR:host' | 
awk '{ print $4 }'`
-done
-TOINSTANCENAME=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova 
--os-region ${TOREGION} show ${INSTANCENAME} | grep 
'OS-EXT-SRV-ATTR:instance_name' | awk '{ print $4 }'`
-TOINSTANCE=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova --os-region 
${TOREGION} show ${INSTANCENAME} | grep ' id ' | awk '{ print $4 }'`
-echo ""
-echo "Migrating $FROMINSTANCE from $FROMHOST to $TOINSTANCE on $TOHOST"
-echo ""
-echo "Destroying new instance on $TOHOST"
-echo ""
-ssh $TOHOST.$TOREGION.wmnet "virsh destroy ${TOINSTANCE}"
-echo "Clearing resolv.conf in instance on $FROMHOST"
-echo ""
-salt ${FROMINSTANCE}.${FROMREGION}.wmflabs cmd.run "rm -f /etc/resolv.conf"
-echo "Destroying instance on $FROMHOST"
-echo ""
-ssh $FROMHOST.$FROMREGION.wmnet "virsh destroy ${FROMINSTANCE}"
-echo ""
-sleep 30
-echo ""
-echo "Rsyncing instance from $FROMHOST to $TOHOST"
-echo ""
-# This one is right, but currently impossible due to filtering
-#ssh -A $FROMHOST.$FROMREGION.wmnet "rsync -S -av 
/var/lib/nova/instances/${FROMINSTANCE} 
${TOHOST}.${TOREGION}.wmnet:/var/lib/nova/instances/${TOINSTANCE}"
-# This is dumb but will work
-rsync -S -av 
${FROMHOST}.${FROMREGION}.wmnet:/var/lib/nova/instances/${FROMINSTANCE} /tmp/
-rsync -S -av /tmp/${FROMINSTANCE}/* 
${TOHOST}.${TOREGION}.wmnet:/var/lib/nova/instances/${TOINSTANCE}
-rm -r /tmp/${FROMINSTANCE}
-echo ""
-echo ""
-echo ""
-echo "Clearing stale puppet cert (if any)"
-puppet cert clean ${TOINSTANCENAME}.${TOREGION}.wmflabs
-echo ""
-echo "Rebooting the instance"
-echo ""
-OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova --os-region ${TOREGION} 
reboot ${INSTANCENAME}
diff --git a/files/openstack/havana/virtscripts/dc-migrate 
b/files/openstack/havana/virtscripts/dc-migrate
index 540d360..460d57f 100755
--- a/files/openstack/havana/virtscripts/dc-migrate
+++ b/files/openstack/havana/virtscripts/dc-migrate
@@ -42,6 +42,7 @@
 done
 TOINSTANCENAME=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova 
--os-region ${TOREGION} show ${INSTANCENAME} | grep 
'OS-EXT-SRV-ATTR:instance_name' | awk '{ print $4 }'`
 TOINSTANCE=`OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova --os-region 
${TOREGION} show ${INSTANCENAME} | grep ' id ' | awk '{ print $4 }'`
+sleep 2
 echo ""
 echo "Migrating $FROMINSTANCE from $FROMHOST to $TOINSTANCE on $TOHOST"
 echo ""
@@ -51,11 +52,19 @@
 echo "Clearing resolv.conf in instance on $FROMHOST"
 echo ""
 salt ${FROMINSTANCE}.${FROMREGION}.wmflabs cmd.run "rm -f /etc/resolv.conf"
+salt ${FROMINSTANCE}.${FROMREGION}.wmflabs cmd.run "rm -f 
/etc/resolvconf/resolv.conf.d/original"
+echo ""
+echo "Enabling puppet master cert refresh"
+salt ${FROMINSTANCE}.${FROMREGION}.wmflabs cmd.run "touch 
/root/allowcertdeletion"
+echo ""
+sleep 1
 echo "Destroying instance on $FROMHOST"
 echo ""
+OS_TENANT_NAME=${PROJECT} OS_AUTH_URL=${TOAUTH} nova --os-region ${TOREGION} 
stop ${INSTANCENAME}
+sleep 5
 ssh $FROMHOST.$FROMREGION.wmnet "virsh destroy ${FROMINSTANCE}"
 echo ""
-sleep 30
+sleep 10
 echo ""
 echo "Rsyncing instance from $FROMHOST to $TOHOST"
 echo ""
diff --git a/manifests/role/nova.pp b/manifests/role/nova.pp
index dd8c424..336fe42 100644
--- a/manifests/role/nova.pp
+++ b/manifests/role/nova.pp
@@ -318,7 +318,7 @@
        # Script to migrate instance from one dc to another (specifically, 
pmtpa to eqiad)
        file { "/root/dc-migrate":
                ensure => present,
-               source => 
"puppet:///files/openstack/${openstack_version}/virtscripts/dc-migrate",
+               source => 
"puppet:///files/openstack/havana/virtscripts/dc-migrate",
                mode => 0755,
                owner => root,
                group => root,

-- 
To view, visit https://gerrit.wikimedia.org/r/115606
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I06179bb5b0714253c25a07b2a7f73ccb0aede196
Gerrit-PatchSet: 3
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Andrew Bogott <[email protected]>
Gerrit-Reviewer: Andrew Bogott <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to