Dependency conundrum

40 views
Skip to first unread message

Tom Limoncelli

unread,
Jun 15, 2017, 10:59:53 AM6/15/17
to puppet...@googlegroups.com
I'm having a problem getting some dependencies exactly right.

This is the code I originally wrote:

    File['/usr/lib/systemd/system/patcher-client.service']~>Exec['systemctl daemon-reload']~>Service['patcher-client']

It works great except... oops... if any other module does Exec['systemctl daemon-reload'], then Service['patcher-client'] restarts.  That additional restart is unneeded.

I thought about rewriting it as:

    File['/usr/lib/systemd/system/patcher-client.service']~>Exec['systemctl daemon-reload']
    File['/usr/lib/systemd/system/patcher-client.service']~>Service['patcher-client']

But then how would Puppet know to do the Exec[] before the Service[]?  I could add:

    Exec['systemctl daemon-reload']->Service['patcher-client']

But then we're basically in the same situation as the original code. Right?

I guess I kind of want something like this: (not real syntax)

    File['/usr/lib/systemd/system/patcher-client.service']~> ( Exec['systemctl daemon-reload']~>Service['patcher-client'] )

How do I achieve that?

Thanks in advance,
Tom

--
Email: t...@whatexit.org    Work: tlimo...@StackOverflow.com
Blog:  http://EverythingSysadmin.com

Christopher Wood

unread,
Jun 15, 2017, 11:27:25 AM6/15/17
to puppet...@googlegroups.com
Sounds like tags and chaining, did something similar for upstart.

file { '/usr/lib/systemd/system/patcher-client.service':
notify => Service['patcher-client'],
tag => ['reload systemd'],
}

File <| tag == 'reload systemd' |> ~> Exec['systemctl daemon-reload']
Exec['systemctl daemon-reload'] -> Service <| |>


Originally (on centos6 where upstart+sysvinit is combined):

class upstart {

$upstartreload = '/sbin/initctl reload-configuration'

exec { $upstartreload:
refreshonly => true,
}

File <| tag == 'upstart' |> ~> Exec[$upstartreload]
Exec[$upstartreload] -> Service <| tag == 'upstart' |>
> Email: [1]t...@whatexit.org    Work: tlimo...@StackOverflow.com
> Blog:  [2]http://EverythingSysadmin.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 [3]puppet-users...@googlegroups.com.
> To view this discussion on the web visit
> [4]https://groups.google.com/d/msgid/puppet-users/CAHVFxgnkPQTgeNHv6L0Ao%2BuvdVtL-7ftaPfJG3gzXF0OCs6%3DsQ%40mail.gmail.com.
> For more options, visit [5]https://groups.google.com/d/optout.
>
> References
>
> Visible links
> 1. mailto:t...@whatexit.org
> 2. http://everythingsysadmin.com/
> 3. mailto:puppet-users...@googlegroups.com
> 4. https://groups.google.com/d/msgid/puppet-users/CAHVFxgnkPQTgeNHv6L0Ao%2BuvdVtL-7ftaPfJG3gzXF0OCs6%3DsQ%40mail.gmail.com?utm_medium=email&utm_source=footer
> 5. https://groups.google.com/d/optout

Ramin K

unread,
Jun 15, 2017, 2:04:33 PM6/15/17
to puppet...@googlegroups.com
Maybe I've missed something, but I don't see why your second example
doesn't work.

# Our order and notify relationships
File['patcher-client.service'] ~> Exec['systemctl daemon-reload']
File['patcher-client.service'] ~> Service['patcher-client']

# Our order only relationships
Exec['systemctl daemon-reload'] -> Service['patcher-client']

Ramin

On 6/15/17 7:59 AM, Tom Limoncelli wrote:
> I'm having a problem getting some dependencies exactly right.
>
> This is the code I originally wrote:
>
>
> File['/usr/lib/systemd/system/patcher-client.service']~>Exec['systemctl
> daemon-reload']~>Service['patcher-client']
>
> It works great except... oops... if any *other* module does
> Exec['systemctl daemon-reload'], then Service['patcher-client']
> restarts. That additional restart is unneeded.
>
> I thought about rewriting it as:
>
>
> File['/usr/lib/systemd/system/patcher-client.service']~>Exec['systemctl
> daemon-reload']
>
> File['/usr/lib/systemd/system/patcher-client.service']~>Service['patcher-client']
>
> But then how would Puppet know to do the Exec[] before the Service[]? I
> could add:
>
> Exec['systemctl daemon-reload']->Service['patcher-client']
>
> But then we're basically in the same situation as the original code. Right?
>
> I guess I kind of want something like this: (not real syntax)
>
> File['/usr/lib/systemd/system/patcher-client.service']~> (
> Exec['systemctl daemon-reload']~>Service['patcher-client'] )
>
> How do I achieve that?
>
> Thanks in advance,
> Tom
>
> --
> Email: t...@whatexit.org <mailto:t...@whatexit.org> Work:
> tlimo...@StackOverflow.com
> Blog: http://EverythingSysadmin.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...@googlegroups.com
> <mailto:puppet-users...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/CAHVFxgnkPQTgeNHv6L0Ao%2BuvdVtL-7ftaPfJG3gzXF0OCs6%3DsQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/puppet-users/CAHVFxgnkPQTgeNHv6L0Ao%2BuvdVtL-7ftaPfJG3gzXF0OCs6%3DsQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.

Pete Brown

unread,
Aug 3, 2017, 6:23:32 PM8/3/17
to puppet...@googlegroups.com
I found a systemd module on puppet forge which works well.
It sets up an exec to run systemd reload whenever your systemd config files change.

https://forge.puppet.com/eyp/systemd

To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/74f6dd1c-722f-104a-fbfc-5e3d860c0e71%40badapple.net.
Reply all
Reply to author
Forward
0 new messages