adding the ability to change redis configuration
This commit is contained in:
parent
ea138cc1fb
commit
07a388e567
1 changed files with 49 additions and 3 deletions
|
@ -24,6 +24,7 @@ description:
|
||||||
- Unified utility to interact with redis instances.
|
- Unified utility to interact with redis instances.
|
||||||
'slave' Sets a redis instance in slave or master mode.
|
'slave' Sets a redis instance in slave or master mode.
|
||||||
'flush' Flushes all the instance or a specified db.
|
'flush' Flushes all the instance or a specified db.
|
||||||
|
'config' Ensures a configuration setting on an instance.
|
||||||
version_added: "1.3"
|
version_added: "1.3"
|
||||||
options:
|
options:
|
||||||
command:
|
command:
|
||||||
|
@ -31,7 +32,7 @@ options:
|
||||||
- The selected redis command
|
- The selected redis command
|
||||||
required: true
|
required: true
|
||||||
default: null
|
default: null
|
||||||
choices: [ "slave", "flush" ]
|
choices: [ "slave", "flush", "config" ]
|
||||||
login_password:
|
login_password:
|
||||||
description:
|
description:
|
||||||
- The password used to authenticate with (usually not used)
|
- The password used to authenticate with (usually not used)
|
||||||
|
@ -75,6 +76,16 @@ options:
|
||||||
required: false
|
required: false
|
||||||
default: all
|
default: all
|
||||||
choices: [ "all", "db" ]
|
choices: [ "all", "db" ]
|
||||||
|
name:
|
||||||
|
description:
|
||||||
|
- A redis config key.
|
||||||
|
required: false
|
||||||
|
default: null
|
||||||
|
value:
|
||||||
|
description:
|
||||||
|
- A redis config value.
|
||||||
|
required: false
|
||||||
|
default: null
|
||||||
|
|
||||||
|
|
||||||
notes:
|
notes:
|
||||||
|
@ -100,6 +111,12 @@ EXAMPLES = '''
|
||||||
|
|
||||||
# Flush only one db in a redis instance
|
# Flush only one db in a redis instance
|
||||||
- redis: command=flush db=1 flush_mode=db
|
- redis: command=flush db=1 flush_mode=db
|
||||||
|
|
||||||
|
# Configure local redis to have 10000 max clients
|
||||||
|
- redis: command=config name=maxclients value=10000
|
||||||
|
|
||||||
|
# Configure local redis to have lua time limit of 100 ms
|
||||||
|
- redis: command=config name=lua-time-limit value=100
|
||||||
'''
|
'''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -146,7 +163,7 @@ def flush(client, db=None):
|
||||||
def main():
|
def main():
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec = dict(
|
argument_spec = dict(
|
||||||
command=dict(default=None, choices=['slave', 'flush']),
|
command=dict(default=None, choices=['slave', 'flush', 'config']),
|
||||||
login_password=dict(default=None),
|
login_password=dict(default=None),
|
||||||
login_host=dict(default='localhost'),
|
login_host=dict(default='localhost'),
|
||||||
login_port=dict(default='6379'),
|
login_port=dict(default='6379'),
|
||||||
|
@ -155,6 +172,8 @@ def main():
|
||||||
slave_mode=dict(default='slave', choices=['master', 'slave']),
|
slave_mode=dict(default='slave', choices=['master', 'slave']),
|
||||||
db=dict(default=None),
|
db=dict(default=None),
|
||||||
flush_mode=dict(default='all', choices=['all', 'db']),
|
flush_mode=dict(default='all', choices=['all', 'db']),
|
||||||
|
name=dict(default=None),
|
||||||
|
value=dict(default=None)
|
||||||
),
|
),
|
||||||
supports_check_mode = True
|
supports_check_mode = True
|
||||||
)
|
)
|
||||||
|
@ -272,7 +291,34 @@ def main():
|
||||||
module.exit_json(changed=True, flushed=True, db=db)
|
module.exit_json(changed=True, flushed=True, db=db)
|
||||||
else: # Flush never fails :)
|
else: # Flush never fails :)
|
||||||
module.fail_json(msg="Unable to flush '%d' database" % db)
|
module.fail_json(msg="Unable to flush '%d' database" % db)
|
||||||
|
elif command == 'config':
|
||||||
|
name = module.params['name']
|
||||||
|
value = module.params['value']
|
||||||
|
|
||||||
|
r = redis.StrictRedis(host=login_host,
|
||||||
|
port=login_port,
|
||||||
|
password=login_password)
|
||||||
|
|
||||||
|
try:
|
||||||
|
r.ping()
|
||||||
|
except Exception, e:
|
||||||
|
module.fail_json(msg="unable to connect to database: %s" % e)
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
old_value = r.config_get(name)[name]
|
||||||
|
except Exception, e:
|
||||||
|
module.fail_json(msg="unable to read config: %s" % e)
|
||||||
|
changed = old_value != value
|
||||||
|
|
||||||
|
if module.check_mode or not changed:
|
||||||
|
module.exit_json(changed=changed, name=name, value=value)
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
r.config_set(name, value)
|
||||||
|
except Exception, e:
|
||||||
|
module.fail_json(msg="unable to write config: %s" % e)
|
||||||
|
module.exit_json(changed=changed, name=name, value=value)
|
||||||
else:
|
else:
|
||||||
module.fail_json(msg='A valid command must be provided')
|
module.fail_json(msg='A valid command must be provided')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue