> 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.