op5util 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Readme.md +66 -39
- data/bin/op5util +15 -3
- data/lib/op5util/add_host.rb +1 -6
- data/lib/op5util/add_hostgroups.rb +2 -1
- data/lib/op5util/autocomplete.rb +7 -7
- data/lib/op5util/commit.rb +31 -0
- data/lib/op5util/version.rb +1 -1
- data/lib/op5util.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bab4098ca55a344b20d807011731cce8c646170
|
4
|
+
data.tar.gz: 759ed9612ee285dc48648ebd54dc3bbea4dc78ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6da7903090af03d5d2011c0014a9171f1acceb56a5f27a7304807b0f6005a1a4382e274d91fdacabb639c8849a8201a82841b06a912b2038f0a4df13c7861816
|
7
|
+
data.tar.gz: 9a0e569b092a711731955ad31b2b853f61882b90eaa6e7fa744d72b64db787403ccd21b56b879e0300d559314ae69c59c505ed27cbfb74d506afa69de24bdb8f
|
data/Readme.md
CHANGED
@@ -1,4 +1,25 @@
|
|
1
|
-
|
1
|
+
# Op5util
|
2
|
+
|
3
|
+
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
4
|
+
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
5
|
+
**Table of Contents**
|
6
|
+
|
7
|
+
- [Introduction](#introduction)
|
8
|
+
- [Capabilities](#capabilities)
|
9
|
+
- [Screenshots, example usage](#screenshots-example-usage)
|
10
|
+
- [Add a host to op5, check host status](#add-a-host-to-op5-check-host-status)
|
11
|
+
- [Another use case](#another-use-case)
|
12
|
+
- [Installation](#installation)
|
13
|
+
- [Usage](#usage)
|
14
|
+
- [Commands, help text example](#commands-help-text-example)
|
15
|
+
- [Roadmap, TODO](#roadmap-todo)
|
16
|
+
- [Contact, bug-reports etc](#contact-bug-reports-etc)
|
17
|
+
- [Version history](#version-history)
|
18
|
+
- [How op5util may be used with ansible](#how-op5util-may-be-used-with-ansible)
|
19
|
+
|
20
|
+
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
21
|
+
|
22
|
+
## Introduction
|
2
23
|
|
3
24
|
Are you using Op5? Perhaps you do most of your work from the command-line
|
4
25
|
and want to be able to do the most common Op5 tasks without logging in
|
@@ -11,8 +32,8 @@ Those two use-cases were my biggest itches when I first started to use
|
|
11
32
|
saved curl commands to interact with the REST-api and soon op5util.rb
|
12
33
|
was born.
|
13
34
|
|
14
|
-
The design nowdays is
|
15
|
-
added
|
35
|
+
The design nowdays is reasonably modular so new functions can be easily
|
36
|
+
added as needed, pull requests are happily accepted.
|
16
37
|
|
17
38
|
I use op5util daily in a production environment, but it comes with no
|
18
39
|
warranties.
|
@@ -24,13 +45,13 @@ Currently op5util have implemented these functions:
|
|
24
45
|
* Add a new host to be monitored by Op5
|
25
46
|
* Add a existing host to more hostgroups
|
26
47
|
* Schedule downtime for a host
|
48
|
+
* Acknowledge alarms for host/service
|
27
49
|
* Show status summary of all services/host and summary of service per host
|
28
50
|
* Show status summary of services for a host and list all services w. status for a host
|
29
51
|
* Schedule forced checks of a host and the hosts services to be done now
|
30
52
|
* List all hostgroups available, including members and service checks
|
31
|
-
|
32
|
-
|
33
|
-
the networked monitored.
|
53
|
+
* List all hosts, with optioinal detailed info
|
54
|
+
* Autocomplete template for bash/zsh is included
|
34
55
|
|
35
56
|
## Screenshots, example usage
|
36
57
|
|
@@ -42,9 +63,9 @@ Adding a host using ```op5util add -g linux_hosts wiki``` and at the same time a
|
|
42
63
|
membership in the linux_hosts hostgroup for the host, so some standard service checks are
|
43
64
|
defined.
|
44
65
|
|
45
|
-
To avoid waiting for checks to be performed on the new host, we tell Op5 to check
|
46
|
-
|
47
|
-
take a look at the detailed host status with ```op5util status -l wiki```.
|
66
|
+
To avoid waiting for checks to be performed on the new host, we tell Op5 to check the new
|
67
|
+
host and it's services right away with the command ```op5util schedule wiki```, and after
|
68
|
+
only a short wait we can take a look at the detailed host status with ```op5util status -l wiki```.
|
48
69
|
|
49
70
|
![Usage example](https://raw.githubusercontent.com/np422/Op5util/master/screenshots/usecase2.png)
|
50
71
|
|
@@ -62,37 +83,37 @@ with the terminal output by op5util.
|
|
62
83
|
|
63
84
|
Op5util is installed using ```gem install op5util```
|
64
85
|
|
65
|
-
The export of the environment variable MONITOR
|
66
|
-
|
67
|
-
|
86
|
+
The export of the environment variable MONITOR and saving credentials in the in the .op5pass
|
87
|
+
file is to avoid using the command-line flags ```-m monitor.ipa.hemma -u user -p password```
|
88
|
+
on every command.
|
68
89
|
|
69
|
-
|
70
|
-
info to be displayed with ```op5util status -l```, and we see that the host gitlab01 is down, to
|
90
|
+
First check the overall status with the command ```op5util status```, as one host is down we request
|
91
|
+
more info to be displayed with ```op5util status -l```, and we see that the host gitlab01 is down, to
|
71
92
|
acknowledge the alarms, ```op5util acknowledge gitlab01```.
|
72
93
|
|
73
|
-
Once the problem is resolved and the host is up, ```op5util schedule gitlab01
|
74
|
-
a final check with ```op5util status gitlab01```.
|
94
|
+
Once the problem is resolved and the host is up, ```op5util schedule gitlab01```, because impatience,
|
95
|
+
and a final check with ```op5util status gitlab01```.
|
75
96
|
|
76
97
|
![screenshot](https://raw.githubusercontent.com/np422/Op5util/master/screenshots/usecase1.png)
|
77
98
|
|
78
99
|
## Installation
|
79
100
|
|
80
|
-
Install instructions intended for and tested on a fresh install of ubuntu 16.04.
|
101
|
+
Install instructions are intended for and tested on a fresh install of ubuntu 16.04.
|
81
102
|
|
82
103
|
Op5util is distributed as a ruby gem, so first ruby must be installed.
|
83
104
|
|
84
|
-
```
|
105
|
+
```shell
|
85
106
|
user@host:~$ sudo apt-get install -y ruby
|
86
107
|
```
|
87
108
|
|
88
|
-
Use the command gem install, sudo is needed. This will automatically
|
89
|
-
and the other gems that op5util depends on.
|
109
|
+
Use the command gem install to install op5util, sudo is needed. This will automatically
|
110
|
+
install op5util and the other gems that op5util depends on.
|
90
111
|
|
91
112
|
```shell
|
92
113
|
user@host:~$ sudo gem install op5util
|
93
114
|
```
|
94
115
|
|
95
|
-
|
116
|
+
The latest version is 0.1.7, you can verify that op5util is installed correctly using:
|
96
117
|
|
97
118
|
``` shell
|
98
119
|
user@host:~$ gem list --details op5util
|
@@ -108,7 +129,7 @@ op5util (0.1.6)
|
|
108
129
|
A utility to do common Op5 administration from the commandline
|
109
130
|
```
|
110
131
|
|
111
|
-
|
132
|
+
The rubygem homepage for op5util is available at: https://rubygems.org/gems/op5util
|
112
133
|
|
113
134
|
## Usage
|
114
135
|
|
@@ -116,9 +137,8 @@ There is no man-page, but the built in help text should do the job.
|
|
116
137
|
|
117
138
|
If you enter the command ```op5util help``` the top-level documentation is displayed.
|
118
139
|
|
119
|
-
|
120
|
-
|
121
|
-
|
140
|
+
Help for a op5util command is diplayed with ```op5util help <command>```, examples are
|
141
|
+
present below.
|
122
142
|
|
123
143
|
``` text
|
124
144
|
NAME
|
@@ -139,7 +159,7 @@ SYNOPSIS
|
|
139
159
|
op5util [global options] command [command options] [arguments...]
|
140
160
|
|
141
161
|
VERSION
|
142
|
-
0.1.
|
162
|
+
0.1.7
|
143
163
|
|
144
164
|
GLOBAL OPTIONS
|
145
165
|
-f, --authfile=authfile - Authfile containing "username:password" used to authenticate with Op5
|
@@ -161,6 +181,7 @@ COMMANDS
|
|
161
181
|
add - Add a new host to be monitored by the Op5 server
|
162
182
|
add_hostgroups - Add host to a new hostgroup(s)
|
163
183
|
autocomplete - Show instruction on howto setup tab autocomplete for op5util in your shell
|
184
|
+
commit - Commit any pending changes
|
164
185
|
downtime - Schedule fixed downtime for a host
|
165
186
|
help - Shows a list of commands or help for one command
|
166
187
|
hosts - List all hosts, or detailed information about a single host
|
@@ -171,11 +192,10 @@ COMMANDS
|
|
171
192
|
status - Show monitoring status, if no host is given all hosts/services are included
|
172
193
|
```
|
173
194
|
|
174
|
-
###
|
175
|
-
|
176
|
-
To get information about a specific command, use ```op5util help add``` , example below.
|
195
|
+
### Commands, help text example
|
177
196
|
|
178
|
-
```
|
197
|
+
``` text
|
198
|
+
NAME
|
179
199
|
add - Add a new host to be monitored by the Op5 server
|
180
200
|
|
181
201
|
SYNOPSIS
|
@@ -202,18 +222,25 @@ COMMAND OPTIONS
|
|
202
222
|
|
203
223
|
## Roadmap, TODO
|
204
224
|
|
205
|
-
A lot remains, the code really should be DRY'ied up,
|
206
|
-
|
207
|
-
|
208
|
-
administrators?
|
225
|
+
A lot remains, the code really should be refactored and DRY'ied up, the commands probably need
|
226
|
+
some re-thinking, more automated pre-release tests, more documentation and perhaps even
|
227
|
+
adding some more functions, but the current version of op5util is already useful to me
|
228
|
+
in my day-time job, perhaps it also could be useful to other Op5 administrators?
|
209
229
|
|
210
|
-
|
211
|
-
free to leave a bug-reports or feature requests as an issue in this repo.
|
230
|
+
## Contact, bug-reports etc
|
212
231
|
|
213
|
-
|
232
|
+
Please, give my repo a github star or drop me line if you find this utility useful. You can
|
233
|
+
contact me at niklasp@<insert googles mail-service here>.com
|
234
|
+
|
235
|
+
And please feel free to leave bug-reports or feature requests as issues in this repo.
|
214
236
|
|
215
237
|
## Version history
|
216
238
|
|
239
|
+
### 0.1.7
|
240
|
+
|
241
|
+
New command 'commit' that commits any pending/unsaved changes done previously, combined with
|
242
|
+
the option --no-commit on the add_host and add_hostgroup commands.
|
243
|
+
|
217
244
|
### 0.1.6
|
218
245
|
|
219
246
|
New command 'hosts' which lists hosts, included example of ansible playbook
|
@@ -232,13 +259,13 @@ Gemspec filespec corrected to avoid unnecessary large .gem-files.
|
|
232
259
|
Environment variable OP5AUTHFILE possible to use instead of --authfile, check permission
|
233
260
|
of authfile and refuse to start if readable by other than owner.
|
234
261
|
|
235
|
-
##
|
262
|
+
## How op5util may be used with ansible
|
236
263
|
|
237
264
|
Use the example below as a source of inspiration on how op5util can be used from
|
238
265
|
an ansible playbook.
|
239
266
|
|
240
267
|
In this example the variable 'hostgroups', which should be a list, will be used to
|
241
|
-
assign hostgroups, otherwise the default hostgroup 'linux_hosts' will
|
268
|
+
assign hostgroups, otherwise the default hostgroup 'linux_hosts' will be assigned.
|
242
269
|
|
243
270
|
``` yaml
|
244
271
|
---
|
data/bin/op5util
CHANGED
@@ -54,6 +54,9 @@ command :add do |c|
|
|
54
54
|
c.desc 'IP-address of host, resolved with DNS from hostname if not supplied'
|
55
55
|
c.flag [:i, :ipaddr]
|
56
56
|
|
57
|
+
c.desc 'Don\'t commit changes upon exit'
|
58
|
+
c.switch [:n, 'no-commit'.to_sym]
|
59
|
+
|
57
60
|
c.action do |_global_options, options, args|
|
58
61
|
# Your command logic here
|
59
62
|
# If you have any errors, just raise them
|
@@ -69,8 +72,11 @@ command :add_hostgroups do |c|
|
|
69
72
|
c.desc 'Hostgroup(s) that host should be a member of'
|
70
73
|
c.flag [:g, :hostgroups], :multiple => true
|
71
74
|
|
75
|
+
c.desc 'Don\'t commit changes upon exit'
|
76
|
+
c.switch [:n, 'no-commit'.to_sym]
|
77
|
+
|
72
78
|
c.action do |_global_options, options, args|
|
73
|
-
monitor.add_hostgroups(args[0], options[:hostgroups])
|
79
|
+
monitor.add_hostgroups(args[0], options[:hostgroups], options['no-commit'.to_sym])
|
74
80
|
end
|
75
81
|
end
|
76
82
|
|
@@ -100,7 +106,7 @@ command :status do |c|
|
|
100
106
|
c.desc 'Print only a brief status information with stats summarized'
|
101
107
|
c.switch [:s, :short]
|
102
108
|
|
103
|
-
c.desc 'Print a summary with hosts listed and service information per
|
109
|
+
c.desc 'Print a summary with hosts listed and service information per host'
|
104
110
|
c.switch [:l, :long]
|
105
111
|
|
106
112
|
c.action do |_global_options, options, args|
|
@@ -121,7 +127,6 @@ command :acknowledge do |c|
|
|
121
127
|
|
122
128
|
c.desc 'Make comment persistent after problems are resolved'
|
123
129
|
c.switch [:p, :persistent]
|
124
|
-
|
125
130
|
c.desc 'Print more verbose output'
|
126
131
|
c.switch [:v, :verbose]
|
127
132
|
|
@@ -174,6 +179,13 @@ command :autocomplete do |c|
|
|
174
179
|
end
|
175
180
|
end
|
176
181
|
|
182
|
+
desc 'Commit any pending changes'
|
183
|
+
command :commit do |c|
|
184
|
+
c.action do
|
185
|
+
monitor.commit_op5_config
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
177
189
|
pre do |global, _command, _options, _args|
|
178
190
|
global[:authfile] = ENV['OP5AUTHFILE'] if !ENV['OP5AUTHFILE'].nil? && (global[:authfile] == '~/.op5pass')
|
179
191
|
Op5util.check_auth(global) ? true : false
|
data/lib/op5util/add_host.rb
CHANGED
@@ -16,12 +16,7 @@ module Op5util
|
|
16
16
|
headers: { 'Content-Type' => 'application/json' },
|
17
17
|
body: body, basic_auth: @auth, verify: false)
|
18
18
|
raise ApiError, "Response code: #{response.code}, Message: #{response.body}" if response.code != 201
|
19
|
-
|
20
|
-
|
21
|
-
url = @base_uri + 'config/change'
|
22
|
-
response = self.class.post(url, body: {}, basic_auth: @auth, verify: false)
|
23
|
-
raise ApiError, "Response code: #{response.code}, Message: #{response.body}" if response.code != 200
|
24
|
-
puts 'New op5-config saved'
|
19
|
+
commit_op5_config unless options['no-commit'.to_sym]
|
25
20
|
end
|
26
21
|
|
27
22
|
private
|
@@ -5,7 +5,7 @@ module Op5util
|
|
5
5
|
class NoSuchHostError < StandardError; end
|
6
6
|
# Foo
|
7
7
|
class Monitor
|
8
|
-
def add_hostgroups(host, hostgroups)
|
8
|
+
def add_hostgroups(host, hostgroups, no_commit_config)
|
9
9
|
hostgroups.each do |group|
|
10
10
|
members = get_hostgroup_members(group)
|
11
11
|
if !members.grep(host).empty?
|
@@ -16,6 +16,7 @@ module Op5util
|
|
16
16
|
update_hostgroup(group, members)
|
17
17
|
end
|
18
18
|
end
|
19
|
+
commit_op5_config unless no_commit_config
|
19
20
|
end
|
20
21
|
|
21
22
|
private
|
data/lib/op5util/autocomplete.rb
CHANGED
@@ -20,28 +20,28 @@ _op5util()
|
|
20
20
|
|
21
21
|
case "${op5command}" in
|
22
22
|
acknowledge)
|
23
|
-
COMPREPLY=( $(compgen -W "-c --comment=Work_in_Progress -p --persistent --no-persistent -v --verbose --no-verbose
|
23
|
+
COMPREPLY=( $(compgen -W "-c --comment=Work_in_Progress -p --persistent --no-persistent -v --verbose --no-verbose $(op5util hosts)" -- ${cur}) )
|
24
24
|
;;
|
25
25
|
add)
|
26
|
-
COMPREPLY=( $(compgen -W "-a --alias=\" -c --contactgroups=\" -g --hostgroups=\" -i --ipaddr=\" HOST_TO_ADD" -- ${cur}) )
|
26
|
+
COMPREPLY=( $(compgen -W "-a --alias=\" -c --contactgroups=\" -g --hostgroups=\" -i --ipaddr=\" HOST_TO_ADD $(op5util hostgroups)" -- ${cur}) )
|
27
27
|
;;
|
28
28
|
add_hostgroups)
|
29
|
-
COMPREPLY=( $(compgen -W "-g --hostgroup=
|
29
|
+
COMPREPLY=( $(compgen -W "-g --hostgroup= $(op5util hosts)" -- ${cur}) )
|
30
30
|
;;
|
31
31
|
autocomplete)
|
32
32
|
COMPREPLY=( $(compgen -W "ENTER" -- ${cur}) )
|
33
33
|
;;
|
34
34
|
downtime)
|
35
|
-
COMPREPLY=( $(compgen -W "-t --time=n_hour_duration_of_downtime -w --wait=n_hours_before_downtime_start -c --comment=
|
35
|
+
COMPREPLY=( $(compgen -W "-t --time=n_hour_duration_of_downtime -w --wait=n_hours_before_downtime_start -c --comment= $(op5util hosts)" -- ${cur}) )
|
36
36
|
;;
|
37
37
|
hostgroups)
|
38
|
-
COMPREPLY=( $(compgen -W "-l --long
|
38
|
+
COMPREPLY=( $(compgen -W "-l --long $(op5util hostgroups)" -- ${cur}) )
|
39
39
|
;;
|
40
40
|
schedule)
|
41
|
-
COMPREPLY=( $(compgen -W "-v --verbose
|
41
|
+
COMPREPLY=( $(compgen -W "-v --verbose $(op5util hosts)" -- ${cur}) )
|
42
42
|
;;
|
43
43
|
status)
|
44
|
-
COMPREPLY=( $(compgen -W "-l --long -s --short
|
44
|
+
COMPREPLY=( $(compgen -W "-l --long -s --short $(op5util hosts)" -- ${cur}) )
|
45
45
|
;;
|
46
46
|
*)
|
47
47
|
;;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Op5util
|
2
|
+
require 'resolv'
|
3
|
+
class ApiError < StandardError; end
|
4
|
+
# Foo
|
5
|
+
class Monitor
|
6
|
+
def commit_op5_config
|
7
|
+
if pending_changes.empty?
|
8
|
+
puts 'No changes to commit'
|
9
|
+
else
|
10
|
+
do_commit
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def pending_changes
|
17
|
+
url = @base_uri + 'config/change'
|
18
|
+
response = self.class.get(url, basic_auth: @auth, verify: false)
|
19
|
+
raise ApiError, "Response code: #{response.code}, Message: #{response.body}" if response.code != 200
|
20
|
+
JSON.parse!(response.body)
|
21
|
+
end
|
22
|
+
|
23
|
+
def do_commit
|
24
|
+
url = @base_uri + 'config/change'
|
25
|
+
response = self.class.post(url, body: {}, basic_auth: @auth, verify: false)
|
26
|
+
raise ApiError, "Response code: #{response.code}, Message: #{response.body}" if response.code != 200
|
27
|
+
puts 'Op5-config commited'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
data/lib/op5util/version.rb
CHANGED
data/lib/op5util.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: op5util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Niklas Paulsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -127,6 +127,7 @@ files:
|
|
127
127
|
- lib/op5util/add_hostgroups.rb
|
128
128
|
- lib/op5util/autocomplete.rb
|
129
129
|
- lib/op5util/check_auth.rb
|
130
|
+
- lib/op5util/commit.rb
|
130
131
|
- lib/op5util/list_hostgroups.rb
|
131
132
|
- lib/op5util/list_hosts.rb
|
132
133
|
- lib/op5util/method_template.rb
|
@@ -163,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
164
|
version: '0'
|
164
165
|
requirements: []
|
165
166
|
rubyforge_project:
|
166
|
-
rubygems_version: 2.
|
167
|
+
rubygems_version: 2.6.11
|
167
168
|
signing_key:
|
168
169
|
specification_version: 4
|
169
170
|
summary: A utility to do common Op5 administration from the commandline
|