> My biggest problem is how to control version numbers with a web interface. 
> What i mean is instead of   "version => 'x.y.z'" to take some how the version 
> number from an external data source(database).

You can either use External Nodes:

http://docs.puppetlabs.com/guides/external_nodes.html

Which would allows you to define node configuration in an external
tool such as Puppet Dashboard:

http://www.puppetlabs.com/puppet/related-projects/dashboard/

Or the foreman:

http://theforeman.org/

Or a simple and less intrusive methodology might be to write a
function which calls your database:

http://projects.puppetlabs.com/projects/1/wiki/Writing_Your_Own_Functions

This executes on the puppetmaster and can take vars and return vars
using whatever Ruby code you write. So you could do a
get_version("app_name") function that returns say "1.1" for a DB?

> The next issue is how to monitor which version of each application is 
> installed on which server.  I would like  to know exactly which version of 
> the application is running on the each server.

Well ... you can drop a file with a version inside it each time you
deploy?

> The third issue is how to do production deployments manually / or how to 
> trigger them when wanted.

You could use environments, and stage your releases:

http://projects.puppetlabs.com/projects/1/wiki/Using_Multiple_Environments

Then when you are ready change production configuration or if you are
using VCS for puppet content, forwarding your production environment
to the already-tested version. You would also want to develop and test
a methodology to roll things back when needed.

To trigger Puppet runs I generally use the mcollective puppetd plugin,
but you can happily run puppet when and if needed.

> What I can mention is that we have a 4-5 servers with only two of them being 
> in production. We do have a couple of php applications which we intend to 
> package them for debian(depends on solution).  

If the code is PHP only, you could manage your code in an external VCS
system such as git or svn and use the vcsrepo plugin to manage
releases:

http://forge.puppetlabs.com/puppetlabs/vcsrepo

This would save you having to do a packaging step. You can then just
use tags for releases, and use those tags to designate which release
goes into production.

ken.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to