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
ccf031f1
Commit
ccf031f1
authored
Mar 14, 2014
by
Alexander Bulimov
Committed by
Michael DeHaan
Aug 08, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
zabbix_maintenance fixes and parameter names update
parent
edebadc3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
50 deletions
+51
-50
library/monitoring/zabbix_maintenance
+51
-50
No files found.
library/monitoring/zabbix_maintenance
View file @
ccf031f1
...
...
@@ -25,7 +25,7 @@ module: zabbix_maintenance
short_description: Create Zabbix maintenance windows
description:
- This module will let you create Zabbix maintenance windows.
version_added: "1.
5
"
version_added: "1.
6
"
author: Alexander Bulimov
requirements:
- zabbix-api python module
...
...
@@ -36,38 +36,39 @@ options:
required: true
default: null
choices: [ "present", "absent" ]
server:
server
_url
:
description:
- Url of Zabbix server, with schema (http or https).
- Url of Zabbix server, with protocol (http or https).
C(url) is an alias for C(server_url).
required: true
default: null
aliases: [ "url" ]
user:
login_
user:
description:
- Zabbix user name.
required: true
default: null
passw
d:
login_passwor
d:
description:
- Zabbix user password.
required: true
default: null
hosts:
host
_name
s:
description:
- Hosts to manage maintenance window for. Separate multiple hosts with commas.
C(host
) is an alias for C(host
s).
B(Required) option when C(state) is I(present) and no C(groups) specified.
C(host
_name) is an alias for C(host_name
s).
B(Required) option when C(state) is I(present) and no C(
host_
groups) specified.
required: false
default: null
aliases: [ "host" ]
groups:
aliases: [ "host
_name
" ]
host_
groups:
description:
- Host groups to manage maintenance window for. Separate multiple groups with commas.
C(
group) is an alias for C(
groups).
B(Required) option when C(state) is I(present) and no C(hosts) specified.
C(
host_group) is an alias for C(host_
groups).
B(Required) option when C(state) is I(present) and no C(host
_name
s) specified.
required: false
default: null
aliases: [ "group" ]
aliases: [ "
host_
group" ]
minutes:
description:
- Length of maintenance window in minutes.
...
...
@@ -102,39 +103,39 @@ EXAMPLES = '''
# Create maintenance window named "Update of www1"
# for host www1.example.com for 90 minutes
- zabbix_maintenance: name="Update of www1"
host=www1.example.com
host
_name
=www1.example.com
state=present
minutes=90
server=https://monitoring.example.com
user=ansible
passw
d=pAsSwOrD
server
_url
=https://monitoring.example.com
login_
user=ansible
login_passwor
d=pAsSwOrD
# Create maintenance window named "Mass update"
# for host www1.example.com and host groups Office and Dev
- zabbix_maintenance: name="Update of www1"
host=www1.example.com
group
=Office,Dev
host
_name
=www1.example.com
host_groups
=Office,Dev
state=present
server=https://monitoring.example.com
user=ansible
passw
d=pAsSwOrD
server
_url
=https://monitoring.example.com
login_
user=ansible
login_passwor
d=pAsSwOrD
# Create maintenance window named "update"
# for host
www
1.example.com and without data collection.
# for host
s www1.example.com and db
1.example.com and without data collection.
- zabbix_maintenance: name=update
host
=www
1.example.com
host
_names=www1.example.com,db
1.example.com
state=present
collect_data=false
server=https://monitoring.example.com
user=ansible
passw
d=pAsSwOrD
server
_url
=https://monitoring.example.com
login_
user=ansible
login_passwor
d=pAsSwOrD
# Remove maintenance window named "Test1"
- zabbix_maintenance: name=Test1
state=absent
server=https://monitoring.example.com
user=ansible
passw
d=pAsSwOrD
server
_url
=https://monitoring.example.com
login_
user=ansible
login_passwor
d=pAsSwOrD
'''
import
datetime
,
time
...
...
@@ -205,9 +206,9 @@ def check_maintenance(zbx, name):
return
1
,
None
,
str
(
e
)
return
0
,
result
,
None
def
get_group_ids
(
zbx
,
group_name
s
):
def
get_group_ids
(
zbx
,
host_group
s
):
group_ids
=
[]
for
group
in
group_name
s
:
for
group
in
host_group
s
:
try
:
result
=
zbx
.
hostgroup
.
get
(
{
...
...
@@ -256,12 +257,12 @@ def main():
module
=
AnsibleModule
(
argument_spec
=
dict
(
state
=
dict
(
required
=
True
,
default
=
None
,
choices
=
[
'present'
,
'absent'
]),
server
=
dict
(
required
=
True
,
default
=
None
,
aliases
=
[
'url'
]),
host
s
=
dict
(
type
=
'list'
,
required
=
False
,
default
=
None
,
aliases
=
[
'host
'
]),
server
_url
=
dict
(
required
=
True
,
default
=
None
,
aliases
=
[
'url'
]),
host
_names
=
dict
(
type
=
'list'
,
required
=
False
,
default
=
None
,
aliases
=
[
'host_name
'
]),
minutes
=
dict
(
type
=
'int'
,
required
=
False
,
default
=
10
),
groups
=
dict
(
type
=
'list'
,
required
=
False
,
default
=
None
,
aliases
=
[
'
group'
]),
user
=
dict
(
required
=
True
,
default
=
None
),
passw
d
=
dict
(
required
=
True
,
default
=
None
),
host_groups
=
dict
(
type
=
'list'
,
required
=
False
,
default
=
None
,
aliases
=
[
'host_
group'
]),
login_
user
=
dict
(
required
=
True
,
default
=
None
),
login_passwor
d
=
dict
(
required
=
True
,
default
=
None
),
name
=
dict
(
required
=
True
,
default
=
None
),
desc
=
dict
(
required
=
False
,
default
=
"Created by Ansible"
),
collect_data
=
dict
(
type
=
'bool'
,
required
=
False
,
default
=
True
),
...
...
@@ -272,15 +273,15 @@ def main():
if
not
HAS_ZABBIX_API
:
module
.
fail_json
(
msg
=
"Missing requried zabbix-api module (check docs or install with: pip install zabbix-api)"
)
host
s
=
module
.
params
[
'host
s'
]
groups
=
module
.
params
[
'
groups'
]
host
_names
=
module
.
params
[
'host_name
s'
]
host_groups
=
module
.
params
[
'host_
groups'
]
state
=
module
.
params
[
'state'
]
user
=
module
.
params
[
'
user'
]
passwd
=
module
.
params
[
'passw
d'
]
login_user
=
module
.
params
[
'login_
user'
]
login_password
=
module
.
params
[
'login_passwor
d'
]
minutes
=
module
.
params
[
'minutes'
]
name
=
module
.
params
[
'name'
]
desc
=
module
.
params
[
'desc'
]
server
=
module
.
params
[
'server
'
]
server
_url
=
module
.
params
[
'server_url
'
]
collect_data
=
module
.
params
[
'collect_data'
]
if
collect_data
:
maintenance_type
=
0
...
...
@@ -289,8 +290,8 @@ def main():
try
:
zbx
=
ZabbixAPI
(
server
)
zbx
.
login
(
user
,
passw
d
)
zbx
=
ZabbixAPI
(
server
_url
)
zbx
.
login
(
login_user
,
login_passwor
d
)
except
BaseException
as
e
:
module
.
fail_json
(
msg
=
"Failed to connect to Zabbix server:
%
s"
%
e
)
...
...
@@ -302,15 +303,15 @@ def main():
start_time
=
time
.
mktime
(
now
.
timetuple
())
period
=
60
*
int
(
minutes
)
#N * 60 seconds
if
groups
:
(
rc
,
group_ids
,
error
)
=
get_group_ids
(
zbx
,
groups
)
if
host_
groups
:
(
rc
,
group_ids
,
error
)
=
get_group_ids
(
zbx
,
host_
groups
)
if
rc
!=
0
:
module
.
fail_json
(
msg
=
"Failed to get group_ids:
%
s"
%
error
)
else
:
group_ids
=
[]
if
hosts
:
(
rc
,
host_ids
,
error
)
=
get_host_ids
(
zbx
,
hosts
)
if
host
_name
s
:
(
rc
,
host_ids
,
error
)
=
get_host_ids
(
zbx
,
host
_name
s
)
if
rc
!=
0
:
module
.
fail_json
(
msg
=
"Failed to get host_ids:
%
s"
%
error
)
else
:
...
...
@@ -321,8 +322,8 @@ def main():
module
.
fail_json
(
msg
=
"Failed to check maintenance
%
s existance:
%
s"
%
(
name
,
error
))
if
not
exists
:
if
not
host
s
and
not
groups
:
module
.
fail_json
(
msg
=
"At least one host
or host
group must be defined for each created maintenance."
)
if
not
host
_names
and
not
host_
groups
:
module
.
fail_json
(
msg
=
"At least one host
_name or host_
group must be defined for each created maintenance."
)
if
module
.
check_mode
:
changed
=
True
...
...
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