AnsiblePilot — Master Ansible Automation
AnsiblePilot is the leading resource for learning Ansible automation, DevOps, and infrastructure as code. Browse over 1,400 tutorials covering Ansible modules, playbooks, roles, collections, and real-world examples. Whether you are a beginner or an experienced engineer, our step-by-step guides help you automate Linux, Windows, cloud, containers, and network infrastructure.
Popular Topics
About Luca Berton
Luca Berton is an Ansible automation expert, author of 8 Ansible books published by Apress and Leanpub including "Ansible for VMware by Examples" and "Ansible for Kubernetes by Example", and creator of the Ansible Pilot YouTube channel. He shares practical automation knowledge through tutorials, books, and video courses to help IT professionals and DevOps engineers master infrastructure automation.
ansible.builtin.service: Manage Services with Ansible (Complete Guide) — Video Tutorial
How to restart, start, stop, and enable services with Ansible service module. Manage systemd, SysV, and Windows services with handlers and examples.
What You'll Learn
- How to restart services on remote hosts with Ansible?
- Ansible restart services on remote hosts
- Parameters
- Conclusion
- Service Management Examples
- Start and enable
- Stop a service
- Reload (without restart)
- Using as a Handler
- service vs systemd Module
Full Tutorial Content
How to restart services on remote hosts with Ansible?
I'm going to show you a live Playbook with some simple Ansible code.
I'm Luca Berton and welcome to today's episode of Ansible Pilot.
Ansible restart services on remote hosts
Today we're talking about the Ansible module `service`.
The full name is `ansible.builtin.service` which means is part of the collection of modules "builtin" with ansible and shipped with it.
This module is pretty stable and out for years.
The purpose is to controls services on remote hosts.
The Supported service systems include BSD, OpenRC, SysV, Solaris SMF, systemd, and upstart.
For Windows targets, use the `ansible.windows.win_service` module instead.
Parameters
- name _path_ - name of the service
- state _string_ - started / stopped / restarted / reloaded
- enabled _boolean_ - no/yes
- sleep _integer_ - seconds after the restart
- arguments/args _string_ - extra args
The parameter list is pretty wide but I'll summarize the most useful.
The only required parameter is "name" that specifies the name of the service.
At least one between the "state" and "enabled" parameters is mandatory.
The "state" parameter defines the action that we are going to take.
It has four alternatives options:
"started" and "stopped" options allow you to run or stop the service.
"restarted" is a combination of stop and start - you could also customize the number of seconds between using the "sleep" parameter
The "reloaded" option is useful if the service needs to reload the configuration file.
The "enable" parameter allows you to decide if the service should start on boot or not.
The "arguments or args" parameter allows you to specify some additional arguments provided on the command line.
## Playbook
Let's jump into a real-life playbook on how to controls services on remote hosts with Ansible Playbook.
- service.yml
```yaml
---
- name: service module Playbook
hosts: all
become: true
tasks:
- name: sshd restart
ansible.builtin.service:
name: sshd
state: restarted
enabled: true
```
[code with ❤️ in GitHub](https://github.com/lucab85/ansible-pilot/tree/master/restart%20services%20on%20remote%20hosts)
Conclusion
Now you know how to restart and control services on remote hosts with Ansible.
Service Management Examples
Start and enable
```yaml
- name: Start and enable nginx
ansible.builtin.service:
name: nginx
state: started
enabled: true
become: true
```
Stop a service
```yaml
- name: Stop old application
ansible.builtin.service:
name: myapp-legacy
state: stopped
enabled: false
become: true
```
Reload (without restart)
```yaml
- name: Reload nginx config
ansible.builtin.service:
name: nginx
state: reloaded
become: true
```
Using as a Handler
```yaml
tasks:
- name: Update nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginx
become: true
handlers:
- name: resta
About This Tutorial
- Author: Luca Berton
- Difficulty: Advanced
- Read time: 6 min
- Category: troubleshooting
Read the full written article: ansible.builtin.service: Manage Services with Ansible (Complete Guide)