Ansible for local/user services

Many of us have powerful workstations/computers running a good bit of the time that could be doing more useful work. We don’t have to deploy everything to the cloud. Tasks to consider running locally include:

  • backup scripts
  • maintenance scripts
  • CI/CD processes – especially those that require a lot of CPU power to run

We often don’t set up local services because it is tedious, and we don’t have a good way to automate it – especially across different users. If you are already using Ansible for server deployment, consider also using it to set up Systemd user services on your local machine. The advantages of this include:

  • don’t need root
  • automatically start when you log in
  • can leverage all your Ansible/Systemd knowledge you already have at the user account level
  • potentially more secure as workstations are behind firewalls and not directly accessible on the Internet

A few notes/tips:

  • user systemd services are stored in ~/.config/systemd/user
  • add --user to systemd commands. Examples:
    • systemctl --user start myservice
    • journalctl --user -f -u myservice
  • use %h to expand to home directory in systemd services.
  • use the in user services

Example Systemd user service.


Description=backup service

ExecStart=%h/bin/backup -retentionService





Local Ansible Playbook

A local role playbook might look something like:


- name: Playboop for localhost
  hosts: localhost
    - backup-retention

And to run: ansible-playbook local.yml

Because it is localhost, no inventory file is needed.

Deploying to your local computer is the simplest scenario possible. And when possible, keep-it-simple!