ATOzTOA
ATOzTOA

Reputation: 35950

How can I install a systemd service using Ansible?

I want to install a systemd service from a Jinja2 template. How do I do this?

Do I have to use copy module to copy the file to /lib/systemd/system and then use systemd module to enable it?

Is there a better way?

Upvotes: 46

Views: 46188

Answers (1)

Peter Lyons
Peter Lyons

Reputation: 146014

I use the template module to install the .service file into the /etc/systemd/system. According to this digital ocean blog post /lib/systemd/system should be reserved for packages bundled with the OS itself, and third party services should be defined in /etc/systemd/system.

With ansible's systemd module I'd start the service with daemon_reload=yes.

Prior to Ansible 2.2: I do a systemctl daemon-reload afterward (can use an ansible handler for this if appropriate) to prod systemd to pick up the new file.

- name: install myservice systemd unit file
  template: src=myservice.j2 dest=/etc/systemd/system/myservice.service

- name: start myservice
  systemd: state=started name=myservice daemon_reload=yes


# For ansilble < 2.2 only
#- name: reload systemd unit configuration
#  command: systemctl daemon-reload

Upvotes: 69

Related Questions