<div dir="ltr">Hi All,<div><br></div><div>I recently did a Folsom to Grizzly upgrade on a production OpenStack environment and wanted to post the process and some notes. I understand that Havana is coming out in a few weeks, so this might be old news... I hope to do Grizzly to Havana within 3 months of Havana's release.</div>
<div><br></div><div>tl;dr: Short of a few minor manual changes, doing a straight "apt-get install" provided a clean and safe upgrade. The instances themselves saw no downtime. </div><div><br></div><div style>I definitely didn't see the issues that Jon ran into (whose posts I had starred in my inbox as warnings :)</div>
<div><br></div><div>Environment:</div><div><br></div><div style>Ubuntu 12.04 and OpenStack Folsom with two distinct regions and a cloud controller in each region. The controller runs all services but nova-compute. There's a NetApp providing NFS for shared instance storage as well as iSCSI for block storage. </div>
<div style><br></div><div style>nova-network is being used (and is still being used). </div><div style><br></div><div style>Swift is used, but it was upgraded to Grizzly months ago to utilize the new quota feature.</div><div style>
<br></div><div style>Everything is strictly controlled by Puppet.<br></div><div style><br></div><div style>Prep:</div><div style><br></div><div style>I ran through this process several times in a sandbox environment. I highly recommend doing this. Even if you don't have the budget for several servers, virtualize your cloud controller and a few compute nodes with the same configuration. </div>
<div><br></div><div>With Puppet, I use hiera to split my environment data into "sandbox" and "production" data sets. This way, the same Puppet config is used in both environments, but the proper environment data (subnets, passwords etc) is swapped out.</div>
<div><br></div><div>Cloud Controller Upgrade:</div><div><br></div><div style>1. Turn off Puppet</div><div style><br></div><div style>2. Backup the databases</div><div><br></div><div>3. Remove the Folsom cloud repo, install the Grizzly repo, apt-get update</div>
<div><br></div><div>4. apt-get dist-upgrade and say No to apt wanting to install new config files. The new files will be saved with a .dpkg-dist extension.</div><div><br></div><div>5. cp /etc/keystone/keystone.conf{,.orig}<br>
</div><div>6. cp /etc/keystone/keystone.conf.dpkg-dist /etc/keystone/keystone.conf</div><div>7. Manually edit /etc/keystone/keystone.conf with the relevant options. There's a significant different between the Folsom and Grizzly conf files that will prevent Keystone from running correctly before Puppet is turned back on.</div>
<div><br></div><div>8. Repeat for /etc/cinder/api-paste.ini. </div><div><br></div><div>All other Folsom-based configs were able to be used to get the services running with Grizzly before Puppet jumped back in to make any Grizzly-specific changes.</div>
<div><br></div><div style>9. Run db migrations on all services:</div><div style><br></div><div style>keystone-manage db_sync</div><div style>glance-manage db_sync</div><div style>nova-manage db sync</div><div style>cinder-manage db sync</div>
<div><div><br></div><div style>10. Install nova-conductor manually</div><div style><br></div><div style>11. Manually patch keystone. See this thread for details:</div><div style><br></div><div style><a href="http://www.gossamer-threads.com/lists/openstack/dev/30683">http://www.gossamer-threads.com/lists/openstack/dev/30683</a><br>
</div><div style><br></div><div style>12. Verify all services are back up. nova-network needed to be restarted once all other nova services were running... happened in both regions. No big deal.</div><div style><br></div>
<div style>13. Install the latest Puppet Keystone module because older versions are not compatible with Grizzly and newer versions are not compatible with Folsom.</div><div style><br></div><div style>14. Test Puppet: puppet agent --verbose --onetime --no-daemonize --noop</div>
<div style><br></div><div style>15. Turn on Puppet</div><div style><br></div><div style>Compute Node Upgrade:</div><div style><br></div><div style>1. Turn off Puppet</div><div style><br></div><div style>2. Remove Folsom repo, add Grizzly repo, apt-get update</div>
<div style><br></div><div style>3. apt-get install <long list of packages></div><div style><br></div><div style>apt-get dist-upgrade was not possible because there was an updated version of open-iscsi available. Upgrading the package would cause all current iSCSI connections to disconnect effectively disconnecting all volumes. Not cool. I think the only way around this would be to evacuate compute nodes and install the update.</div>
<div style><br></div><div style>4. Test and turn on Puppet</div><div style><br></div><div style>Final Notes:<br></div><div style><br></div><div style>Why not have Puppet running during the upgrade or let Puppet do the upgrade? I probably could have done this but I preferred to "personally" oversee the upgrade myself.</div>
<div style><br></div><div style>I saw a recent thread on the -dev list about providing reverse database migrations for the possibility of having to roll back an upgrade. A comment was made (I forget by whom) asking if this was really needed and if an admin would simply perform a database restore instead. I fully agree with that statement. If I had to roll back, I would uninstall the Grizzly packages, install the Folsom packages, and then import my latest database backup.</div>
<div style><br></div><div style>I hope someone finds this useful. Please let me know if you'd like further details.</div><div style><br></div><div style>Thanks,</div><div style>Joe</div><div style><br></div><div style>
<br></div><div style><br></div>-- <br><div dir="ltr">Joe Topjian<div>Systems Architect</div><div>Cybera Inc.</div><div><br></div><div><a href="http://www.cybera.ca" target="_blank">www.cybera.ca</a></div><div><br></div><div>
<font color="#666666"><span>Cybera</span><span> is a not-for-profit organization that works to spur and support innovation, for the economic benefit of Alberta, through the use of cyberinfrastructure.</span></font></div></div>
</div></div>