[OpenStack-Infra] puppet-mysql migration discussion
Paul Belanger
pabelanger at redhat.com
Mon Nov 2 18:49:40 UTC 2015
On Mon, Nov 02, 2015 at 10:27:26AM -0800, Clark Boylan wrote:
> On Mon, Nov 2, 2015, at 07:58 AM, Paul Belanger wrote:
> > Greetings,
> >
> > I'd like to start a thread talking about the effort to upgrade our
> > version of
> > puppet-mysql to a newer / latest version. I know there has been some talk
> > on this already, would somebody mind adding some information?
> >
> > I have heard 3 things:
> >
> > 1. Remove database support from current modules, and only use
> > sql_connection
> > strings.
> > 2. Move everything to trove
> > 3. Setup mysql cluster
> I think this is mostly orthogonal to updating the puppet-mysql module
> because 2 + 1ish (use sql_connection) is basically what we do everywhere
> but Jenkins slave image builds, paste.openstack.org, and
> wiki.openstack.org.
> >
> > Again, I don't know if there are true or not, just things I have seen
> > people
> > talk about.
> >
> > The obviously part that is missing, is _how_ we are going to do the
> > upgrade. I
> > know some people (clarkb?) already have some ideas on that.
> >
> > The reason for me asking, 2 weeks ago I offered to help the infra-cloud
> > move
> > forward and upgrading puppet-mysql was one of the items discussed. So,
> > here I
> > am, offering to do the grunt work, just need some understanding on what
> > people
> > want to do.
> I was hoping that there was a forward and backward compatible
> intermediate step we could make where old and new configs were supported
> but I am told that isn't possible. As a result we will likely need to
> update puppet-mysql, then all three of the above uses of puppet-mysql
> semi atomically to keep everything working.
>
> Testing that image builds work before the update is simple as we can
> just run
> openstack-infra/project-config/nodepool/scripts/prepare_node_bare.sh to
> see if that works. Paste.o.o is simple and has gone from local Drizzle
> to Trove to local MySQL without much fuss so I doubt it will have much
> trouble but a test deployment is easy if we are worried.
>
> The tricky one is going to be wiki.openstack.org and this is maybe where
> the above list is relevant to the discussion. We could move it to an off
> host database hosted by trove and not worry about updating puppet-mysql
> in that module at all. Or we can test a deployment of wiki using the
> newer mysql module before prod deployment. In either case we should
> probably announce a wiki downtime prior to the upgrade, stop apache/php,
> perform a database backup, switch to trove/run puppet with newer module,
> restart apache/php.
>
So one of the big things I see, is once we bump puppet-mysql to the newer /
latest version, all our current nodes will start consuming it (unless we stop
puppet on each server).
One thought I had was some like this:
1. Create /opt/puppet/modules/old, install current puppet-mysql module into
it.
2. Remove /etc/puppet/modules/mysql and append --modulepath to now include
/opt/puppet/modules/old
3. Add dynamic logic to build modulepath for puppet-mysql based on flag and
force all nodes to it.
4. install puppet-mysql latest into /etc/puppet/modules.
5. Start migration process, paste.o.o for example.
6. Work through all nodes.
7. Disable dynamic modulepath logic (can be used for other module upgrades).
8. Delete /opt/puppet/modules/old/mysql
Something like this, would allow us to some how control which nodes start
consuming the newer version of puppet-mysql. Instead of a massive cutover for
all our nodes.
> Hope this helps,
> Clark
>
> _______________________________________________
> OpenStack-Infra mailing list
> OpenStack-Infra at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-infra
More information about the OpenStack-Infra
mailing list