Mohamed Abbas
2013-Mar-07 20:42 UTC
[Puppet Users] Pattern for Associating Module versions with Nodes
Hello All, I''m wondering what is the canonical way of associating "specific" versions of a module to a node? Is there a way of doing this in puppet? Let me explain a "Use Case" of what I''m trying to accomplish: Say we have created a puppet model called apache to manage and configure apache webserver. We have the apache module under version control and there are several versions. We use puppet to apply apache-1.0.3 across an entire "environment" We want to be able to do a rolling upgrade across that entire environment, where some nodes in the environment have apache-1.0.3 and other have apache-1.1.2. From what I understand of puppet, there is no way of associating a specific version of a module to a specific node. The only way of doing that would be to "embed" a version tag in the module/class name. However that is ugly and does not work well with version control systems. Any suggestions of to accomplish this using puppet? Thanks -- Mohamed Abbas -- 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 post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
Nan Liu
2013-Mar-07 21:51 UTC
Re: [Puppet Users] Pattern for Associating Module versions with Nodes
On Thu, Mar 7, 2013 at 12:42 PM, Mohamed Abbas <m.magdi.ahmed@gmail.com>wrote:> I''m wondering what is the canonical way of associating "specific" versions > of a module to a node? Is there a way of doing this in puppet? Let me > explain a "Use Case" of what I''m trying to accomplish: > > Say we have created a puppet model called apache to manage and configure > apache webserver. > We have the apache module under version control and there are several > versions. > We use puppet to apply apache-1.0.3 across an entire "environment" > We want to be able to do a rolling upgrade across that entire environment, > where some nodes in the environment have apache-1.0.3 and other have > apache-1.1.2. > > From what I understand of puppet, there is no way of associating a > specific version of a module to a specific node. The only way of doing that > would be to "embed" a version tag in the module/class name. However that is > ugly and does not work well with version control systems. > > Any suggestions of to accomplish this using puppet? >Github''s boxen project powered by librarian-puppet, or r10k: https://github.com/adrienthebo/r10k are good examples using Puppetfile for module version control. Nan -- 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 post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
Mohamed Abbas
2013-Mar-07 22:43 UTC
Re: [Puppet Users] Pattern for Associating Module versions with Nodes
On 3/7/13 1:51 PM, Nan Liu wrote:> On Thu, Mar 7, 2013 at 12:42 PM, Mohamed Abbas > <m.magdi.ahmed@gmail.com <mailto:m.magdi.ahmed@gmail.com>> wrote: > > I''m wondering what is the canonical way of associating "specific" > versions of a module to a node? Is there a way of doing this in > puppet? Let me explain a "Use Case" of what I''m trying to accomplish: > > Say we have created a puppet model called apache to manage and > configure apache webserver. > We have the apache module under version control and there are > several versions. > We use puppet to apply apache-1.0.3 across an entire "environment" > We want to be able to do a rolling upgrade across that entire > environment, where some nodes in the environment have apache-1.0.3 > and other have apache-1.1.2. > > From what I understand of puppet, there is no way of associating a > specific version of a module to a specific node. The only way of > doing that would be to "embed" a version tag in the module/class > name. However that is ugly and does not work well with version > control systems. > > Any suggestions of to accomplish this using puppet? > > > Github''s boxen project powered by librarian-puppet, or r10k: > https://github.com/adrienthebo/r10k are good examples using Puppetfile > for module version control. >Thanks Nan. I looked at both and they address a different defined-problem than the one I''m trying to address. What librarian-puppet and the boxen and r10k solution you mentioned allow you to do is(per my understanding and experience with using librarian-puppet): * To populate a modules sub-directory dynamically by using a "Puppetfile" where you can pull different modules from different sources and being able to specify which version to pull in. Once the modules directory is populated, what is available to you to use in Puppet is still a *single *version of that module. The defined-problem I''m trying to see if puppet addresses or create a new solution to address it: * Having multiple instances of a module of different version number available in the modules sub-directory where I can freely associate different 2 different nodes to differing versions of the same module. Thanks, Mohamed Abbas -- 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 post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
Nan Liu
2013-Mar-08 01:58 UTC
Re: [Puppet Users] Pattern for Associating Module versions with Nodes
On Thu, Mar 7, 2013 at 2:43 PM, Mohamed Abbas <m.magdi.ahmed@gmail.com>wrote:> On 3/7/13 1:51 PM, Nan Liu wrote: > > On Thu, Mar 7, 2013 at 12:42 PM, Mohamed Abbas <m.magdi.ahmed@gmail.com>wrote: > >> I''m wondering what is the canonical way of associating "specific" >> versions of a module to a node? Is there a way of doing this in puppet? Let >> me explain a "Use Case" of what I''m trying to accomplish: >> >> Say we have created a puppet model called apache to manage and configure >> apache webserver. >> We have the apache module under version control and there are several >> versions. >> We use puppet to apply apache-1.0.3 across an entire "environment" >> We want to be able to do a rolling upgrade across that entire >> environment, where some nodes in the environment have apache-1.0.3 and >> other have apache-1.1.2. >> >> From what I understand of puppet, there is no way of associating a >> specific version of a module to a specific node. The only way of doing that >> would be to "embed" a version tag in the module/class name. However that is >> ugly and does not work well with version control systems. >> >> Any suggestions of to accomplish this using puppet? >> > > Github''s boxen project powered by librarian-puppet, or r10k: > https://github.com/adrienthebo/r10k are good examples using Puppetfile > for module version control. > > > Thanks Nan. I looked at both and they address a different defined-problem > than the one I''m trying to address. What librarian-puppet and the boxen and > r10k solution you mentioned allow you to do is(per my understanding and > experience with using librarian-puppet): > > - To populate a modules sub-directory dynamically by using a > "Puppetfile" where you can pull different modules from different sources > and being able to specify which version to pull in. Once the modules > directory is populated, what is available to you to use in Puppet is still > a *single *version of that module. > > The defined-problem I''m trying to see if puppet addresses or create a new > solution to address it: > > - Having multiple instances of a module of different version number > available in the modules sub-directory where I can freely associate > different 2 different nodes to differing versions of the same module. > > They are typically used to populate the master. But I''m using per systemPuppetfile with ''puppet apply'' instead. I suppose this won''t meet your requirements if you need multiple module versions on the master to compile different versions per node. Thanks, Nan -- 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 post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.