On Thursday, May 19, 2016 at 2:16:17 PM UTC-7, Peter Huene wrote:
>
> Hi David:
>
> On Thu, May 19, 2016 at 1:57 PM, David Karr <davidmic...@gmail.com 
> <javascript:>> wrote:
>
>> I'm stepping through "Learning Puppet 4", and I ran into an error 
>> following steps in the book, and I want to understand what went wrong 
>> before I report it.
>>
>> The section in question is "Using Puppet EPP Templates" in chapter 13.
>>
>> I'll work backwards from the error I'm getting, showing the relevant 
>> files afterwards.  Here is what I see when I apply the manifest:
>> [vagrant@client puppet]$ sudo puppet apply --environment test manifests/
>> Warning: Unknown variable: '::puppet::common_loglevel'. at /etc/
>> puppetlabs/code/environments/test/modules/puppet/templates/puppet.conf.
>> epp:3:21
>> Warning: Unknown variable: 'puppet::agent_loglevel'. at /etc/puppetlabs/
>> code/environments/test/modules/puppet/templates/puppet.conf.epp:7:7
>> Warning: Unknown variable: '::puppet::server'. at /etc/puppetlabs/code/
>> environments/test/modules/puppet/templates/puppet.conf.epp:10:18
>> Warning: Unknown variable: 'puppet::apply_loglevel'. at /etc/puppetlabs/
>> code/environments/test/modules/puppet/templates/puppet.conf.epp:14:7
>> Notice: Compiled catalog for client.example.com in environment test in 
>> 0.04 seconds
>> Notice: /Stage[main]/Main/File[/etc/puppetlabs/puppet/puppet.conf]/
>> content: content changed '{md5}a72aadac19feefd06f10fb6b8f90c5f4' to 
>> '{md5}0f89a3d91b54aec8463b4a250a493f36'
>> Notice: /Stage[main]/Main/File[/etc/puppetlabs/puppet/puppet.conf]/owner: 
>> owner changed 'vagrant' to 'root'
>> Notice: /Stage[main]/Main/File[/etc/puppetlabs/puppet/puppet.conf]/group: 
>> group changed 'vagrant' to 'wheel'
>> Notice: /Stage[main]/Main/File[/etc/puppetlabs/puppet/puppet.conf]/mode: 
>> mode changed '0664' to '0644'
>> Notice: Applied catalog in 0.06 seconds
>> [vagrant@client puppet]$ 
>>
>>
> Based on the warnings, it looks like the "puppet" class hasn't been 
> declared.  Did you `include puppet` somewhere or otherwise classify the 
> node to include the "puppet" class? 
>

The only file in the "manifests" directory is "init.pp", which is this:
class puppet(
  # input parameters and default values for the class
  $version         = 'latest',
  $status          = 'running',
  $enabled         = true,
  $server          = 'puppet.example.com',
  $common_loglevel = 'warning',
  $agent_loglevel  = undef,
  $apply_loglevel  = undef,
) {

  # echo the input provided
  notice("Install the $version version of Puppet, ensure it's $status, and 
set boot time start $enabled.")

  # install puppet-agent
  package { 'puppet-agent':
    ensure => 'latest',
    notify => Service['puppet'],
  }

  # manage the puppet service
  service { 'puppet':
    ensure => 'running',
    enable => true,
    subscribe => Package['puppet-agent'],
  }
}

class puppet::agent {
}

file { '/etc/puppetlabs/puppet/puppet.conf':
  ensure => file,
  owner => 'root',
  group => 'wheel',
  mode  => '0644',
#  source => 'puppet:///modules/puppet/puppet.conf',
  content => epp('puppet/puppet.conf.epp'),
}

 

>  
>
>> The template in question, right from the book, is this:
>>
>> # Generated by Puppet EPP template processor
>> [master]
>>     log_level = <%= $::puppet::common_loglevel %>
>>
>> # This is used by "puppet agent"
>> [agent]
>> <% if $puppet::agent_loglevel != undef { -%>
>>     log_level = <%= $::puppet::agent_loglevel %>
>> <% } -%>
>>     server = <%= $::puppet::server %>
>>
>> # This is used for "puppet apply"
>> [user]
>> <% if $puppet::apply_loglevel != undef { -%>
>>     log_level = <%= $::puppet::apply_loglevel %>
>> <% } -%>
>>
>>
>> Likely the most important piece to see now is the part of the "init.pp" 
>> manifest that declares the parameters being referenced here:
>>
>> class puppet(
>>   $version         = 'latest',
>>   $status          = 'running',
>>   $enabled         = true,
>>   
>>
>>
>> *$server          = 'puppet.example.com <http://puppet.example.com>',  
>> $common_loglevel = 'warning',  $agent_loglevel  = undef,  $apply_loglevel  = 
>> undef,*
>> ) {
>>
>>
>> I imagine the syntax of the variable references in the EPP file have to 
>> be slightly different, but I have no idea what it should be.
>>
>
> The EPP is fine; the code inside an EPP <% %> is expected to be valid 
> Puppet code.
>  
>
>>
>> I also find it curious that the error messages print the name of the 
>> variable differently for different messages, sometimes prefixed with "::" 
>> and sometimes not.  Any background that would explain that?
>>
>
> When a variable name has a leading "::" it forces a lookup in the 
> top-scope.  An example where it would be needed is when you have a 
> top-scoped variable and a local variable of the same name; a leading "::" 
> would ensure that the top-scope variable is used and not the local variable.
>

Perhaps I wasn't clear.  All the variable references in the template use 
the same syntax, using the "$::puppet" prefix, yet half of the error 
messages refer to the "::" prefix, and half of them do not.

-- 
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/99b94d41-8990-49a9-a927-3f2b8058a461%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to