diff --git a/library/packaging/apt_repository b/library/packaging/apt_repository index 9ba2345e825..a9e6e6dcf29 100644 --- a/library/packaging/apt_repository +++ b/library/packaging/apt_repository @@ -86,6 +86,16 @@ except ImportError: VALID_SOURCE_TYPES = ('deb', 'deb-src') +def install_python_apt(module): + + if not module.check_mode: + apt_get_path = module.get_bin_path('apt-get') + if apt_get_path: + rc, so, se = module.run_command('%s update && %s install python-apt -y -q' % (apt_get_path, apt_get_path)) + if rc == 0: + global apt, apt_pkg + import apt + import apt_pkg class InvalidSource(Exception): pass @@ -337,12 +347,15 @@ def main(): repo=dict(required=True), state=dict(choices=['present', 'absent'], default='present'), update_cache = dict(aliases=['update-cache'], type='bool', default='yes'), + # this should not be needed, but exists as a failsafe + install_python_apt=dict(required=False, default="yes", type='bool'), ), supports_check_mode=True, ) - if not HAVE_PYTHON_APT: - module.fail_json(msg='Could not import python modules: apt_pkg. Please install python-apt package.') + params = module.params + if params['install_python_apt'] and not HAVE_PYTHON_APT and not module.check_mode: + install_python_apt(module) repo = module.params['repo'] state = module.params['state']