'Ansible: Failed to restart apache2.service: Connection timed out

I am using Ansible AWX to issue a restart command to restart an apache2 service on a host. The restart command is contained in a playbook.

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    command: systemctl restart '{{ service_name }}'
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result

OR

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    ansible.builtin.service:
      name: '{{ service_name }}'
      state: restarted
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result

However, when I run the command, I get the error below:

"Failed to restart apache2.service: Connection timed out",
"See system logs and 'systemctl status apache2.service' for details."

I have tried to figure out the issue, but no luck yet.



Solution 1:[1]

I later figured the cause of the issue.

Here's how I fixed it:

The restart command requires sudo access to run which was missing in my command.

All I have to do was to add the become: true command so that I can execute the command with root privileges.

So my playbook looked like this thereafter:

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    command: systemctl restart '{{ service_name }}'
    become: true
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result

OR

---
- name: Manage Linux Services
  hosts: all
  tasks:
  - name: Restart a linux service
    ansible.builtin.service:
      name: '{{ service_name }}'
      state: restarted
    become: true
    register: result
    ignore_errors: yes

  - name: Show result of task
    debug:
     var: result

Another way if you want to achieve this on Ansible AWX is to tick the Privilege Escalation option in the job template.

enter image description here

If enabled, this runs the selected playbook in the job template as an administrator.

That's all.

I hope this helps

Solution 2:[2]

Restarting a service requires sudo privileges. Besides adding the 'become' directive, if you would like to prompt for the password, you can do so by passing the -K flag (note: uppercase K)

$ ansible-playbook myplay.yml -i hosts -u myname --ask-pass -K

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Promise Preston
Solution 2 yaach