3

We deploy and change system service files via SaltStack.

For example, if file /etc/systemd/system/superfoo.service gets changed, then systemd emits this warning:

Warning: Unit file of superfoo.service changed on disk, 
         'systemctl --system daemon-reload' recommended.

How to automate this with salt-stack?

  • Please leave a comment if you think this question needs a down-vote: Why do you think so? – guettli Feb 27 '18 at 9:50
  • 1
    I don't know who downvoted it. I hate it when it happens. Upvoted to restore balance. – Nihvel Mar 1 '18 at 11:03
4
+50

I'd like to provide more complete solution although @MaksaSila did answer first.

You just need a cmd.run that'll handle file change, I'm using similar approach:

# sample.sls

systemd-reload:
  cmd.run:
   - name: systemctl --system daemon-reload
   - onchanges:  
     - file: superbar.service

superbar.service:
  file.managed:
    - name: /etc/systemd/system/superbar.service

superfoo.service:
  file.managed:
    - name: /etc/systemd/system/superfoo.service
    - onchanges_in:
       - cmd: systemd-reload

The latter approach will allow you to split the systemd part and the service part into different SLS files (don't forget to include systemd for every sls file you do onchanges_in in).

See this manual page to get more details on the state relations and dependencies.

0

I would suggest after coping this file to run this in your state:

update-systemd:
  cmd.run:
    - name: systemctl --system daemon-reload

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.