Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
af3402fe
Commit
af3402fe
authored
Feb 11, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2043 from chrishoffman/rabbitmq
Rabbitmq Module Updates
parents
d6322109
507e4939
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
114 additions
and
86 deletions
+114
-86
examples/playbooks/rabbitmq.yml
+1
-2
library/rabbitmq_plugin
+10
-9
library/rabbitmq_user
+25
-40
library/rabbitmq_vhost
+78
-35
No files found.
examples/playbooks/rabbitmq.yml
View file @
af3402fe
...
...
@@ -20,7 +20,7 @@
-
restart rabbitmq
-
name
:
add users
rabbitmq_user
:
user=$item password=changeme tags=
monitoring,$item vhost="/" configure_priv=".*" write_priv=".*" read_priv=".*"
state=present
rabbitmq_user
:
user=$item password=changeme tags=
administrator,$item vhost=/ configure_priv=.* write_priv=.* read_priv=.*
state=present
with_items
:
-
user1
-
user2
...
...
@@ -34,4 +34,3 @@
handlers
:
-
name
:
restart rabbitmq
service
:
name=rabbitmq-server state=restarted
library/rabbitmq_plugin
View file @
af3402fe
...
...
@@ -54,22 +54,23 @@ examples:
class
RabbitMqPlugins
(
object
):
def
__init__
(
self
,
module
):
self
.
module
=
module
self
.
_rabbitmq_plugins
=
module
.
get_bin_path
(
'rabbitmq-plugins'
,
True
)
def
_exec
(
self
,
args
):
cmd
=
[
"rabbitmq-plugins"
]
rc
,
out
,
err
=
self
.
module
.
run_command
(
cmd
+
args
,
check_rc
=
True
)
return
out
.
splitlines
()
def
_exec
(
self
,
args
,
run_in_check_mode
=
False
):
if
not
self
.
module
.
check_mode
or
(
self
.
module
.
check_mode
and
run_in_check_mode
):
cmd
=
[
self
.
_rabbitmq_plugins
]
rc
,
out
,
err
=
self
.
module
.
run_command
(
cmd
+
args
,
check_rc
=
True
)
return
out
.
splitlines
()
return
list
()
def
get_all
(
self
):
return
self
.
_exec
([
"list"
,
"-E"
,
"-m"
]
)
return
self
.
_exec
([
'list'
,
'-E'
,
'-m'
],
True
)
def
enable
(
self
,
name
):
if
not
self
.
module
.
check_mode
:
self
.
_exec
([
"enable"
,
name
])
self
.
_exec
([
'enable'
,
name
])
def
disable
(
self
,
name
):
if
not
self
.
module
.
check_mode
:
self
.
_exec
([
"disable"
,
name
])
self
.
_exec
([
'disable'
,
name
])
def
main
():
arg_spec
=
dict
(
...
...
library/rabbitmq_user
View file @
af3402fe
...
...
@@ -82,7 +82,7 @@ options:
default: present
choices: [present, absent]
examples:
- code: rabbitmq_user user=joe password=changeme vhost=
"/" configure_priv=".*" read_priv=".*" write_priv=".*"
state=present
- code: rabbitmq_user user=joe password=changeme vhost=
/ configure_priv=.* read_priv=.* write_priv=.*
state=present
description: Add user to server and assign full access control
'''
...
...
@@ -92,7 +92,7 @@ class RabbitMqUser(object):
self
.
username
=
username
self
.
password
=
password
if
tags
is
None
:
self
.
tags
=
[]
self
.
tags
=
list
()
else
:
self
.
tags
=
tags
.
split
(
','
)
...
...
@@ -106,14 +106,17 @@ class RabbitMqUser(object):
self
.
_tags
=
None
self
.
_permissions
=
None
self
.
_rabbitmqctl
=
module
.
get_bin_path
(
'rabbitmqctl'
,
True
)
def
_exec
(
self
,
args
):
cmd
=
[
"rabbitmqctl"
,
"-q"
]
rc
,
out
,
err
=
self
.
module
.
run_command
(
cmd
+
args
,
check_rc
=
True
)
return
out
.
splitlines
()
def
_exec
(
self
,
args
,
run_in_check_mode
=
False
):
if
not
self
.
module
.
check_mode
or
(
self
.
module
.
check_mode
and
run_in_check_mode
):
cmd
=
[
self
.
_rabbitmqctl
,
'-q'
]
rc
,
out
,
err
=
self
.
module
.
run_command
(
cmd
+
args
,
check_rc
=
True
)
return
out
.
splitlines
()
return
list
()
def
get
(
self
):
users
=
self
.
_exec
([
"list_users"
]
)
users
=
self
.
_exec
([
'list_users'
],
True
)
for
user_tag
in
users
:
user
,
tags
=
user_tag
.
split
(
'
\t
'
)
...
...
@@ -125,16 +128,14 @@ class RabbitMqUser(object):
if
tags
!=
''
:
self
.
_tags
=
tags
.
split
(
','
)
else
:
self
.
_tags
=
[]
self
.
_tags
=
list
()
self
.
_permissions
=
self
.
_get_permissions
()
return
True
return
False
def
_get_permissions
(
self
):
perms_out
=
self
.
_exec
([
"list_user_permissions"
,
self
.
username
]
)
perms_out
=
self
.
_exec
([
'list_user_permissions'
,
self
.
username
],
True
)
for
perm
in
perms_out
:
vhost
,
configure_priv
,
write_priv
,
read_priv
=
perm
.
split
(
'
\t
'
)
...
...
@@ -144,42 +145,26 @@ class RabbitMqUser(object):
return
dict
()
def
add
(
self
):
if
not
self
.
module
.
check_mode
:
self
.
_exec
([
"add_user"
,
self
.
username
,
self
.
password
])
self
.
_exec
([
'add_user'
,
self
.
username
,
self
.
password
])
def
delete
(
self
):
if
not
self
.
module
.
check_mode
:
self
.
_exec
([
"delete_user"
,
self
.
username
])
self
.
_exec
([
'delete_user'
,
self
.
username
])
def
set_tags
(
self
):
if
not
self
.
module
.
check_mode
:
self
.
_exec
([
"set_user_tags"
,
self
.
username
]
+
self
.
tags
)
self
.
_exec
([
'set_user_tags'
,
self
.
username
]
+
self
.
tags
)
def
set_permissions
(
self
):
if
not
self
.
module
.
check_mode
:
cmd
=
[
"set_permissions"
]
cmd
.
append
(
'-p'
)
cmd
.
append
(
self
.
permissions
[
'vhost'
])
cmd
.
append
(
self
.
username
)
cmd
.
append
(
self
.
permissions
[
'configure_priv'
])
cmd
.
append
(
self
.
permissions
[
'write_priv'
])
cmd
.
append
(
self
.
permissions
[
'read_priv'
])
self
.
_exec
(
cmd
)
cmd
=
[
'set_permissions'
]
cmd
.
append
(
'-p'
)
cmd
.
append
(
self
.
permissions
[
'vhost'
])
cmd
.
append
(
self
.
username
)
cmd
.
append
(
self
.
permissions
[
'configure_priv'
])
cmd
.
append
(
self
.
permissions
[
'write_priv'
])
cmd
.
append
(
self
.
permissions
[
'read_priv'
])
self
.
_exec
(
cmd
)
def
has_tags_modifications
(
self
):
if
(
not
self
.
_tags
and
len
(
self
.
tags
)
>
0
)
or
(
not
self
.
tags
and
len
(
self
.
_tags
)
>
0
):
return
True
else
:
for
tag
in
self
.
_tags
:
if
tag
not
in
self
.
tags
:
return
True
for
tag
in
self
.
tags
:
if
tag
not
in
self
.
_tags
:
return
True
return
False
return
set
(
self
.
tags
)
!=
set
(
self
.
_tags
)
def
has_permissions_modifications
(
self
):
return
self
.
_permissions
!=
self
.
permissions
...
...
@@ -238,7 +223,7 @@ def main():
rabbitmq_user
.
set_permissions
()
changed
=
True
module
.
exit_json
(
changed
=
changed
)
module
.
exit_json
(
changed
=
changed
,
user
=
username
,
state
=
state
)
# this is magic, see lib/ansible/module_common.py
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
...
...
library/rabbitmq_vhost
View file @
af3402fe
...
...
@@ -31,62 +31,105 @@ options:
- The name of the vhost to manage
required: true
default: null
aliases: [vhost]
tracing:
description:
Enable/disable tracing for a vhost
default: no
choices: [yes, no]
aliases: [trace]
state:
description:
- The state of vhost
required: true
default: null
choices: [ "present", "absent" ]
default: present
choices: [present, absent]
examples:
- code:
"rabbitmq_vhost: name=/test state=present"
- code:
'rabbitmq_vhost: name=/test state=present'
description: Ensure that the vhost /test exists.
author: Matt Cordial
'''
class
RabbitMqVhost
(
object
):
def
__init__
(
self
,
module
,
name
,
tracing
):
self
.
module
=
module
self
.
name
=
name
self
.
tracing
=
tracing
self
.
_tracing
=
False
self
.
_rabbitmqctl
=
module
.
get_bin_path
(
'rabbitmqctl'
,
True
)
def
_exec
(
self
,
args
,
run_in_check_mode
=
False
):
if
not
self
.
module
.
check_mode
or
(
self
.
module
.
check_mode
and
run_in_check_mode
):
cmd
=
[
self
.
_rabbitmqctl
,
'-q'
]
rc
,
out
,
err
=
self
.
module
.
run_command
(
cmd
+
args
,
check_rc
=
True
)
return
out
.
splitlines
()
return
list
()
def
get
(
self
):
vhosts
=
self
.
_exec
([
'list_vhosts'
,
'name'
,
'tracing'
],
True
)
for
vhost
in
vhosts
:
name
,
tracing
=
vhost
.
split
(
'
\t
'
)
if
name
==
self
.
name
:
self
.
_tracing
=
self
.
module
.
boolean
(
tracing
)
return
True
return
False
def
add
(
self
):
return
self
.
_exec
([
'add_vhost'
,
self
.
name
])
def
delete
(
self
):
return
self
.
_exec
([
'delete_vhost'
,
self
.
name
])
def
set_tracing
(
self
):
if
self
.
tracing
!=
self
.
_tracing
:
if
self
.
tracing
:
self
.
_enable_tracing
()
else
:
self
.
_disable_tracing
()
return
True
return
False
def
_enable_tracing
(
self
):
return
self
.
_exec
([
'trace_on'
,
'-p'
,
self
.
name
])
def
_disable_tracing
(
self
):
return
self
.
_exec
([
'trace_off'
,
'-p'
,
self
.
name
])
def
main
():
arg_spec
=
dict
(
name
=
dict
(
required
=
True
),
state
=
dict
(
required
=
False
,
choices
=
[
'present'
,
'absent'
])
name
=
dict
(
required
=
True
,
aliases
=
[
'vhost'
]),
tracing
=
dict
(
default
=
'off'
,
choices
=
BOOLEANS
,
aliases
=
[
'trace'
]),
state
=
dict
(
default
=
'present'
,
choices
=
[
'present'
,
'absent'
])
)
module
=
AnsibleModule
(
argument_spec
=
arg_spec
)
module
=
AnsibleModule
(
argument_spec
=
arg_spec
,
supports_check_mode
=
True
)
name
=
module
.
params
[
'name'
]
tracing
=
module
.
boolean
(
module
.
params
[
'tracing'
])
state
=
module
.
params
[
'state'
]
RABBITMQCTL
=
module
.
get_bin_path
(
'rabbitmqctl'
,
True
)
present
=
False
rc
,
out
,
err
=
module
.
run_command
(
'
%
s list_vhosts'
%
RABBITMQCTL
)
for
line
in
out
.
splitlines
():
if
line
.
strip
()
==
name
:
present
=
True
break
rabbitmq_vhost
=
RabbitMqVhost
(
module
,
name
,
tracing
)
if
state
==
'present'
and
present
:
module
.
exit_json
(
changed
=
False
,
name
=
name
,
state
=
state
)
if
state
==
'present'
and
not
present
:
rc
,
out
,
err
=
module
.
run_command
(
'
%
s add_vhost
%
s'
%
(
RABBITMQCTL
,
name
))
if
'...done'
in
out
:
module
.
exit_json
(
changed
=
True
,
name
=
name
,
state
=
state
)
changed
=
False
if
rabbitmq_vhost
.
get
():
if
state
==
'absent'
:
rabbitmq_vhost
.
delete
()
changed
=
True
else
:
module
.
fail_json
(
msg
=
out
,
name
=
name
,
state
=
state
)
if
state
==
'absent'
and
not
present
:
module
.
exit_json
(
changed
=
False
,
name
=
name
,
state
=
state
)
if
rabbitmq_vhost
.
set_tracing
():
changed
=
True
elif
state
==
'present'
:
rabbitmq_vhost
.
add
()
rabbitmq_vhost
.
set_tracing
()
changed
=
True
if
state
==
'absent'
and
present
:
rc
,
out
,
err
=
module
.
run_command
(
'
%
s delete_vhost
%
s'
%
(
RABBITMQCTL
,
name
))
if
'...done'
in
out
:
module
.
exit_json
(
changed
=
True
,
name
=
name
,
state
=
state
)
else
:
module
.
fail_json
(
msg
=
out
,
name
=
name
,
state
=
state
)
module
.
exit_json
(
changed
=
False
,
name
=
name
,
state
=
state
)
module
.
exit_json
(
changed
=
changed
,
name
=
name
,
state
=
state
)
# this is magic, see lib/ansible/module_common.py
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment