Devminded
2014-Jul-28 23:10 UTC
[Puppet Users] Hiera/Puppet: How to handle different versions of applications in multiple environments?
Hello everybody. I'm a developer new to puppet and are working with a complex system made up of several subsystems. We have regulatory requirements which forces us to have several production environments (at-least one per jurisdiction). This is causing us some pains. The main problem is that the different jurisdictions "requires" different versions (and sometimes content) of the deployed applications. Due to a drawn out certification process some environments lags behind in versions by up to six month (that's how long it can take to get changes certified). Given that different environments require different versions of both puppet modules and application versions how do we handle this while still guaranteeing system integrity? I'm in the process of trying out some other things, like the roles and profiles pattern. Looking at the 'version' properties in my example below; is it a good idea to keep it hardcoded and release a new version of the puppet module for each version of the software (order_service in this case) and assign those modules per environment or should I make the application versions a hiera variable as well? And if I do decide to keep versions in hiera how do I ensure that no-one (in ops) deploys a version that has not been integration-tested with the rest of the system? Keeping versions in hiera would make everything much more dynamic but also so much more difficult to ensure consistency, especially in a Continuous Delivery workflow... Any takers? What obvious thing did I miss? **Example** class role::app_server { include profile::base include profile::linux include profile::jboss include profile::order_service::webapp } class profile::order_service::webapp { class { 'order_webapp' version => '3.1.2', db_address => hiera('db_address'), etc... } } class profile::jboss { class { 'jbosseap': version => 6.3, port => hiera('port'), broadcast_address => hiera('broadcast_address'), user_roles => hiera('user_roles'), user_groups => hiera('user_groups') } class { 'java' version => '>=1.7.0' } } -- 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+unsubscribe@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/06c4d567-6785-45ec-ae4a-8a41c236d2fe%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.