FAQ
Hello!

I've got a manifest that involves downloading and updating a bunch of
different packages using apt, pip, etc. One of my apt-dependencies, dnsmasq<http://www.thekelleys.org.uk/dnsmasq/doc.html>,
redirects the machine's DNS. Any modules currently running at that time
that use the internet get a temporary name resolution error.
  Unfortunately, I can't run this class in a different stage, as it creates
a dependency cycle with the other things that depend on dnsmasq.

Is there a way to force puppet to run a particular class by itself? There
are enough other tasks/jobs/whatever-we-call-them that being explicit about
the dependencies isn't really worth it (and it'd have to be kept up to date
as my manifest grows).

Thank you!

--
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+unsubscribe@googlegroups.com.
To post to this group, send email to puppet-users@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

  • David Schmitt at Aug 19, 2013 at 2:45 pm

    On 2013-08-19 14:06, Matt S wrote:
    Hello!

    I've got a manifest that involves downloading and updating a bunch of
    different packages using apt, pip, etc. One of my apt-dependencies,
    dnsmasq <http://www.thekelleys.org.uk/dnsmasq/doc.html>, redirects the
    machine's DNS. Any modules currently running at that time that use the
    internet get a temporary name resolution error. Unfortunately, I can't
    run this class in a different stage, as it creates a dependency cycle
    with the other things that depend on dnsmasq.

    Is there a way to force puppet to run a particular class by itself?
    There are enough other tasks/jobs/whatever-we-call-them that being
    explicit about the dependencies isn't really worth it (and it'd have to
    be kept up to date as my manifest grows).

    You might want to look into tags. I've got a few resources which are
    applied to bootstrap the whole process, which can be applied separately
    using "--tags kickstart::bootstrap", which is used while kickstarting
    the node. This ensures that when it reboots, it has a properly
    configured puppet, but doesn't start services in kickstart.


    Alternatively you can pack the initial installation and configuration of
    dnsmasq into an exec{} to ensure semi-atomic execution. Not recommended,
    but possible.


    Regards, David


    --
    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+unsubscribe@googlegroups.com.
    To post to this group, send email to puppet-users@googlegroups.com.
    Visit this group at http://groups.google.com/group/puppet-users.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Matt S at Aug 19, 2013 at 10:13 pm
    Thanks for your reply!

    My issue was that my dnsmasq class was a) downloading the package b)
    setting up the service and c) adding monit monitoring scripts for it. The
    last part was the cyclic dependency issue. A number of things are
    monitored by monit, and pulling one of them into my 'preload' stage
    involved pulling all the other dependencies, too, which didn't work.

    My solution was to split up the dnsmasq class, separating the package
    download (and initial run) from the rest. I then added this into its own
    special stage (preload->dnsmasq->main), which solved my problem. I hope
    this helps future travellers.

    Best,
    Matt
    On Monday, August 19, 2013 10:45:45 AM UTC-4, David Schmitt wrote:
    On 2013-08-19 14:06, Matt S wrote:
    Hello!

    I've got a manifest that involves downloading and updating a bunch of
    different packages using apt, pip, etc. One of my apt-dependencies,
    dnsmasq <http://www.thekelleys.org.uk/dnsmasq/doc.html>, redirects the
    machine's DNS. Any modules currently running at that time that use the
    internet get a temporary name resolution error. Unfortunately, I can't
    run this class in a different stage, as it creates a dependency cycle
    with the other things that depend on dnsmasq.

    Is there a way to force puppet to run a particular class by itself?
    There are enough other tasks/jobs/whatever-we-call-them that being
    explicit about the dependencies isn't really worth it (and it'd have to
    be kept up to date as my manifest grows).

    You might want to look into tags. I've got a few resources which are
    applied to bootstrap the whole process, which can be applied separately
    using "--tags kickstart::bootstrap", which is used while kickstarting
    the node. This ensures that when it reboots, it has a properly
    configured puppet, but doesn't start services in kickstart.


    Alternatively you can pack the initial installation and configuration of
    dnsmasq into an exec{} to ensure semi-atomic execution. Not recommended,
    but possible.


    Regards, David

    --
    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+unsubscribe@googlegroups.com.
    To post to this group, send email to puppet-users@googlegroups.com.
    Visit this group at http://groups.google.com/group/puppet-users.
    For more options, visit https://groups.google.com/groups/opt_out.
  • Peter at Aug 20, 2013 at 8:49 am
    Hi David,

    I don't suppose you know of any good resources (blog posts or git hub
    example code) showing this. I am trying to look at a way to kickstart the
    build of a puppet master and would prefer moving down this path. At the
    moment I am using a bootstrap script to download forge modules and modules
    hosted on github then doing a puppet apply from the command line to
    kickstart.

    Thanks,

    Peter.
    On Tuesday, 20 August 2013 00:45:45 UTC+10, David Schmitt wrote:
    On 2013-08-19 14:06, Matt S wrote:
    Hello!

    I've got a manifest that involves downloading and updating a bunch of
    different packages using apt, pip, etc. One of my apt-dependencies,
    dnsmasq <http://www.thekelleys.org.uk/dnsmasq/doc.html>, redirects the
    machine's DNS. Any modules currently running at that time that use the
    internet get a temporary name resolution error. Unfortunately, I can't
    run this class in a different stage, as it creates a dependency cycle
    with the other things that depend on dnsmasq.

    Is there a way to force puppet to run a particular class by itself?
    There are enough other tasks/jobs/whatever-we-call-them that being
    explicit about the dependencies isn't really worth it (and it'd have to
    be kept up to date as my manifest grows).

    You might want to look into tags. I've got a few resources which are
    applied to bootstrap the whole process, which can be applied separately
    using "--tags kickstart::bootstrap", which is used while kickstarting
    the node. This ensures that when it reboots, it has a properly
    configured puppet, but doesn't start services in kickstart.


    Alternatively you can pack the initial installation and configuration of
    dnsmasq into an exec{} to ensure semi-atomic execution. Not recommended,
    but possible.


    Regards, David

    --
    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+unsubscribe@googlegroups.com.
    To post to this group, send email to puppet-users@googlegroups.com.
    Visit this group at http://groups.google.com/group/puppet-users.
    For more options, visit https://groups.google.com/groups/opt_out.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppuppet-users @
categoriespuppet
postedAug 19, '13 at 2:34p
activeAug 20, '13 at 8:49a
posts4
users3
websitepuppetlabs.com

3 users in discussion

Matt S: 2 posts David Schmitt: 1 post Peter: 1 post

People

Translate

site design / logo © 2022 Grokbase