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.