[Puppet Users] Using hiera-data for a specific node
Hi list! I have a problem integrating puppet and hiera. Our puppet-master and all nodes are running puppet 3.6.2. On the master, hiera version 1.3.4 is installed. I want to use some hiera-data in a class depending on the node. To be less abstract, I have this class: class memcached::server{ $cap = hiera('memcached.cap', 64) # package and service omitted here if is_integer($cap) { file { '/etc/memcached.conf': ensure = present, content= template('memcached/memcached.conf.erb'), notify = Service['memcached']; } } else { fail(memory \$cap should be an integer) } } In a future refactoring, I may promote $cap to be a class-parameter and also use the validation from the stdlib. But first, I want to get 'memcached.cap' from a node-specific file. Puppet is configured with hiera_config = /etc/puppet/hiera.yaml. The file /etc/puppet/hiera.yaml is as follows: --- :backends: yaml :yaml: :datadir: /var/lib/hiera :hierarchy: - %{clientcert} - common :logger: console This is - from the docs - the internal default with just one hierarchy added. I do not have the value memcached.cap in the /var/lib/hiera/common.yaml I do have a file /var/lib/hiera/shop-01.hoster.de which contains memcached.cap: 256 Using this configs manually via the CLI, I get the expected result: $ sudo hiera memcached.cap -d -c /etc/puppet/hiera.yaml -y /var/lib/puppet/yaml/facts/shop-01.hoster.de.yaml DEBUG: Wed Jul 23 18:49:39 +0200 2014: Hiera YAML backend starting DEBUG: Wed Jul 23 18:49:39 +0200 2014: Looking up memcached.cap in YAML backend DEBUG: Wed Jul 23 18:49:39 +0200 2014: Looking for data source shop-01.hoster.de DEBUG: Wed Jul 23 18:49:39 +0200 2014: Found memcached.cap in shop-01.hoster.de 256 So far, everything is nice. BTW, when I change the %{clientcert} to %{::clientcert} is does work through the CLI anymore. I cannot get the same data through puppet. What am I doing wrong? Where - apart from the source-code - can I look for information how that lookup works? Thanks, Matthias Viehweger -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/9933888a-1607-4473-87f2-e47439df844a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [Puppet Users] Using hiera-data for a specific node
Is the value of 256 being resolved by puppet as a string? That would cause your is_integer test to fail. On Wed, Jul 23, 2014 at 10:01 AM, Matthias Viehweger m.viehwe...@heute-kaufen.de wrote: Hi list! I have a problem integrating puppet and hiera. Our puppet-master and all nodes are running puppet 3.6.2. On the master, hiera version 1.3.4 is installed. I want to use some hiera-data in a class depending on the node. To be less abstract, I have this class: class memcached::server{ $cap = hiera('memcached.cap', 64) # package and service omitted here if is_integer($cap) { file { '/etc/memcached.conf': ensure = present, content= template('memcached/memcached.conf.erb'), notify = Service['memcached']; } } else { fail(memory \$cap should be an integer) } } In a future refactoring, I may promote $cap to be a class-parameter and also use the validation from the stdlib. But first, I want to get 'memcached.cap' from a node-specific file. Puppet is configured with hiera_config = /etc/puppet/hiera.yaml. The file /etc/puppet/hiera.yaml is as follows: --- :backends: yaml :yaml: :datadir: /var/lib/hiera :hierarchy: - %{clientcert} - common :logger: console This is - from the docs - the internal default with just one hierarchy added. I do not have the value memcached.cap in the /var/lib/hiera/common.yaml I do have a file /var/lib/hiera/shop-01.hoster.de which contains memcached.cap: 256 Using this configs manually via the CLI, I get the expected result: $ sudo hiera memcached.cap -d -c /etc/puppet/hiera.yaml -y /var/lib/puppet/yaml/facts/shop-01.hoster.de.yaml DEBUG: Wed Jul 23 18:49:39 +0200 2014: Hiera YAML backend starting DEBUG: Wed Jul 23 18:49:39 +0200 2014: Looking up memcached.cap in YAML backend DEBUG: Wed Jul 23 18:49:39 +0200 2014: Looking for data source shop-01.hoster.de DEBUG: Wed Jul 23 18:49:39 +0200 2014: Found memcached.cap in shop-01.hoster.de 256 So far, everything is nice. BTW, when I change the %{clientcert} to %{::clientcert} is does work through the CLI anymore. I cannot get the same data through puppet. What am I doing wrong? Where - apart from the source-code - can I look for information how that lookup works? Thanks, Matthias Viehweger -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/9933888a-1607-4473-87f2-e47439df844a%40googlegroups.com https://groups.google.com/d/msgid/puppet-users/9933888a-1607-4473-87f2-e47439df844a%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- Perfection is just a word I use occasionally with mustard. --Atom Powers-- -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/CAF-H%3DO%3DO7OUizYRuj5xvAruDceXzez8DYCS2wL_Ar0p15E-Vwg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: [Puppet Users] Using hiera-data for a specific node
Am Mittwoch, 23. Juli 2014 19:13:47 UTC+2 schrieb Atom Powers: Is the value of 256 being resolved by puppet as a string? That would cause your is_integer test to fail. Well, if that test fails, then my core problem - getting the data at all - is solved. I expect that the conversion from YAML-types to Puppet-types is lossless in this case, because ruby does the right thing here and puppet would need to make an effort to get it wrong ;-) But that would be a nice catch. thanks, Atom Powers. On Wed, Jul 23, 2014 at 10:01 AM, Matthias Viehweger m.vie...@heute-kaufen.de javascript: wrote: Hi list! I have a problem integrating puppet and hiera. Our puppet-master and all nodes are running puppet 3.6.2. On the master, hiera version 1.3.4 is installed. I want to use some hiera-data in a class depending on the node. To be less abstract, I have this class: class memcached::server{ $cap = hiera('memcached.cap', 64) # package and service omitted here if is_integer($cap) { file { '/etc/memcached.conf': ensure = present, content= template('memcached/memcached.conf.erb'), notify = Service['memcached']; } } else { fail(memory \$cap should be an integer) } } In a future refactoring, I may promote $cap to be a class-parameter and also use the validation from the stdlib. But first, I want to get 'memcached.cap' from a node-specific file. Puppet is configured with hiera_config = /etc/puppet/hiera.yaml. The file /etc/puppet/hiera.yaml is as follows: --- :backends: yaml :yaml: :datadir: /var/lib/hiera :hierarchy: - %{clientcert} - common :logger: console This is - from the docs - the internal default with just one hierarchy added. I do not have the value memcached.cap in the /var/lib/hiera/common.yaml I do have a file /var/lib/hiera/shop-01.hoster.de which contains memcached.cap: 256 Using this configs manually via the CLI, I get the expected result: $ sudo hiera memcached.cap -d -c /etc/puppet/hiera.yaml -y /var/lib/puppet/yaml/facts/shop-01.hoster.de.yaml DEBUG: Wed Jul 23 18:49:39 +0200 2014: Hiera YAML backend starting DEBUG: Wed Jul 23 18:49:39 +0200 2014: Looking up memcached.cap in YAML backend DEBUG: Wed Jul 23 18:49:39 +0200 2014: Looking for data source shop-01.hoster.de DEBUG: Wed Jul 23 18:49:39 +0200 2014: Found memcached.cap in shop-01.hoster.de 256 So far, everything is nice. BTW, when I change the %{clientcert} to %{::clientcert} is does work through the CLI anymore. I cannot get the same data through puppet. What am I doing wrong? Where - apart from the source-code - can I look for information how that lookup works? Thanks, Matthias Viehweger -- 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...@googlegroups.com javascript:. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/9933888a-1607-4473-87f2-e47439df844a%40googlegroups.com https://groups.google.com/d/msgid/puppet-users/9933888a-1607-4473-87f2-e47439df844a%40googlegroups.com?utm_medium=emailutm_source=footer . For more options, visit https://groups.google.com/d/optout. -- Perfection is just a word I use occasionally with mustard. --Atom Powers-- -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/c2261e66-2c59-41e5-8f3b-3af12fcfef6c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.