Hi Andrew

On 20 July 2015 at 00:38, Andrew Langhorn
<andrew.langh...@digital.cabinet-office.gov.uk> wrote:
> I don't know why, but when I renamed the class, things started to work.
> Very odd. Maybe I should just upgrade to the latest stable 3.x release
> (3.8.0, I think), or even 4.

See Peter's email above.

The issue appears to be that you had two classes called tomcat, and
'include tomcat' will load the first one it finds which in this case
was the one from app/manifests/tomcat.pp rather than the one you
expected from the third party module. So it never loads
tomcat::instance_basedir etc.

Instead of include tomcat you can use the following formulation:

include ::tomcat

This forces the lookup to be from the top level, so should correctly
import the tomcat module you are expecting. I'd probably do that as
well.

Gareth



>
> Thanks though - especially helpful on this list, as usual :)
>
> On 19 July 2015 at 19:54, Peter Huene <peter.hu...@puppetlabs.com> wrote:
>>
>> On Sun, Jul 19, 2015 at 7:07 AM, Andrew Langhorn
>> <andrew.langh...@digital.cabinet-office.gov.uk> wrote:
>>>
>>> Hi Felix,
>>>
>>> Thanks for the reply.
>>>
>>> Yep - that snippet is representative. I've copied the full thing for you
>>> below. Granted, it needs some tidying up, but I think it should just work as
>>> it stands:
>>>
>>> class app::reservations {
>>>
>>> include tomcat
>>>
>>>
>>> Exec {
>>>   path => "/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin",
>>> }
>>>
>>>
>>> tomcat::instance { 'reservations':
>>>   ensure    => present,
>>>   http_port => 8080,
>>>   require   => Class['tomcat'],
>>> }
>>>
>>>
>>> file { '/srv/tomcat/reservations/webapps/reservations.war':
>>>   ensure => present,
>>>   source => 'puppet:///modules/app/reservations.war',
>>>   owner  => 'tomcat',
>>>   group  => 'adm',
>>>   mode   => '0755',
>>>   notify => Exec['restart-reservations-tomcat'],
>>>   }
>>>
>>>
>>> exec { 'restart-reservations-tomcat':
>>>   command => '/etc/init.d/tomcat-reservations restart',
>>> }
>>>
>>>
>>> }
>>>
>>>
>>> Under normal circumstances, I agree that explicitly including the Tomcat
>>> class up above the instantiation of the tomcat::instance class should work
>>> fine. I don't know why it's not working quite as expected. Here's the output
>>> from Puppet with the --debug flag:
>>>
>>> ==> app: Debug: importing
>>> '/opt/puppet/modules/app/manifests/reservations.pp' in environment
>>> development
>>> ==> app: Debug: Automatically imported app:reservations from
>>> app/reservations in to development
>>> ==> app: Debug: importing '/opt/puppet/modules/app/manifests/tomcat.pp'
>>> in environment development
>>
>>
>> It looks like the loader found app/manifests/tomcat.pp instead of
>> tomcat/manifests/init.pp.  Perhaps qualify the include as `include
>> ::tomcat`?  Not sure if that would work with Puppet 3.6 though.
>>
>>>
>>> ==> app: Debug: Automatically imported app::tomcat from app/tomcat into
>>> development
>>>
>>> ==> app: Debug: importing
>>> '/opt/puppet/vendor/modules/tomcat/manifests/instance.pp' in environment
>>> development
>>> ==> app: Debug: Automatically imported tomcat::instance from
>>> tomcat/instance into development
>>> ==> app: Warning: Scope(Tomcat::Instance[reservations]): Could not look
>>> up qualified variable 'tomcat::instance_basedir'; class tomcat has not been
>>> evaluated
>>> ==> app: Warning: Scope(Tomcat::Instance[reservations]): Could not look
>>> up qualified variable 'tomcat::version'; class tomcat has not been evaluated
>>>
>>> Values for both tomcat::version and tomcat::instance_basedir are
>>> retrieved from a case statement which, ultimately, resides at
>>> https://github.com/camptocamp/puppet-tomcat/blob/master/manifests/params.pp,
>>> which either works out a value or just passes in a value, respectively.
>>>
>>> So, it looks like the Tomcat module is - at least partially - being
>>> imported.
>>>
>>> I'm a bit stumped now!
>>>
>>> Andrew
>>>
>>> On Sunday, 19 July 2015 01:06:26 UTC+1, Felix.Frank wrote:
>>>>
>>>> On 07/19/2015 01:19 AM, Andrew Langhorn wrote:
>>>>
>>>> class apps::reservations {
>>>>
>>>>
>>>> include tomcat
>>>>
>>>>
>>>> tomcat::instance { ‘reservations’:
>>>>
>>>> ensure => present,
>>>>
>>>> http_port => 8080,
>>>>
>>>> }
>>>>
>>>>
>>>> }
>>>>
>>>>
>>>> However, when I run Puppet against a Vagrant VM, it tells me that the
>>>> tomcat class hasn’t been evaluated, so it can’t use tomcat::instance
>>>> (because of underlying failures when using the Tomcat module):
>>>>
>>>>
>>>> ==> app: Warning: Scope(Tomcat::Instance[reservations]): Could not look
>>>> up qualified variable 'tomcat::instance_basedir'; class tomcat has not been
>>>> evaluated
>>>>
>>>>
>>>> Hmm, if the resource declaration is lexically preceded by an 'include
>>>> tomcat' then this should not happen.
>>>>
>>>> In this case, the order in your manifest is really important. Is your
>>>> snippet truly representative of your actual code?
>>>>
>>>> Regards,
>>>> Felix
>>>
>>> --
>>> 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/2d506a73-c86a-4ddd-bfd4-09579565bd04%40googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>>
>> --
>> Join us at PuppetConf 2015, October 5-9 in Portland, OR -
>> www.2015.puppetconf.com
>> Register early to save 40%!
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Puppet Users" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/puppet-users/w9mVNiq8kAk/unsubscribe.
>> To unsubscribe from this group and all its topics, 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/CACZQQfO4BWWK3_aZ2xBWSRaKGnGp00uaA66DVFxkL-7jdOadbA%40mail.gmail.com.
>>
>> For more options, visit https://groups.google.com/d/optout.
>
>
>
>
> --
> Andrew Langhorn
> Web Operations
> Government Digital Service
>
> e: andrew.langh...@digital.cabinet-office.gov.uk
> t: +44 (0)7810 737375
> a: 6th Floor, Aviation House, 125 Kingsway, London, WC2B 6NH
>
> --
> 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/CANCa_Wb%3DS72jJ45fbYU4eag5CedYYUxoBCc6eY8L3uXxyWZ8-A%40mail.gmail.com.
>
> For more options, visit https://groups.google.com/d/optout.



-- 
Gareth Rushgrove
@garethr

devopsweekly.com
morethanseven.net
garethrushgrove.com

-- 
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/CAFi_6yJ6rosUveAyYA42FRcdrNU2ruhB8ZA%3D0-EtQWQD%2BWYy1g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to