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 <[email protected] 
> <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 [email protected].
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