I have four major zones in my nework: Development, Quality Assurance, User Acceptanc Testing, and Production. I am able to deply different modules to these zones based on the simple regular expressions posted in the example at the bottom of this message. I have two data centers in my network: Salt Lake City and Santa Clara. I would like to be able to deploy different modules to servers based on the data center that they reside it. I have tried simple if statements and case statements but don''t seem to be able to deploy my site based modules. Can you give me some imput on the best approach to my problem? I know I can manually define ever server in the enterprise in my nodes.pp, but I would prefer a more dynamic approach based IP subnet. $sal_nets [''10.131.21.0'',''10.131.31.0'',''10.131.40.0'',''10.134.40.0'',''10.135.1.0'',''10.135.2.0'',''10.135.20.0'',''10.135.3.0'',''10.135.6.0'',''10.142.20.0'',''10.142.23.0''] $scl_nets [''10.146.1.0'',''10.146.16.0'',''10.146.19.0'',''10.146.20.0'',''10.146.24.0'',''10.146.24.0'',''10.146.28.0'',''10.146.31.0'',''10.151.21.0'',''192.168.119.0'',''192.168.43.0'',''192.168.99.0''] node /^.+\.dev\.svbank\.com/ { # if ($network_eth0 in $sal_nets) or ($network_bond0 in $sal_nets) { # notice(''salt lake city net'') # } # if (($network_eth0 and ($network_eth0 in $sal_nets))) or ($network_bond0 and (($network_bond0 in $scl_nets))) { # notice(''santa clara net'') # } case $network_eth0 { $sal_nets: { include svb-sal-sendmail-cf } # use SAL repository $scl_nets: { include svb-scl-sendmail-cf } # else use SCL repository } include svb-core-config include svb-core-encase include svb-core-packages include svb-puppet include svb-sshd include svb-sudo include svb-repos include svb-snmpd # include svb-sendmail-cf } node /^.+\.qa\.svbank\.com/ { include svb-core-config include svb-core-encase include svb-core-packages include svb-puppet include svb-sshd include svb-sudo include svb-repos include svb-snmpd # include svb-sendmail-cf } node /^.+\.uat\.svbank\.com/ { include svb-core-config include svb-core-encase include svb-core-packages include svb-puppet include svb-sshd include svb-sudo include svb-repos # include svb-sendmail-cf include svb-users } node /^.+\.corp\.svbank\.com/ { include svb-core-config include svb-repos include svb-puppet } -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Gabriel Filion
2012-Jan-26 23:36 UTC
Re: [Puppet Users] Selecting modlues based on subnet in nodes.pp
Hello, On 12-01-23 02:14 PM, Derek wrote:> I have four major zones in my nework: Development, Quality Assurance, > User Acceptanc Testing, and Production. I am able to deply different > modules to these zones based on the simple regular expressions posted > in the example at the bottom of this message. > > I have two data centers in my network: Salt Lake City and Santa > Clara. I would like to be able to deploy different modules to servers > based on the data center that they reside it. I have tried simple if > statements and case statements but don''t seem to be able to deploy my > site based modules. > > Can you give me some imput on the best approach to my problem?You could use environments to differentiate the nodes..: http://docs.puppetlabs.com/guides/environment.html http://hunnur.com/blog/2010/10/dynamic-git-branch-puppet-environments/ Or (maybe better) you could define a custom fact that tells in which DC your node is present and then branch on the value of this fact: http://www.devco.net/archives/2011/06/29/facter_facts_from_txt_json_yaml_and_non_ruby_scripts.php (see the end of the post for a link to github where you can find the code for custom facts from arbitrary files) -- Gabriel Filion -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.