Hello Andrew, Thanks for your answer. Infact, pkgrepo *is* already like you suggest: class pkgrepo { Nginx::Vhost["website.domain.tld"] -> Class['Pkgrepo'] include pkgrepo::install,pkgrepo::config }
Just forget about Nginx::Vhost["packages.iscoolapp.com"] and replace it wherever you see it with Nginx::Vhost["website.domain.tld"] (my bad for the typo). And, that's why I don't understand because "Nginx::Vhost['website.domain.tld'] -> Class['Pkgrepo']" is supposed to make vhost applied before pkgrepo. But in my output examples, package reprepro definied in pkgrepo::install got installed before vhosts is set up. About setting require for pkgrepo::repository, I will try asap. My first thought was to specify dependencies between classes in "root" class (ie, in pkgrepo and not in pkgrepo::install) for readability purpose. But, it that case, I could specify it pkgrepo::repository since it defined in node definition. Just wonder why I did not tought about it before :-/ Will let you updated right after my tests. Regards, JB On 29/10/2011 09:26, Andrew Hendry wrote: > Hi Jean, > > Is Nginx::Vhost["packages.iscoolapp.com"] getting set up somewhere > else in your code? > > If not should your pkgrepo be like this? > class pkgrepo { > Nginx::Vhost["website.domain.tld"] -> Class['Pkgrepo'] > include pkgrepo::install,pkgrepo::config > } > > Or > > pkgrepo::repository { "test": > docroot => "/var/www/website.domain.tld", > gpgkeyid => "C78033BD", > require => Nginx::Vhost["website.domain.tld"], > } > > Good luck. > > On Oct 29, 12:41 am, Jean Baptiste Favre > <jean.baptiste.fa...@gmail.com> wrote: >> Hello, >> There's something I don't understand with classes dependency. >> I saw many thread about this subject, but still can not figure how it >> works exactly. >> >> I'm trying to setup a debian package repository. For that, I need: >> - a vhost, served by nginx >> - repo managment tools as well as GPG key copied into directory tree >> >> So, that makes 2 classes: >> include nginx >> include pkgrepo >> >> "nginx" class install nginx package and provide a define to deal with >> vhost definition: >> nginx::vhost { 'website.domain.tld': >> port => 80, >> docroot => '/var/www', >> priority => 00, >> } >> This define will create directory /var/www/website.domain.tld as well as >> deploying vhost file in /etc/nginx/sites-enabled/00-website.domain.tld >> >> "pkgrepo" class will install repo managment tools and deploy repository >> GPG key in /var/www/website.domain.tld/key.gpg >> >> Therefore, it will require vhost to be created before being able to copy >> GPG key. >> >> Here's my setup: >> node nodetest { >> include nginx >> nginx::vhost { 'website.domain.tld': >> port => 80, >> docroot => '/var/www', >> priority => 00, >> } >> include pkgrepo >> pkgrepo::repository { "test": >> docroot => "/var/www/website.domain.tld", >> gpgkeyid => "C78033BD", >> }} >> >> And for classes definition, I got: >> class pkgrepo { >> Nginx::Vhost["packages.iscoolapp.com"] -> Class['Pkgrepo'] >> include pkgrepo::install,pkgrepo::config >> >> } >> >> Problem is, when I try to executed it twice, I don't alway have >> dependency respected. For sure, I'm doing something wrong, but can not >> figure what. Bellow are the execution output. >> >> Best regards, >> Jean Baptiste Favre >> >> Wrong behaviour: >> # /usr/sbin/puppetd --no-daemonize --logdest console --onetime --verbose >> --preferred_serialization_format marshal >> notice: Ignoring --listen on onetime run >> info: Caching catalog for nodetest >> info: Applying configuration version '1319805719' >> notice: /Stage[main]/Pkgrepo::Install/Package[reprepro]/ensure: ensure >> changed 'purged' to 'present' >> notice: >> /Stage[main]//Node[nodetest]/Nginx::Vhost[website.domain.tld]/File[/etc/ngi >> nx/sites-enabled/00-website.domain.tld]/ensure: >> defined content as '{md5}bad3fd5741e335516e2e51aaefe2963c' >> info: >> /Stage[main]//Node[nodetest]/Nginx::Vhost[website.domain.tld]/File[/etc/ngi >> nx/sites-enabled/00-website.domain.tld]: >> Scheduling refresh of Service[nginx] >> notice: /Stage[main]/Nginx::Service/Service[nginx]: Triggered 'refresh' >> from 1 events >> notice: Finished catalog run in 6.25 seconds >> >> Good behaviour: >> # /usr/sbin/puppetd --no-daemonize --logdest console --onetime --verbose >> --preferred_serialization_format marshal >> notice: Ignoring --listen on onetime run >> info: Caching catalog for nodetest >> info: Applying configuration version '1319805719' >> notice: >> /Stage[main]//Node[nodetest]/Nginx::Vhost[website.domain.tld]/File[/etc/ngi >> nx/sites-enabled/00-website.domain.tld]/ensure: >> defined content as '{md5}bad3fd5741e335516e2e51aaefe2963c' >> info: >> /Stage[main]//Node[nodetest]/Nginx::Vhost[website.domain.tld]/File[/etc/ngi >> nx/sites-enabled/00-website.domain.tld]: >> Scheduling refresh of Service[nginx] >> notice: /Stage[main]/Pkgrepo::Install/Package[reprepro]/ensure: ensure >> changed 'purged' to 'present' >> notice: /Stage[main]/Nginx::Service/Service[nginx]: Triggered 'refresh' >> from 1 events >> notice: Finished catalog run in 6.23 seconds > -- 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+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.