On 06/05/16 15:46, christg76 wrote:
Hi, I'm fairly new to Puppet and have been given the project of
upgrading an existing Puppet 2.7 site (Puppetmaster with
Apache/Passenger, and MySQL for exported resources, with hundreds of
clients), possibly to Puppet 4.
Just wanted to ask around if anybody has got experience with such an
upgrade. Reading the docs it says that skipping major versions isn't
recommended, so I guess I'd have to first upgrade to 3.x? Are there
anymore upgrade docs for 2.7 to 3.x available?


You have already received great advice on two strategies:

* Ramin K - points out the good versions to move to before jumping to the next level. Each step requires addressing something fairly major changing.

* Andrew Grimberg - greenfield approach on a 4.x to also do major refactoring / cleanup.

I would just like to add a couple of considerations. With newer puppet versions you also get the opportunity to use newer versions of modules from the forge + better tooling. Your code base may contain solutions / work-arounds that are now no longer needed (fixed in modules, better / cleaner ways of doing things). Thus if you follow the longer path of upgrading several times; you may need to learn / and re-learn how to do things.

The chain of good versions (as pointed out by Ramin K) can also be made shorter depending on how your operation is set up, how much the operation depends on things like dynamic environments, how much custom code you have to migrate, custom facts, types and providers that you have implemented in house. Is your code in git or not? What are the processes around your installation, what is it integrated with?

Also, worth considering is how different your nodes are and who controls their configuration. Worst case it is like migrating multiple puppet installations (different groups having written different things different ways).

If things are really messy, what Andrew Grimberg suggests sounds best.
As you are learning (and do what Martin Alfke said; attend training), set up a canary and use 4.x and apply best practices. Then you know what the target is. Then "slice the elephant" and migrate nodes over gradually. Now you "only" have to figure out what "old messy things" intended and express then once in 4.x rather than risking changing a lot of code several times and learning best practices as they were 3 years ago and then what they were 2 years ago...

A very concrete example - if your in-house code base is fairly clean / small someone else has already done the heavy lifting to get to 4.x as most popular modules supports it.


Best of luck,
- henrik

--

Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/

--
You received this message because you are subscribed to the Google Groups "Puppet 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/66a76695-7733-5658-a884-ab7e1f0f0c14%40puppetlabs.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to