supervisorctl: add command-line options as module parameters
Adds more parameters which may be passed to supervisorctl: config, serverurl, username, password Also refactored the various `module.run_command(build_a_string)` calls into a single `run_supervisorctl` function.
This commit is contained in:
parent
25aaee4c38
commit
cbeb6a63e5
1 changed files with 52 additions and 9 deletions
|
@ -32,6 +32,26 @@ options:
|
|||
- The name of the I(supervisord) program/process to manage
|
||||
required: true
|
||||
default: null
|
||||
config:
|
||||
description:
|
||||
- configuration file path, passed as -c to supervisorctl
|
||||
required: false
|
||||
default: null
|
||||
serverurl:
|
||||
description:
|
||||
- URL on which supervisord server is listening, passed as -s to supervisorctl
|
||||
required: false
|
||||
default: null
|
||||
username:
|
||||
description:
|
||||
- username to use for authentication with server, passed as -u to supervisorctl
|
||||
required: false
|
||||
default: null
|
||||
password:
|
||||
description:
|
||||
- password to use for authentication with server, passed as -p to supervisorctl
|
||||
required: false
|
||||
default: null
|
||||
state:
|
||||
description:
|
||||
- The state of service
|
||||
|
@ -45,11 +65,19 @@ author: Matt Wright
|
|||
EXAMPLES = '''
|
||||
# Manage the state of program to be in 'started' state.
|
||||
- supervisorctl: name=my_app state=started
|
||||
|
||||
# Restart another_app using an alternate config file
|
||||
- supervisorctl: name=another_app state=restart config=/var/opt/my_project/supervisord.conf
|
||||
|
||||
'''
|
||||
|
||||
def main():
|
||||
arg_spec = dict(
|
||||
name=dict(required=True),
|
||||
config=dict(required=False),
|
||||
serverurl=dict(required=False),
|
||||
username=dict(required=False),
|
||||
password=dict(required=False),
|
||||
state=dict(required=True, choices=['present', 'started', 'restarted', 'stopped'])
|
||||
)
|
||||
|
||||
|
@ -57,18 +85,33 @@ def main():
|
|||
|
||||
name = module.params['name']
|
||||
state = module.params['state']
|
||||
config = module.params.get('config')
|
||||
serverurl = module.params.get('serverurl')
|
||||
username = module.params.get('username')
|
||||
password = module.params.get('password')
|
||||
|
||||
SUPERVISORCTL = module.get_bin_path('supervisorctl', True)
|
||||
supervisorctl_args = [ module.get_bin_path('supervisorctl', True) ]
|
||||
if config: supervisorctl_args.extend(['-c', config])
|
||||
if serverurl: supervisorctl_args.extend(['-s', serverurl])
|
||||
if username: supervisorctl_args.extend(['-u', username])
|
||||
if password: supervisorctl_args.extend(['-p', password])
|
||||
|
||||
rc, out, err = module.run_command('%s status' % SUPERVISORCTL)
|
||||
def run_supervisorctl(cmd, name=None, **kwargs):
|
||||
args = list(supervisorctl_args) # copy the master args
|
||||
args.append(cmd)
|
||||
if name:
|
||||
args.append(name)
|
||||
return module.run_command(args, **kwargs)
|
||||
|
||||
rc, out, err = run_supervisorctl('status')
|
||||
present = name in out
|
||||
|
||||
if state == 'present':
|
||||
if not present:
|
||||
if module.check_mode:
|
||||
module.exit_json(changed=True)
|
||||
module.run_command('%s reread' % SUPERVISORCTL, check_rc=True)
|
||||
rc, out, err = module.run_command('%s add %s' % (SUPERVISORCTL, name))
|
||||
run_supervisorctl('reread', check_rc=True)
|
||||
rc, out, err = run_supervisorctl('add', name)
|
||||
|
||||
if '%s: added process group' % name in out:
|
||||
module.exit_json(changed=True, name=name, state=state)
|
||||
|
@ -77,7 +120,7 @@ def main():
|
|||
|
||||
module.exit_json(changed=False, name=name, state=state)
|
||||
|
||||
rc, out, err = module.run_command('%s status %s' % (SUPERVISORCTL, name))
|
||||
rc, out, err = run_supervisorctl('status', name)
|
||||
running = 'RUNNING' in out
|
||||
|
||||
if running and state == 'started':
|
||||
|
@ -86,7 +129,7 @@ def main():
|
|||
if running and state == 'stopped':
|
||||
if module.check_mode:
|
||||
module.exit_json(changed=True)
|
||||
rc, out, err = module.run_command('%s stop %s' % (SUPERVISORCTL, name))
|
||||
rc, out, err = run_supervisorctl('stop', name)
|
||||
|
||||
if '%s: stopped' % name in out:
|
||||
module.exit_json(changed=True, name=name, state=state)
|
||||
|
@ -96,8 +139,8 @@ def main():
|
|||
elif state == 'restarted':
|
||||
if module.check_mode:
|
||||
module.exit_json(changed=True)
|
||||
rc, out, err = module.run_command('%s update %s' % (SUPERVISORCTL, name))
|
||||
rc, out, err = module.run_command('%s restart %s' % (SUPERVISORCTL, name))
|
||||
rc, out, err = run_supervisorctl('update', name)
|
||||
rc, out, err = run_supervisorctl('restart', name)
|
||||
|
||||
if '%s: started' % name in out:
|
||||
module.exit_json(changed=True, name=name, state=state)
|
||||
|
@ -107,7 +150,7 @@ def main():
|
|||
elif not running and state == 'started':
|
||||
if module.check_mode:
|
||||
module.exit_json(changed=True)
|
||||
rc, out, err = module.run_command('%s start %s' % (SUPERVISORCTL, name))
|
||||
rc, out, err = run_supervisorctl('start',name)
|
||||
|
||||
if '%s: started' % name in out:
|
||||
module.exit_json(changed=True, name=name, state=state)
|
||||
|
|
Loading…
Reference in a new issue