supervisorctl module: adding support for custom supervisord installations

Supervisord can be installed at the user level or system level.
Installating as a user is particularly useful for systems without root access.

Adds the ability to provide a custom supervisorctl executable path, supporting custom installations
This commit is contained in:
egghead 2013-09-21 18:09:31 +00:00
parent 6eec6f776e
commit d05f21fc80

View file

@ -18,6 +18,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>. # along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# #
import os
DOCUMENTATION = ''' DOCUMENTATION = '''
--- ---
@ -62,6 +63,14 @@ options:
required: true required: true
default: null default: null
choices: [ "present", "started", "stopped", "restarted" ] choices: [ "present", "started", "stopped", "restarted" ]
supervisorctl_path:
description:
- Path to supervisorctl executable to use
required: false
default: null
version_added: "1.4"
requirements:
- supervisorctl
requirements: [ ] requirements: [ ]
author: Matt Wright author: Matt Wright
''' '''
@ -85,6 +94,7 @@ def main():
server_url=dict(required=False), server_url=dict(required=False),
username=dict(required=False), username=dict(required=False),
password=dict(required=False), password=dict(required=False),
supervisorctl_path=dict(required=False),
state=dict(required=True, choices=['present', 'started', 'restarted', 'stopped']) state=dict(required=True, choices=['present', 'started', 'restarted', 'stopped'])
) )
@ -96,7 +106,15 @@ def main():
server_url = module.params.get('server_url') server_url = module.params.get('server_url')
username = module.params.get('username') username = module.params.get('username')
password = module.params.get('password') password = module.params.get('password')
supervisorctl_path = module.params.get('supervisorctl_path')
if supervisorctl_path:
supervisorctl_path = os.path.expanduser(supervisorctl_path)
if os.path.exists(supervisorctl_path) and module.is_executable(supervisorctl_path):
supervisorctl_args = [ supervisorctl_path ]
else:
module.fail_json(msg="Provided path to supervisorctl does not exist or isn't executable: %s" % ctl_path)
else:
supervisorctl_args = [ module.get_bin_path('supervisorctl', True) ] supervisorctl_args = [ module.get_bin_path('supervisorctl', True) ]
if config: if config: