Search code examples
ansibleansible-tower

Using ping on localhost in a playbook


I am unable to run ping commands from a ansible host (using localhost, see below).

I built a simple playbook to run ping using the command module:

---
#
- name: GET INFO
  hosts: localhost

  tasks:
    - name: return motd to registered var
      command: "/usr/bin/ping 10.39.120.129"
      register: mymotd

    - name: debug output
      debug: var=mymotd

However, I this error: "ping: socket: Operation not permitted"

Seems like there is a permissions issue. However, looking at the /usr/bin directory, it looks like ping would be executable to me:

    "-rwxr-xr-x.   1 root root      66176 Aug  4  2017 ping", 

I cannot become or use sudo, it seems like tower is locked down for that and I don't have the authority to change it either.

Anyone have any suggestions? What brought me to this, is that I am trying to run ping in a custom module and getting a similar issue.

Thanks


Solution

  • ping binary needs to have the SETUID bit set to be fully runable as a normal user, which is not the case on your server.

    You need to run as root:

    chmod u+s $(which ping)
    

    If you don't have root access and cannot have this done by an admin, I'm affraid you're stuck... unless the server you are trying to ping is a machine you can manage with ansible.

    In this later case, there is a ping module you can use. It is not ICMP ping as said in the doc. See if this can be used in your situation.


    One of the numerous ref I could find about ping permissions: https://ubuntuforums.org/showthread.php?t=927709