poise-monit 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.kitchen.yml +8 -0
  4. data/.travis.yml +20 -0
  5. data/.yardopts +7 -0
  6. data/Berksfile +29 -0
  7. data/CHANGELOG.md +5 -0
  8. data/Gemfile +35 -0
  9. data/LICENSE +201 -0
  10. data/README.md +242 -0
  11. data/Rakefile +17 -0
  12. data/chef/attributes/default.rb +37 -0
  13. data/chef/recipes/default.rb +22 -0
  14. data/chef/templates/monit.conf.erb +27 -0
  15. data/chef/templates/monit_service.conf.erb +6 -0
  16. data/lib/poise_monit.rb +24 -0
  17. data/lib/poise_monit/cheftie.rb +19 -0
  18. data/lib/poise_monit/error.rb +21 -0
  19. data/lib/poise_monit/monit_providers.rb +36 -0
  20. data/lib/poise_monit/monit_providers/base.rb +173 -0
  21. data/lib/poise_monit/monit_providers/binaries.rb +108 -0
  22. data/lib/poise_monit/monit_providers/dummy.rb +57 -0
  23. data/lib/poise_monit/monit_providers/system.rb +86 -0
  24. data/lib/poise_monit/resources.rb +28 -0
  25. data/lib/poise_monit/resources/monit.rb +238 -0
  26. data/lib/poise_monit/resources/monit_config.rb +111 -0
  27. data/lib/poise_monit/resources/monit_service.rb +194 -0
  28. data/lib/poise_monit/resources/monit_test.rb +127 -0
  29. data/lib/poise_monit/service_providers.rb +26 -0
  30. data/lib/poise_monit/service_providers/monit.rb +124 -0
  31. data/lib/poise_monit/version.rb +20 -0
  32. data/poise-monit.gemspec +46 -0
  33. data/test/cookbooks/poise-monit_test/attributes/default.rb +17 -0
  34. data/test/cookbooks/poise-monit_test/metadata.rb +19 -0
  35. data/test/cookbooks/poise-monit_test/recipes/default.rb +31 -0
  36. data/test/docker/docker.ca +29 -0
  37. data/test/docker/docker.pem +83 -0
  38. data/test/gemfiles/chef-12.gemfile +19 -0
  39. data/test/gemfiles/master.gemfile +24 -0
  40. data/test/integration/default/serverspec/Gemfile +19 -0
  41. data/test/integration/default/serverspec/default_spec.rb +67 -0
  42. data/test/spec/monit_providers/binaries_spec.rb +95 -0
  43. data/test/spec/monit_providers/dummy_spec.rb +52 -0
  44. data/test/spec/monit_providers/system_spec.rb +74 -0
  45. data/test/spec/recipe_spec.rb +40 -0
  46. data/test/spec/resources/monit_config_spec.rb +43 -0
  47. data/test/spec/resources/monit_service_spec.rb +297 -0
  48. data/test/spec/resources/monit_spec.rb +101 -0
  49. data/test/spec/service_providers/monit_spec.rb +58 -0
  50. data/test/spec/spec_helper.rb +19 -0
  51. metadata +182 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 883633f7c6f68cb90937a1e18f9253f18347170f
4
+ data.tar.gz: feff48b4e5d3cf9bbbb592d6098426eccc680312
5
+ SHA512:
6
+ metadata.gz: 31c89f61f10d0f95d9befb1c4d3fed4c80c6fa46b60fd6cf7ed1157c6f8c676cbd2fd605d10eb4f66ea1e0c54b5009b0b74c723224c44d5dbe5056256dc34f2c
7
+ data.tar.gz: a457675618e6e6d4b78cfebaa71bd5bc3d09bcafedf1eb2a1f45f7e6ae017f548d44d0018d317526075cefca90da803eb44a6789e868115888c3d5f4ae7d7e61
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ Berksfile.lock
2
+ Gemfile.lock
3
+ test/gemfiles/*.lock
4
+ .kitchen/
5
+ .kitchen.local.yml
6
+ test/docker/
7
+ coverage/
8
+ pkg/
9
+ .yardoc/
10
+ doc/
11
+
data/.kitchen.yml ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ #<% require 'poise_boiler' %>
3
+ <%= PoiseBoiler.kitchen(platforms: 'linux') %>
4
+
5
+ suites:
6
+ - name: default
7
+ run_list:
8
+ - recipe[poise-monit_test]
data/.travis.yml ADDED
@@ -0,0 +1,20 @@
1
+ ---
2
+ sudo: false
3
+ cache: bundler
4
+ language: ruby
5
+ rvm:
6
+ - '2.2'
7
+ addons:
8
+ apt:
9
+ packages:
10
+ - libgecode-dev
11
+ env:
12
+ global:
13
+ - USE_SYSTEM_GECODE=true
14
+ - secure: l7GLeLWfqrrkxpc1R9gLasQP7W5MKZztoDGtTMs3itwfgmuA+HRuaex8vUDPxVHVKCdzu9Xhr56IqkVkDcXyasIyfNM2PKPW45qNLTx9dxes3ZnovNQgSuULD4YQOgVnJsSpM530zeNh+1j2tTiMrJW/+A0vCDc54L6FqsNu43XYT40wvRNR1q/DodvWhZFzPBJJ4CZSfjvQWdhXlR6r/vnqX7TeS0j8icBhA8V3nbGqT1YqblFYb6zkJTsf+SaV7XoSiprPp1tgaiKniT4wxGsLffkTnbY7biYC+ZnroUfVjxMoQqhl/0soO9bsJ6i6/6jpAFH9jruPDOnTPAXf+noSwJyxymGZZItvieXbTHsc7Pjg0hR0+4QeQEDISgXfLEZ1nyeAriAXyOXvZl36KQ2bCXEpS2x7xhhV2cbNTBB1q0RhfHb9PCKkyFgJF1M/AC3M/H9R7b4js+lKsJCJACpMKuvuiT1l8zxkl1zi7PnIqYFhBFqXZ9wD0/I7hLToehaPWrcCnjZiUfIAsoeV/O6wSqY4PcDRgBqGqaidoj3xNnhmhAGK9vbT1A+jW//QQQZJ2xFbPUvR4ThAk5h2jJEhdzd0YamqUBO2DGaXfp4Hf+VfAlGtDkcpvMf1E6tvJ0kX9l0FTOdAq5HwhDYS7tyJ8nBix9WKnFZbowmHB3Q=
15
+ bundler_args: "--binstubs=$PWD/bin --jobs 3 --retry 3"
16
+ script:
17
+ - "./bin/rake travis"
18
+ gemfile:
19
+ - test/gemfiles/chef-12.gemfile
20
+ - test/gemfiles/master.gemfile
data/.yardopts ADDED
@@ -0,0 +1,7 @@
1
+ --plugin classmethods
2
+ --embed-mixin ClassMethods
3
+ --hide-api private
4
+ --markup markdown
5
+ --hide-void-return
6
+ --tag provides:Provides
7
+ --tag action:Actions
data/Berksfile ADDED
@@ -0,0 +1,29 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ source 'https://supermarket.chef.io/'
18
+ extension 'halite'
19
+
20
+ # Force the rebuild every time for development.
21
+ cookbook 'poise', gem: 'poise'
22
+ cookbook 'poise-languages', gem: 'poise-languages'
23
+ cookbook 'poise-service', gem: 'poise-service'
24
+ cookbook 'poise-monit', gem: 'poise-monit'
25
+
26
+ group :test do
27
+ cookbook 'poise-monit_test', path: 'test/cookbooks/poise-monit_test'
28
+ cookbook 'apt'
29
+ end
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Poise-Monit Changelog
2
+
3
+ ## v1.0.0
4
+
5
+ * Initial release!
data/Gemfile ADDED
@@ -0,0 +1,35 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ source 'https://rubygems.org/'
18
+
19
+ gemspec path: File.expand_path('..', __FILE__)
20
+
21
+ def dev_gem(name, path: File.join('..', name), github: nil)
22
+ path = File.expand_path(File.join('..', path), __FILE__)
23
+ if File.exist?(path)
24
+ gem name, path: path
25
+ elsif github
26
+ gem name, github: github
27
+ end
28
+ end
29
+
30
+ dev_gem 'halite'
31
+ dev_gem 'poise'
32
+ dev_gem 'poise-boiler'
33
+ dev_gem 'poise-languages'
34
+ dev_gem 'poise-service'
35
+
data/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,242 @@
1
+ # Poise-Monit Cookbook
2
+
3
+ [![Build Status](https://img.shields.io/travis/poise/poise-monit.svg)](https://travis-ci.org/poise/poise-monit)
4
+ [![Gem Version](https://img.shields.io/gem/v/poise-monit.svg)](https://rubygems.org/gems/poise-monit)
5
+ [![Cookbook Version](https://img.shields.io/cookbook/v/poise-monit.svg)](https://supermarket.chef.io/cookbooks/poise-monit)
6
+ [![Coverage](https://img.shields.io/codecov/c/github/poise/poise-monit.svg)](https://codecov.io/github/poise/poise-monit)
7
+ [![Gemnasium](https://img.shields.io/gemnasium/poise/poise-monit.svg)](https://gemnasium.com/poise/poise-monit)
8
+ [![License](https://img.shields.io/badge/license-Apache_2-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
9
+
10
+ A [Chef](https://www.chef.io/) cookbook to manage [Monit](https://mmonit.com/monit/).
11
+
12
+ ## Quick Start
13
+
14
+ To install Monit and configure a mail server:
15
+
16
+ ```ruby
17
+ include_recipe 'poise-monit'
18
+
19
+ monit_config 'mailconfig' do
20
+ content <<-EOH
21
+ SET MAILSERVER mail.example.com
22
+ SET ALERT devoops@example.com
23
+ EOH
24
+ end
25
+ ```
26
+
27
+ To create a service managed by Monit with a health check:
28
+
29
+ ```ruby
30
+ poise_service 'apache2' do
31
+ command '/usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND'
32
+ stop_signal 'WINCH'
33
+ reload_signal 'USR1'
34
+ provider :monit
35
+ options :monit, checks: 'if failed host localhost port 80 protocol HTTP request "/" then restart'
36
+ end
37
+ ```
38
+
39
+ ## Recipes
40
+
41
+ * `poise-monit::default` – Install Monit.
42
+
43
+ ## Attributes
44
+
45
+ * `node['poise-monit']['default_recipe']` – Recipe used by the `poise_service`
46
+ provider to install Monit if not already available. *(default: poise-monit)*
47
+ * `node['pose-monit']['provider']` – Default provider for `monit` resource
48
+ instances. *(default: auto)*
49
+ * `node['poise-monit']['recipe'][*]` – All subkeys of `'recipe'` will be passed
50
+ as properties to the `monit` resource before installation.
51
+
52
+ For example, the `poise-monit` recipe can be customized by setting:
53
+
54
+ ```ruby
55
+ override_attributes({
56
+ 'poise-monit' => {
57
+ 'recipe' => {
58
+ 'daemon_interval' => 60,
59
+ 'event_slots' => 0,
60
+ }
61
+ }
62
+ })
63
+ ```
64
+
65
+ ## Resources
66
+
67
+ ### `monit`
68
+
69
+ The `monit` resource installs and configures Monit.
70
+
71
+ ```ruby
72
+ monit 'monit' do
73
+ daemon_interval 60
74
+ event_slots 1000
75
+ end
76
+ ```
77
+
78
+ #### Actions
79
+
80
+ * `:enable` – Install, enable and start Monit. *(default)*
81
+ * `:disable` – Stop, disable, and uninstall Monit.
82
+ * `:start` – Start Monit.
83
+ * `:stop` – Stop Monit.
84
+ * `:restart` – Stop and then start Monit.
85
+ * `:reload` – Send SIGHUP signal to Monit.
86
+
87
+ #### Properties
88
+
89
+ * `service_name` – Name of the Monit instance. *(name attribute)*
90
+ * `daemon_interval` – Number of seconds between service checks. *(default: 120)*
91
+ * `event_slots` – Number of slots in the Monit event buffer. Set to 0 to disable
92
+ event buffering, or -1 for an unlimited queue. *(default: 100)*
93
+ * `httpd_port` – Port to listen on for Monit's HTTPD. If a path is specified, it
94
+ is used as a Unix socket path. If set to nil or false, no HTTPD configuration
95
+ is generated. This may break some other poise-monit resources. *(default:
96
+ /var/run/monit.sock if the version of Monit supports it, otherwise 2812)*
97
+ * `httpd_password` – Cleartext password for authentication between the Monit
98
+ daemon and CLI. Set to nil or false to disable authentication. *(default: nil
99
+ for Unix socket connections, otherwise auto-generated)*
100
+ * `httpd_username` – Username for authentication between the Monit daemon and
101
+ CLI. *(default: cli)*
102
+ * `group` – System group to deploy Monit as.
103
+ * `logfile` – Path to the Monit log file. *(default: /var/log/monit.log)*
104
+ * `owner` – System user to deploy Monit as.
105
+ * `path` – Path to the Monit configuration directory. *(default: /etc/monit)*
106
+ * `pidfile` – Path to the Monit PID file. *(default: /var/run/monit.pid)*
107
+ * `var_path` – Path the Monit state directory. *(default: /var/lib/monit)*
108
+ * `version` – Version of Monit to install.
109
+
110
+ #### Provider Options
111
+
112
+ The `monit` resource uses provide options for per-provider configuration. See
113
+ [the poise-service documentation](https://github.com/poise/poise-service#service-options)
114
+ for more information on using provider options.
115
+
116
+ ### `monit_config`
117
+
118
+ The `monit_config` resource writes out a Monit configuration file to the
119
+ `conf.d/` directory.
120
+
121
+ ```ruby
122
+ monit_config 'ssh' do
123
+ source 'monit_ssh.conf.erb'
124
+ variables threshold: 5
125
+ end
126
+ ```
127
+
128
+ #### Actions
129
+
130
+ * `:create` – Create and manage the configuration file. *(default)*
131
+ * `:delete` – Delete the configuration file.
132
+
133
+ #### Properties
134
+
135
+ * `config_name` – Name of the configuration file. *(name attribute)*
136
+ * `content` – File content to write.
137
+ * `cookbook` – Cookbook to search for `source` in.
138
+ * `parent` – Name or reference for the parent `monit` resource. *(required, default: automatic)*
139
+ * `path` – Path to the configuration file. *(default: automatic)*
140
+ * `source` – Template path to render.
141
+ * `variables` – Template variables.
142
+
143
+ One of `source` or `content` is required.
144
+
145
+ ## Monit Providers
146
+
147
+ ### `binaries`
148
+
149
+ The `binaries_bitbucket` provider supports installing Monit from static binaries
150
+ mirrored to BitBucket. This is the default provider if you are installing on an
151
+ OS that has binaries available.
152
+
153
+ ```ruby
154
+ monit 'monit' do
155
+ provider :binaries
156
+ end
157
+ ```
158
+
159
+ *NOTE:* If BitBucket is unavailable you can set the `url` provider option to
160
+ `https://mmonit.com/monit/dist/binary/%{version}/monit-%{version}-%{machine_label}.tar.gz`
161
+ to use downloads directly from `mmonit.com`, however this server has a relatively
162
+ strict download quota system so this is not recommended.
163
+
164
+ #### Provider Options
165
+
166
+ * `path` – Path to install Monit to. *(default: /opt/monit-<version>)*
167
+ * `retries` – Number of times to retry failed downloads. *(default: 5)*
168
+ * `static_version` – Full version number for use in interpolation. *(default: automatic)*
169
+ * `strip_components` – Value to pass to tar --strip-components. *(default: 1)*
170
+ * `url` – URL template to download from. *(default: `https://bitbucket.org/tildeslash/monit/downloads/monit-%{version}-%{machine_label}.tar.gz`)*
171
+
172
+ ### `system`
173
+
174
+ The `system` provider supports installing Monit from system packages. This
175
+ requires EPEL for RHEL/CentOS as they do not ship Monit in the base OS
176
+ repositories. Because this is not a default provider, EPEL is *not* a dependency
177
+ of this cookbook, you will have to add it to your run list or as a dependency of
178
+ a wrapper cookbook.
179
+
180
+ ```ruby
181
+ monit 'monit' do
182
+ provider :system
183
+ end
184
+ ```
185
+
186
+ #### Provider Options
187
+
188
+ * `no_epel` – Do not try to enable EPEL on EL nodes. *(default: false)*
189
+ * `package` – Package name to install. *(default: monit)*
190
+
191
+ ### `dummy`
192
+
193
+ The `dummy` provider supports using the `monit` resource with ChefSpec or other
194
+ testing frameworks to not actually install Monit. It is used by default under
195
+ ChefSpec.
196
+
197
+ ```ruby
198
+ monit 'monit' do
199
+ provider :dummy
200
+ end
201
+ ```
202
+
203
+ ## Service Provider
204
+
205
+ The `monit` service provider is included to allow [`poise_service` resources](https://github.com/poise/poise-service)
206
+ to use Monit as the service manager. This uses the normal `sysvinit` provider
207
+ from `poise-service` to generate the init scripts, but manages service state
208
+ through Monit.
209
+
210
+ ```ruby
211
+ poise_service 'apache2' do
212
+ command '/usr/sbin/apache2 -f /etc/apache2/apache2.conf -DFOREGROUND'
213
+ stop_signal 'WINCH'
214
+ reload_signal 'USR1'
215
+ provider :monit
216
+ options :monit, checks: 'if failed host localhost port 80 protocol HTTP request "/" then restart'
217
+ end
218
+ ```
219
+
220
+ To set the `monit` provider as the global default, use [`poise-sevice-monit`](https://github.com/poise/poise-service-monit).
221
+
222
+ ## Sponsors
223
+
224
+ Development sponsored by [Bloomberg](http://www.bloomberg.com/company/technology/).
225
+
226
+ The Poise test server infrastructure is sponsored by [Rackspace](https://rackspace.com/).
227
+
228
+ ## License
229
+
230
+ Copyright 2015, Noah Kantrowitz
231
+
232
+ Licensed under the Apache License, Version 2.0 (the "License");
233
+ you may not use this file except in compliance with the License.
234
+ You may obtain a copy of the License at
235
+
236
+ http://www.apache.org/licenses/LICENSE-2.0
237
+
238
+ Unless required by applicable law or agreed to in writing, software
239
+ distributed under the License is distributed on an "AS IS" BASIS,
240
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
241
+ See the License for the specific language governing permissions and
242
+ limitations under the License.