diff --git a/apt_repository b/apt_repository
index 3815937f81c..d117bfc0fd3 100755
--- a/apt_repository
+++ b/apt_repository
@@ -26,17 +26,7 @@
import platform
APT = "/usr/bin/apt-get"
-
-
-def _find_binary(module):
- binaries = ['/usr/bin/add-apt-repository']
-
- for e in binaries:
- if os.path.exists(e):
- return e
-
- module.fail_json(msg='Unabled to find any of the following executables '
- '%s' % binaries)
+ADD_APT_REPO = 'add-apt-repository'
def _run(cmd):
if platform.dist()[0] == 'debian' or float(platform.dist()[1]) >= 11.10:
@@ -58,7 +48,7 @@ def main():
module = AnsibleModule(argument_spec=arg_spec)
- add_apt_repository = _find_binary(module)
+ add_apt_repository = module.get_bin_path(ADD_APT_REPO, True)
repo = module.params['repo']
state = module.params['state']
diff --git a/easy_install b/easy_install
index 47d3f2c8237..cacd5203ede 100755
--- a/easy_install
+++ b/easy_install
@@ -19,18 +19,6 @@
# along with Ansible. If not, see .
#
-def _find_easy_install(env):
- if env:
- return os.path.join(env, 'bin', 'easy_install')
-
- paths = ['/usr/local/bin', '/usr/bin']
-
- for p in paths:
- e = p + '/easy_install'
- if os.path.exists(e):
- return e
-
-
def _ensure_virtualenv(env, virtualenv):
if os.path.exists(os.path.join(env, 'bin', 'activate')):
return 0, '', ''
@@ -62,14 +50,18 @@ def main():
name = module.params['name']
env = module.params['virtualenv']
- easy_install = _find_easy_install(env)
+ easy_install = module.get_bin_path('easy_install', True, ['%s/bin' % env])
rc = 0
err = ''
out = ''
if env:
- rc_venv, out_venv, err_venv = _ensure_virtualenv(env, '/usr/local/bin/virtualenv')
+ virtualenv = module.get_bin_path('virtualenv', True)
+ if virtualenv is None:
+ module.fail_json(msg='virtualenv is not installed')
+
+ rc_venv, out_venv, err_venv = _ensure_virtualenv(env, virtualenv)
rc += rc_venv
out += out_venv
diff --git a/group b/group
index 23e8703c496..6df242d63a2 100755
--- a/group
+++ b/group
@@ -20,23 +20,15 @@
import grp
-def get_bin_path(module, arg):
- if os.path.exists('/usr/sbin/%s' % arg):
- return '/usr/sbin/%s' % arg
- elif os.path.exists('/sbin/%s' % arg):
- return '/sbin/%s' % arg
- else:
- module.fail_json(msg="Cannot find %s" % arg)
-
def group_del(module, group):
- cmd = [get_bin_path(module, 'groupdel'), group]
+ cmd = [module.get_bin_path('groupdel', True), group]
p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.communicate()
rc = p.returncode
return (rc, out, err)
def group_add(module, group, **kwargs):
- cmd = [get_bin_path(module, 'groupadd')]
+ cmd = [module.get_bin_path('groupadd', True)]
for key in kwargs:
if key == 'gid' and kwargs[key] is not None:
cmd.append('-g')
@@ -50,7 +42,7 @@ def group_add(module, group, **kwargs):
return (rc, out, err)
def group_mod(module, group, **kwargs):
- cmd = [get_bin_path(module, 'groupmod')]
+ cmd = [module.get_bin_path('groupmod', True)]
info = group_info(group)
for key in kwargs:
if key == 'gid':
diff --git a/pip b/pip
index a2a337457ca..7ff047082fa 100755
--- a/pip
+++ b/pip
@@ -27,32 +27,6 @@ def _get_full_name(name, version=None):
resp = name + '==' + version
return resp
-
-def _find_pip(module, env):
- paths = ['/usr/local/bin', '/usr/bin']
-
- if env:
- paths = [os.path.join(env, 'bin')] + paths
-
- for p in paths:
- pe = p + '/pip'
- if os.path.exists(pe):
- return pe
-
- module.fail_json(msg='pip is not installed')
-
-
-def _find_virtualenv(module):
- paths = ['/usr/local/bin', '/usr/bin']
-
- for p in paths:
- ve = p + '/virtualenv'
- if os.path.exists(ve):
- return ve
-
- module.fail_json(msg='virtualenv is not installed')
-
-
def _ensure_virtualenv(module, env, virtualenv):
if os.path.exists(os.path.join(env, 'bin', 'activate')):
return 0, '', ''
@@ -103,7 +77,7 @@ def main():
env = module.params['virtualenv']
if env:
- virtualenv = _find_virtualenv(module)
+ virtualenv = module.get_bin_path('virtualenv', True)
rc_venv, out_venv, err_venv = _ensure_virtualenv(module, env, virtualenv)
@@ -111,7 +85,7 @@ def main():
out += out_venv
err += err_venv
- pip = _find_pip(module, env)
+ pip = module.get_bin_path('pip', True, ['%s/bin' % env])
state = module.params['state']
name = module.params['name']
diff --git a/service b/service
index e884f902ed5..0d918d49035 100755
--- a/service
+++ b/service
@@ -39,10 +39,7 @@ def _find_binaries(m):
location[binary] = None
for binary in binaries:
- for path in paths:
- if os.path.exists(path + '/' + binary):
- location[binary] = path + '/' + binary
- break
+ location[binary] = m.get_bin_path(binary)
if location.get('systemctl', None):
CHKCONFIG = location['systemctl']
diff --git a/setup b/setup
index 4ed85620cd7..005919157b1 100755
--- a/setup
+++ b/setup
@@ -436,7 +436,9 @@ class LinuxNetwork(Network):
Network.__init__(self)
def populate(self):
- ip_path = self.get_ip_path()
+ ip_path = module.get_bin_path('ip')
+ if ip_path is None:
+ return self.facts
default_ipv4, default_ipv6 = self.get_default_interfaces(ip_path)
interfaces, ips = self.get_interfaces_info(ip_path, default_ipv4, default_ipv6)
self.facts['interfaces'] = interfaces.keys()
@@ -448,15 +450,6 @@ class LinuxNetwork(Network):
self.facts['all_ipv6_addresses'] = ips['all_ipv6_addresses']
return self.facts
- def get_ip_path(self):
- paths = ['/sbin/ip', '/usr/sbin/ip']
- ip_path = None
- for path in paths:
- if os.path.exists(path):
- ip_path = path
- break
- return ip_path
-
def get_default_interfaces(self, ip_path):
# Use the commands:
# ip -4 route get 8.8.8.8 -> Google public DNS
@@ -730,6 +723,7 @@ def run_setup(module):
return setup_result
def main():
+ global module
module = AnsibleModule(
argument_spec = dict()
)
diff --git a/supervisorctl b/supervisorctl
index 9b00b6e8c84..2f33c37ecd1 100755
--- a/supervisorctl
+++ b/supervisorctl
@@ -19,20 +19,12 @@
# along with Ansible. If not, see .
#
-def _find_supervisorctl():
- paths = ['/usr/local/bin', '/usr/bin']
-
- for p in paths:
- e = p + '/supervisorctl'
- if os.path.exists(e):
- return e
-
def _is_present(name):
rc, out, err = _run('%s status' % _find_supervisorctl())
return name in out
-def _is_running(name):
- rc, out, err = _run('%s status %s' % (_find_supervisorctl(), name))
+def _is_running(name, supervisorctl):
+ rc, out, err = _run('%s status %s' % (supervisorctl, name))
return 'RUNNING' in out
@@ -55,7 +47,7 @@ def main():
name = module.params['name']
state = module.params['state']
- SUPERVISORCTL = _find_supervisorctl()
+ SUPERVISORCTL = module.get_bin_path('supervisorctl', True)
if SUPERVISORCTL is None:
module.fail_json(msg='supervisorctl is not installed')
@@ -74,7 +66,7 @@ def main():
module.exit_json(changed=False, name=name, state=state)
- running = _is_running(name)
+ running = _is_running(name, SUPERVISORCTL)
if running and state == 'started':
module.exit_json(changed=False, name=name, state=state)
diff --git a/user b/user
index c90037efe6b..d36c0cffce5 100755
--- a/user
+++ b/user
@@ -35,16 +35,8 @@ if os.path.exists('/etc/master.passwd'):
# invoke adduser in lieu of useradd, nor pw in lieu of usermod.
# That is, this won't work on FreeBSD.
-def get_bin_path(module, arg):
- if os.path.exists('/usr/sbin/%s' % arg):
- return '/usr/sbin/%s' % arg
- elif os.path.exists('/sbin/%s' % arg):
- return '/sbin/%s' % arg
- else:
- module.fail_json(msg="Cannot find %s" % arg)
-
def user_del(module, user, **kwargs):
- cmd = [get_bin_path(module, 'userdel')]
+ cmd = [module.get_bin_path('userdel', True)]
for key in kwargs:
if key == 'force' and kwargs[key] == 'yes':
cmd.append('-f')
@@ -57,7 +49,7 @@ def user_del(module, user, **kwargs):
return (rc, out, err)
def user_add(module, user, **kwargs):
- cmd = [get_bin_path(module, 'useradd')]
+ cmd = [module.get_bin_path('useradd', True)]
for key in kwargs:
if key == 'uid' and kwargs[key] is not None:
cmd.append('-u')
@@ -104,7 +96,7 @@ Without spwd, we would have to resort to reading /etc/shadow
to get the encrypted string. For now, punt on idempotent password changes.
"""
def user_mod(module, user, **kwargs):
- cmd = [get_bin_path(module, 'usermod')]
+ cmd = [module.get_bin_path('usermod', True)]
info = user_info(user)
for key in kwargs:
if key == 'uid':