cloud-mu 1.9.0.pre.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. checksums.yaml +7 -0
  2. data/Berksfile +56 -0
  3. data/Berksfile.lock +250 -0
  4. data/Jenkinsfile +184 -0
  5. data/LICENSE.md +37 -0
  6. data/README.md +26 -0
  7. data/bin/mu-aws-setup +376 -0
  8. data/bin/mu-cleanup +68 -0
  9. data/bin/mu-configure +1133 -0
  10. data/bin/mu-deploy +166 -0
  11. data/bin/mu-firewall-allow-clients +30 -0
  12. data/bin/mu-gcp-setup +200 -0
  13. data/bin/mu-gen-docs +34 -0
  14. data/bin/mu-gen-env +42 -0
  15. data/bin/mu-load-config.rb +158 -0
  16. data/bin/mu-node-manage +683 -0
  17. data/bin/mu-self-update +228 -0
  18. data/bin/mu-ssh +23 -0
  19. data/bin/mu-tunnel-nagios +144 -0
  20. data/bin/mu-upload-chef-artifacts +757 -0
  21. data/bin/mu-user-manage +275 -0
  22. data/cookbooks/awscli/LICENSE +37 -0
  23. data/cookbooks/awscli/README.md +58 -0
  24. data/cookbooks/awscli/attributes/default.rb +1 -0
  25. data/cookbooks/awscli/libraries/instance_metadata.rb +21 -0
  26. data/cookbooks/awscli/metadata.rb +20 -0
  27. data/cookbooks/awscli/recipes/default.rb +56 -0
  28. data/cookbooks/awscli/templates/default/config.erb +18 -0
  29. data/cookbooks/mu-activedirectory/CHANGELOG.md +13 -0
  30. data/cookbooks/mu-activedirectory/LICENSE +37 -0
  31. data/cookbooks/mu-activedirectory/README.md +6 -0
  32. data/cookbooks/mu-activedirectory/attributes/default.rb +98 -0
  33. data/cookbooks/mu-activedirectory/files/default/password-auth +32 -0
  34. data/cookbooks/mu-activedirectory/files/default/sshd_pol.pp +0 -0
  35. data/cookbooks/mu-activedirectory/files/default/sshd_pol.te +32 -0
  36. data/cookbooks/mu-activedirectory/files/default/syslogd_oddjobd.pp +0 -0
  37. data/cookbooks/mu-activedirectory/files/default/syslogd_oddjobd.te +10 -0
  38. data/cookbooks/mu-activedirectory/files/default/system-auth +34 -0
  39. data/cookbooks/mu-activedirectory/files/default/winbindpol.pp +0 -0
  40. data/cookbooks/mu-activedirectory/files/default/winbindpol.te +37 -0
  41. data/cookbooks/mu-activedirectory/libraries/config.rb +106 -0
  42. data/cookbooks/mu-activedirectory/libraries/helper.rb +86 -0
  43. data/cookbooks/mu-activedirectory/metadata.rb +17 -0
  44. data/cookbooks/mu-activedirectory/providers/domain.rb +152 -0
  45. data/cookbooks/mu-activedirectory/providers/domain_controller.rb +89 -0
  46. data/cookbooks/mu-activedirectory/providers/domain_node.rb +275 -0
  47. data/cookbooks/mu-activedirectory/recipes/default.rb +8 -0
  48. data/cookbooks/mu-activedirectory/recipes/domain-controller.rb +44 -0
  49. data/cookbooks/mu-activedirectory/recipes/domain-node.rb +50 -0
  50. data/cookbooks/mu-activedirectory/recipes/domain.rb +43 -0
  51. data/cookbooks/mu-activedirectory/recipes/sssd.rb +185 -0
  52. data/cookbooks/mu-activedirectory/resources/domain.rb +25 -0
  53. data/cookbooks/mu-activedirectory/resources/domain_controller.rb +25 -0
  54. data/cookbooks/mu-activedirectory/resources/domain_node.rb +20 -0
  55. data/cookbooks/mu-activedirectory/templates/default/dhclient-eth0.conf.erb +4 -0
  56. data/cookbooks/mu-activedirectory/templates/default/interface +0 -0
  57. data/cookbooks/mu-activedirectory/templates/default/krb5.conf.erb +23 -0
  58. data/cookbooks/mu-activedirectory/templates/default/ntp.conf.erb +56 -0
  59. data/cookbooks/mu-activedirectory/templates/default/smb.conf.erb +33 -0
  60. data/cookbooks/mu-activedirectory/templates/default/sssd.conf.erb +60 -0
  61. data/cookbooks/mu-activedirectory/templates/windows/Backup.xml.erb +20 -0
  62. data/cookbooks/mu-activedirectory/templates/windows/bkupInfo.xml.erb +1 -0
  63. data/cookbooks/mu-activedirectory/templates/windows/gpreprt.xml.erb +198 -0
  64. data/cookbooks/mu-activedirectory/templates/windows/gptmpl.inf.erb +12 -0
  65. data/cookbooks/mu-activedirectory/templates/windows/manifest.xml.erb +1 -0
  66. data/cookbooks/mu-firewall/CHANGELOG.md +11 -0
  67. data/cookbooks/mu-firewall/LICENSE +37 -0
  68. data/cookbooks/mu-firewall/README.md +5 -0
  69. data/cookbooks/mu-firewall/attributes/default.rb +3 -0
  70. data/cookbooks/mu-firewall/metadata.rb +16 -0
  71. data/cookbooks/mu-firewall/recipes/default.rb +10 -0
  72. data/cookbooks/mu-glusterfs/CHANGELOG.md +13 -0
  73. data/cookbooks/mu-glusterfs/LICENSE +37 -0
  74. data/cookbooks/mu-glusterfs/README.md +5 -0
  75. data/cookbooks/mu-glusterfs/attributes/default.rb +34 -0
  76. data/cookbooks/mu-glusterfs/metadata.rb +17 -0
  77. data/cookbooks/mu-glusterfs/recipes/client.rb +62 -0
  78. data/cookbooks/mu-glusterfs/recipes/default.rb +16 -0
  79. data/cookbooks/mu-glusterfs/recipes/samba.rb +57 -0
  80. data/cookbooks/mu-glusterfs/recipes/server.rb +200 -0
  81. data/cookbooks/mu-glusterfs/templates/default/mu-gluster-client.erb +71 -0
  82. data/cookbooks/mu-glusterfs/templates/default/smb.conf.erb +14 -0
  83. data/cookbooks/mu-jenkins/CHANGELOG.md +13 -0
  84. data/cookbooks/mu-jenkins/LICENSE +37 -0
  85. data/cookbooks/mu-jenkins/README.md +105 -0
  86. data/cookbooks/mu-jenkins/attributes/default.rb +42 -0
  87. data/cookbooks/mu-jenkins/files/default/cleanup_deploy_config.xml +73 -0
  88. data/cookbooks/mu-jenkins/files/default/deploy_config.xml +44 -0
  89. data/cookbooks/mu-jenkins/metadata.rb +21 -0
  90. data/cookbooks/mu-jenkins/recipes/default.rb +195 -0
  91. data/cookbooks/mu-jenkins/recipes/node-ssh-config.rb +54 -0
  92. data/cookbooks/mu-jenkins/recipes/public_key.rb +24 -0
  93. data/cookbooks/mu-jenkins/templates/default/example_job.config.xml.erb +24 -0
  94. data/cookbooks/mu-jenkins/templates/default/org.jvnet.hudson.plugins.SSHBuildWrapper.xml.erb +14 -0
  95. data/cookbooks/mu-jenkins/templates/default/ssh_config.erb +6 -0
  96. data/cookbooks/mu-master/CHANGELOG.md +13 -0
  97. data/cookbooks/mu-master/LICENSE +37 -0
  98. data/cookbooks/mu-master/README.md +6 -0
  99. data/cookbooks/mu-master/attributes/default.rb +95 -0
  100. data/cookbooks/mu-master/files/default/0-mu-log-server.conf +19 -0
  101. data/cookbooks/mu-master/files/default/addRSA.ldif +8 -0
  102. data/cookbooks/mu-master/files/default/check_mem.pl +197 -0
  103. data/cookbooks/mu-master/files/default/cloudamatic.png +0 -0
  104. data/cookbooks/mu-master/files/default/dirsrv_admin.pp +0 -0
  105. data/cookbooks/mu-master/files/default/dirsrv_admin.te +13 -0
  106. data/cookbooks/mu-master/files/default/nagios_selinux.pp +0 -0
  107. data/cookbooks/mu-master/files/default/nagios_selinux.te +51 -0
  108. data/cookbooks/mu-master/files/default/nagios_selinux_7.pp +0 -0
  109. data/cookbooks/mu-master/files/default/nagios_selinux_7.te +17 -0
  110. data/cookbooks/mu-master/files/default/pam_sshd +18 -0
  111. data/cookbooks/mu-master/files/default/ssl_enable.ldif +18 -0
  112. data/cookbooks/mu-master/files/default/syslogd_oddjobd.pp +0 -0
  113. data/cookbooks/mu-master/files/default/syslogd_oddjobd.te +10 -0
  114. data/cookbooks/mu-master/files/default/vimrc +19 -0
  115. data/cookbooks/mu-master/libraries/mu.rb +29 -0
  116. data/cookbooks/mu-master/metadata.rb +30 -0
  117. data/cookbooks/mu-master/providers/user.rb +41 -0
  118. data/cookbooks/mu-master/recipes/389ds.rb +164 -0
  119. data/cookbooks/mu-master/recipes/basepackages.rb +58 -0
  120. data/cookbooks/mu-master/recipes/caching_nameserver.rb +37 -0
  121. data/cookbooks/mu-master/recipes/default.rb +451 -0
  122. data/cookbooks/mu-master/recipes/eks-kubectl.rb +41 -0
  123. data/cookbooks/mu-master/recipes/firewall-holes.rb +70 -0
  124. data/cookbooks/mu-master/recipes/init.rb +542 -0
  125. data/cookbooks/mu-master/recipes/ssl-certs.rb +109 -0
  126. data/cookbooks/mu-master/recipes/sssd.rb +89 -0
  127. data/cookbooks/mu-master/recipes/update_nagios_only.rb +242 -0
  128. data/cookbooks/mu-master/recipes/vault.rb +111 -0
  129. data/cookbooks/mu-master/resources/user.rb +19 -0
  130. data/cookbooks/mu-master/templates/default/389-directory-setup.inf.erb +28 -0
  131. data/cookbooks/mu-master/templates/default/chef-server.rb.erb +18 -0
  132. data/cookbooks/mu-master/templates/default/dhclient-eth0.conf.erb +9 -0
  133. data/cookbooks/mu-master/templates/default/mu-momma-cat.erb +149 -0
  134. data/cookbooks/mu-master/templates/default/mu.rc.erb +9 -0
  135. data/cookbooks/mu-master/templates/default/openssl.cnf.erb +354 -0
  136. data/cookbooks/mu-master/templates/default/sssd.conf.erb +44 -0
  137. data/cookbooks/mu-master/templates/default/web_app.conf.erb +90 -0
  138. data/cookbooks/mu-mongo/CHANGELOG.md +13 -0
  139. data/cookbooks/mu-mongo/LICENSE +37 -0
  140. data/cookbooks/mu-mongo/README.md +5 -0
  141. data/cookbooks/mu-mongo/attributes/default.rb +22 -0
  142. data/cookbooks/mu-mongo/files/default/keyfile +16 -0
  143. data/cookbooks/mu-mongo/files/default/remove_nodes.js +5 -0
  144. data/cookbooks/mu-mongo/metadata.rb +17 -0
  145. data/cookbooks/mu-mongo/recipes/default.rb +149 -0
  146. data/cookbooks/mu-mongo/recipes/yum-update-rule.rb +18 -0
  147. data/cookbooks/mu-mongo/templates/default/mongo_create_openfema_db.js.erb +2 -0
  148. data/cookbooks/mu-mongo/templates/default/mongo_init.js.erb +1 -0
  149. data/cookbooks/mu-mongo/templates/default/mongo_logrotate.erb +14 -0
  150. data/cookbooks/mu-mongo/templates/default/mongo_replset_addnodes.js.erb +6 -0
  151. data/cookbooks/mu-mongo/templates/default/replset_init.js.erb +2 -0
  152. data/cookbooks/mu-openvpn/CHANGELOG.md +13 -0
  153. data/cookbooks/mu-openvpn/LICENSE +37 -0
  154. data/cookbooks/mu-openvpn/README.md +6 -0
  155. data/cookbooks/mu-openvpn/attributes/default.rb +119 -0
  156. data/cookbooks/mu-openvpn/metadata.rb +18 -0
  157. data/cookbooks/mu-openvpn/recipes/default.rb +108 -0
  158. data/cookbooks/mu-openvpn/templates/default/users.json.erb +42 -0
  159. data/cookbooks/mu-php54/CHANGELOG.md +12 -0
  160. data/cookbooks/mu-php54/LICENSE +37 -0
  161. data/cookbooks/mu-php54/README.md +0 -0
  162. data/cookbooks/mu-php54/files/centos/php.ini +1802 -0
  163. data/cookbooks/mu-php54/files/ubuntu/php.ini +1870 -0
  164. data/cookbooks/mu-php54/metadata.rb +21 -0
  165. data/cookbooks/mu-php54/recipes/default.rb +97 -0
  166. data/cookbooks/mu-splunk/CHANGELOG.md +37 -0
  167. data/cookbooks/mu-splunk/LICENSE +37 -0
  168. data/cookbooks/mu-splunk/README.md +451 -0
  169. data/cookbooks/mu-splunk/attributes/default.rb +95 -0
  170. data/cookbooks/mu-splunk/attributes/upgrade.rb +49 -0
  171. data/cookbooks/mu-splunk/definitions/splunk_installer.rb +103 -0
  172. data/cookbooks/mu-splunk/files/default/splunk-nocheck +10 -0
  173. data/cookbooks/mu-splunk/libraries/helpers.rb +72 -0
  174. data/cookbooks/mu-splunk/libraries/splunk_app_provider.rb +156 -0
  175. data/cookbooks/mu-splunk/libraries/splunk_app_resource.rb +43 -0
  176. data/cookbooks/mu-splunk/metadata.json +30 -0
  177. data/cookbooks/mu-splunk/metadata.rb +17 -0
  178. data/cookbooks/mu-splunk/recipes/client.rb +143 -0
  179. data/cookbooks/mu-splunk/recipes/default.rb +31 -0
  180. data/cookbooks/mu-splunk/recipes/disabled.rb +41 -0
  181. data/cookbooks/mu-splunk/recipes/install_forwarder.rb +23 -0
  182. data/cookbooks/mu-splunk/recipes/install_server.rb +23 -0
  183. data/cookbooks/mu-splunk/recipes/server.rb +53 -0
  184. data/cookbooks/mu-splunk/recipes/service.rb +95 -0
  185. data/cookbooks/mu-splunk/recipes/setup_auth.rb +49 -0
  186. data/cookbooks/mu-splunk/recipes/setup_ssl.rb +63 -0
  187. data/cookbooks/mu-splunk/recipes/upgrade.rb +94 -0
  188. data/cookbooks/mu-splunk/recipes/user.rb +34 -0
  189. data/cookbooks/mu-splunk/templates/default/base_logs_unix_inputs.conf.erb +26 -0
  190. data/cookbooks/mu-splunk/templates/default/inputs.conf.erb +13 -0
  191. data/cookbooks/mu-splunk/templates/default/outputs.conf.erb +9 -0
  192. data/cookbooks/mu-splunk/templates/default/splunk-init.erb +74 -0
  193. data/cookbooks/mu-splunk/templates/default/system-web.conf.erb +7 -0
  194. data/cookbooks/mu-tools/CHANGELOG.md +12 -0
  195. data/cookbooks/mu-tools/LICENSE +37 -0
  196. data/cookbooks/mu-tools/README.md +188 -0
  197. data/cookbooks/mu-tools/attributes/default.rb +142 -0
  198. data/cookbooks/mu-tools/attributes/ebs_rolling_snapshots.rb +3 -0
  199. data/cookbooks/mu-tools/files/amazon/etc/freshclam.conf +235 -0
  200. data/cookbooks/mu-tools/files/centos/CentOS-Base.repo +52 -0
  201. data/cookbooks/mu-tools/files/centos/etc/bashrc +93 -0
  202. data/cookbooks/mu-tools/files/centos/etc/freshclam.conf +235 -0
  203. data/cookbooks/mu-tools/files/centos/etc/login.defs +72 -0
  204. data/cookbooks/mu-tools/files/centos/etc/profile +77 -0
  205. data/cookbooks/mu-tools/files/centos/etc/security/limits.conf +57 -0
  206. data/cookbooks/mu-tools/files/centos/etc/sysconfig/init +19 -0
  207. data/cookbooks/mu-tools/files/centos/etc/sysctl.conf +82 -0
  208. data/cookbooks/mu-tools/files/centos-6/README_MU +0 -0
  209. data/cookbooks/mu-tools/files/centos-6/etc/audit/stig.rules +173 -0
  210. data/cookbooks/mu-tools/files/centos-6/etc/bashrc +90 -0
  211. data/cookbooks/mu-tools/files/centos-6/etc/login.defs +70 -0
  212. data/cookbooks/mu-tools/files/centos-6/etc/pam.d/su +12 -0
  213. data/cookbooks/mu-tools/files/centos-6/etc/profile +83 -0
  214. data/cookbooks/mu-tools/files/centos-6/etc/securetty +12 -0
  215. data/cookbooks/mu-tools/files/centos-6/etc/sysconfig/init +30 -0
  216. data/cookbooks/mu-tools/files/centos-6/etc/sysctl.conf +40 -0
  217. data/cookbooks/mu-tools/files/default/Mu_CA.pem +34 -0
  218. data/cookbooks/mu-tools/files/default/PSWindowsUpdate.zip +0 -0
  219. data/cookbooks/mu-tools/files/default/ebs_snapshots.py +123 -0
  220. data/cookbooks/mu-tools/files/default/etc/BANNER +0 -0
  221. data/cookbooks/mu-tools/files/default/etc/BANNER-FEDERAL +19 -0
  222. data/cookbooks/mu-tools/files/default/gpo_no_uac.zip +0 -0
  223. data/cookbooks/mu-tools/files/default/mypol.pp +0 -0
  224. data/cookbooks/mu-tools/files/default/mypol.te +37 -0
  225. data/cookbooks/mu-tools/files/default/nrpe_c7.pp +0 -0
  226. data/cookbooks/mu-tools/files/default/nrpe_c7.te +31 -0
  227. data/cookbooks/mu-tools/files/default/nrpe_check_disk.pp +0 -0
  228. data/cookbooks/mu-tools/files/default/nrpe_check_disk.te +11 -0
  229. data/cookbooks/mu-tools/files/default/nrpe_disk.pp +0 -0
  230. data/cookbooks/mu-tools/files/default/nrpe_disk.te +10 -0
  231. data/cookbooks/mu-tools/files/default/nrpe_file.pp +0 -0
  232. data/cookbooks/mu-tools/files/default/nrpe_file.te +31 -0
  233. data/cookbooks/mu-tools/files/default/ntrights +0 -0
  234. data/cookbooks/mu-tools/files/default/serverclass.conf +18 -0
  235. data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_unix/local/app.conf +1 -0
  236. data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_unix/local/inputs.conf +13 -0
  237. data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_windows/local/app.conf +1 -0
  238. data/cookbooks/mu-tools/files/default/splunk-apps/base_logs_windows/local/inputs.conf +8 -0
  239. data/cookbooks/mu-tools/files/default/sshd_pol.pp +0 -0
  240. data/cookbooks/mu-tools/files/default/sshd_pol.te +32 -0
  241. data/cookbooks/mu-tools/files/redhat/etc/bashrc +93 -0
  242. data/cookbooks/mu-tools/files/redhat/etc/freshclam.conf +235 -0
  243. data/cookbooks/mu-tools/files/redhat/etc/login.defs +72 -0
  244. data/cookbooks/mu-tools/files/redhat/etc/profile +77 -0
  245. data/cookbooks/mu-tools/files/redhat/etc/security/limits.conf +57 -0
  246. data/cookbooks/mu-tools/files/redhat/etc/sysconfig/init +19 -0
  247. data/cookbooks/mu-tools/files/redhat/etc/sysctl.conf +82 -0
  248. data/cookbooks/mu-tools/files/redhat-6/README_MU +0 -0
  249. data/cookbooks/mu-tools/files/redhat-6/etc/audit/stig.rules +173 -0
  250. data/cookbooks/mu-tools/files/redhat-6/etc/bashrc +90 -0
  251. data/cookbooks/mu-tools/files/redhat-6/etc/login.defs +70 -0
  252. data/cookbooks/mu-tools/files/redhat-6/etc/pam.d/su +12 -0
  253. data/cookbooks/mu-tools/files/redhat-6/etc/profile +83 -0
  254. data/cookbooks/mu-tools/files/redhat-6/etc/securetty +12 -0
  255. data/cookbooks/mu-tools/files/redhat-6/etc/sysconfig/init +30 -0
  256. data/cookbooks/mu-tools/files/redhat-6/etc/sysctl.conf +40 -0
  257. data/cookbooks/mu-tools/files/redhat-7.1/etc/freshclam.conf +235 -0
  258. data/cookbooks/mu-tools/files/ubuntu-12.04/etc/bash.bashrc +64 -0
  259. data/cookbooks/mu-tools/files/ubuntu-12.04/etc/common-session +30 -0
  260. data/cookbooks/mu-tools/files/ubuntu-12.04/etc/login.defs +338 -0
  261. data/cookbooks/mu-tools/files/ubuntu-12.04/etc/profile +30 -0
  262. data/cookbooks/mu-tools/files/ubuntu-12.04/etc/security/limits.conf +56 -0
  263. data/cookbooks/mu-tools/files/ubuntu-12.04/etc/sysctl.conf +60 -0
  264. data/cookbooks/mu-tools/libraries/helper.rb +292 -0
  265. data/cookbooks/mu-tools/metadata.rb +28 -0
  266. data/cookbooks/mu-tools/recipes/add_admin_ssh_keys.rb +35 -0
  267. data/cookbooks/mu-tools/recipes/apply_security.rb +440 -0
  268. data/cookbooks/mu-tools/recipes/aws_api.rb +23 -0
  269. data/cookbooks/mu-tools/recipes/base_repositories.rb +31 -0
  270. data/cookbooks/mu-tools/recipes/cisbenchmark.rb +59 -0
  271. data/cookbooks/mu-tools/recipes/clamav.rb +53 -0
  272. data/cookbooks/mu-tools/recipes/cloudinit.rb +58 -0
  273. data/cookbooks/mu-tools/recipes/configure_oracle_tools.rb +81 -0
  274. data/cookbooks/mu-tools/recipes/disable-requiretty.rb +22 -0
  275. data/cookbooks/mu-tools/recipes/ebs_rolling_snapshots.rb +75 -0
  276. data/cookbooks/mu-tools/recipes/efs.rb +70 -0
  277. data/cookbooks/mu-tools/recipes/eks.rb +160 -0
  278. data/cookbooks/mu-tools/recipes/gcloud.rb +98 -0
  279. data/cookbooks/mu-tools/recipes/google_api.rb +25 -0
  280. data/cookbooks/mu-tools/recipes/maldet.rb +67 -0
  281. data/cookbooks/mu-tools/recipes/nagios.rb +19 -0
  282. data/cookbooks/mu-tools/recipes/newclient.rb +23 -0
  283. data/cookbooks/mu-tools/recipes/nrpe.rb +115 -0
  284. data/cookbooks/mu-tools/recipes/python_pip.rb +35 -0
  285. data/cookbooks/mu-tools/recipes/retrieve_application.rb +51 -0
  286. data/cookbooks/mu-tools/recipes/rsyslog.rb +65 -0
  287. data/cookbooks/mu-tools/recipes/set_local_fw.rb +57 -0
  288. data/cookbooks/mu-tools/recipes/set_mu_hostname.rb +81 -0
  289. data/cookbooks/mu-tools/recipes/split_var_partitions.rb +86 -0
  290. data/cookbooks/mu-tools/recipes/splunk-client.rb +69 -0
  291. data/cookbooks/mu-tools/recipes/splunk-server.rb +104 -0
  292. data/cookbooks/mu-tools/recipes/store_inspec_attr.rb +8 -0
  293. data/cookbooks/mu-tools/recipes/updates.rb +96 -0
  294. data/cookbooks/mu-tools/recipes/windows-client.rb +202 -0
  295. data/cookbooks/mu-tools/resources/aws_windows.rb +33 -0
  296. data/cookbooks/mu-tools/resources/disk.rb +88 -0
  297. data/cookbooks/mu-tools/resources/mommacat_request.rb +11 -0
  298. data/cookbooks/mu-tools/resources/scheduled_tasks.rb +29 -0
  299. data/cookbooks/mu-tools/resources/sshd_service.rb +45 -0
  300. data/cookbooks/mu-tools/resources/windows_users.rb +242 -0
  301. data/cookbooks/mu-tools/templates/amazon/sshd_config.erb +168 -0
  302. data/cookbooks/mu-tools/templates/centos-6/sshd_config.erb +212 -0
  303. data/cookbooks/mu-tools/templates/centos-7/sshd_config.erb +215 -0
  304. data/cookbooks/mu-tools/templates/default/0-mu-log-client.conf.erb +13 -0
  305. data/cookbooks/mu-tools/templates/default/conf.maldet.erb +137 -0
  306. data/cookbooks/mu-tools/templates/default/etc_hosts.erb +30 -0
  307. data/cookbooks/mu-tools/templates/default/etc_pamd_password-auth.erb +14 -0
  308. data/cookbooks/mu-tools/templates/default/etc_pamd_system-auth.erb +14 -0
  309. data/cookbooks/mu-tools/templates/default/etc_sysconfig_network.erb +12 -0
  310. data/cookbooks/mu-tools/templates/default/kubeconfig.erb +29 -0
  311. data/cookbooks/mu-tools/templates/default/kubelet.service.erb +35 -0
  312. data/cookbooks/mu-tools/templates/default/maldet_scanall.sh.erb +15 -0
  313. data/cookbooks/mu-tools/templates/default/nrpe.cfg.erb +233 -0
  314. data/cookbooks/mu-tools/templates/redhat-6/sshd_config.erb +213 -0
  315. data/cookbooks/mu-tools/templates/redhat-7/sshd_config.erb +215 -0
  316. data/cookbooks/mu-tools/templates/ubuntu-12.04/sshd_config.erb +146 -0
  317. data/cookbooks/mu-tools/templates/ubuntu-14.04/sshd_config.erb +145 -0
  318. data/cookbooks/mu-tools/templates/windows/Backup.xml.erb +20 -0
  319. data/cookbooks/mu-tools/templates/windows/bkupInfo.xml.erb +1 -0
  320. data/cookbooks/mu-tools/templates/windows/gpreprt.xml.erb +214 -0
  321. data/cookbooks/mu-tools/templates/windows/gptmpl.inf.erb +12 -0
  322. data/cookbooks/mu-tools/templates/windows/manifest.xml.erb +1 -0
  323. data/cookbooks/mu-tools/templates/windows/set_ad_dns_scheduled_task.ps1.erb +6 -0
  324. data/cookbooks/mu-tools/templates/windows/sshd_config.erb +136 -0
  325. data/cookbooks/mu-utility/CHANGELOG.md +12 -0
  326. data/cookbooks/mu-utility/LICENSE +37 -0
  327. data/cookbooks/mu-utility/README.md +6 -0
  328. data/cookbooks/mu-utility/attributes/default.rb +1 -0
  329. data/cookbooks/mu-utility/libraries/matchers.rb +21 -0
  330. data/cookbooks/mu-utility/metadata.rb +16 -0
  331. data/cookbooks/mu-utility/recipes/apt.rb +23 -0
  332. data/cookbooks/mu-utility/recipes/cleanup_image_helper.rb +118 -0
  333. data/cookbooks/mu-utility/recipes/iptables.rb +26 -0
  334. data/cookbooks/mu-utility/recipes/luks.rb +18 -0
  335. data/cookbooks/mu-utility/recipes/nat.rb +104 -0
  336. data/cookbooks/mu-utility/recipes/php.rb +33 -0
  337. data/cookbooks/mu-utility/recipes/rdp_gateway.rb +83 -0
  338. data/cookbooks/mu-utility/recipes/remi.rb +44 -0
  339. data/cookbooks/mu-utility/recipes/vim.rb +26 -0
  340. data/cookbooks/mu-utility/recipes/windows_basics.rb +37 -0
  341. data/cookbooks/mu-utility/recipes/zip.rb +26 -0
  342. data/cookbooks/mu-utility/templates/default/BundleConfig.xml.erb +34 -0
  343. data/cookbooks/mu-utility/templates/default/config.xml.erb +60 -0
  344. data/cookbooks/nagios/Berksfile +8 -0
  345. data/cookbooks/nagios/CHANGELOG.md +589 -0
  346. data/cookbooks/nagios/CONTRIBUTING.md +11 -0
  347. data/cookbooks/nagios/LICENSE +37 -0
  348. data/cookbooks/nagios/README.md +328 -0
  349. data/cookbooks/nagios/TESTING.md +2 -0
  350. data/cookbooks/nagios/attributes/config.rb +171 -0
  351. data/cookbooks/nagios/attributes/default.rb +228 -0
  352. data/cookbooks/nagios/chefignore +102 -0
  353. data/cookbooks/nagios/definitions/command.rb +33 -0
  354. data/cookbooks/nagios/definitions/contact.rb +33 -0
  355. data/cookbooks/nagios/definitions/contactgroup.rb +33 -0
  356. data/cookbooks/nagios/definitions/host.rb +33 -0
  357. data/cookbooks/nagios/definitions/hostdependency.rb +33 -0
  358. data/cookbooks/nagios/definitions/hostescalation.rb +34 -0
  359. data/cookbooks/nagios/definitions/hostgroup.rb +33 -0
  360. data/cookbooks/nagios/definitions/nagios_conf.rb +38 -0
  361. data/cookbooks/nagios/definitions/resource.rb +33 -0
  362. data/cookbooks/nagios/definitions/service.rb +33 -0
  363. data/cookbooks/nagios/definitions/servicedependency.rb +33 -0
  364. data/cookbooks/nagios/definitions/serviceescalation.rb +34 -0
  365. data/cookbooks/nagios/definitions/servicegroup.rb +33 -0
  366. data/cookbooks/nagios/definitions/timeperiod.rb +33 -0
  367. data/cookbooks/nagios/libraries/base.rb +314 -0
  368. data/cookbooks/nagios/libraries/command.rb +91 -0
  369. data/cookbooks/nagios/libraries/contact.rb +230 -0
  370. data/cookbooks/nagios/libraries/contactgroup.rb +112 -0
  371. data/cookbooks/nagios/libraries/custom_option.rb +36 -0
  372. data/cookbooks/nagios/libraries/data_bag_helper.rb +23 -0
  373. data/cookbooks/nagios/libraries/default.rb +90 -0
  374. data/cookbooks/nagios/libraries/host.rb +412 -0
  375. data/cookbooks/nagios/libraries/hostdependency.rb +181 -0
  376. data/cookbooks/nagios/libraries/hostescalation.rb +173 -0
  377. data/cookbooks/nagios/libraries/hostgroup.rb +119 -0
  378. data/cookbooks/nagios/libraries/nagios.rb +282 -0
  379. data/cookbooks/nagios/libraries/resource.rb +59 -0
  380. data/cookbooks/nagios/libraries/service.rb +455 -0
  381. data/cookbooks/nagios/libraries/servicedependency.rb +215 -0
  382. data/cookbooks/nagios/libraries/serviceescalation.rb +195 -0
  383. data/cookbooks/nagios/libraries/servicegroup.rb +144 -0
  384. data/cookbooks/nagios/libraries/timeperiod.rb +160 -0
  385. data/cookbooks/nagios/libraries/users_helper.rb +54 -0
  386. data/cookbooks/nagios/metadata.rb +25 -0
  387. data/cookbooks/nagios/recipes/_load_databag_config.rb +153 -0
  388. data/cookbooks/nagios/recipes/_load_default_config.rb +241 -0
  389. data/cookbooks/nagios/recipes/apache.rb +48 -0
  390. data/cookbooks/nagios/recipes/default.rb +204 -0
  391. data/cookbooks/nagios/recipes/nginx.rb +82 -0
  392. data/cookbooks/nagios/recipes/pagerduty.rb +143 -0
  393. data/cookbooks/nagios/recipes/server_package.rb +40 -0
  394. data/cookbooks/nagios/recipes/server_source.rb +164 -0
  395. data/cookbooks/nagios/templates/default/apache2.conf.erb +96 -0
  396. data/cookbooks/nagios/templates/default/cgi.cfg.erb +266 -0
  397. data/cookbooks/nagios/templates/default/commands.cfg.erb +13 -0
  398. data/cookbooks/nagios/templates/default/contacts.cfg.erb +37 -0
  399. data/cookbooks/nagios/templates/default/hostgroups.cfg.erb +25 -0
  400. data/cookbooks/nagios/templates/default/hosts.cfg.erb +15 -0
  401. data/cookbooks/nagios/templates/default/htpasswd.users.erb +6 -0
  402. data/cookbooks/nagios/templates/default/nagios.cfg.erb +22 -0
  403. data/cookbooks/nagios/templates/default/nginx.conf.erb +62 -0
  404. data/cookbooks/nagios/templates/default/pagerduty.cgi.erb +185 -0
  405. data/cookbooks/nagios/templates/default/resource.cfg.erb +27 -0
  406. data/cookbooks/nagios/templates/default/servicedependencies.cfg.erb +15 -0
  407. data/cookbooks/nagios/templates/default/servicegroups.cfg.erb +14 -0
  408. data/cookbooks/nagios/templates/default/services.cfg.erb +14 -0
  409. data/cookbooks/nagios/templates/default/templates.cfg.erb +31 -0
  410. data/cookbooks/nagios/templates/default/timeperiods.cfg.erb +13 -0
  411. data/cookbooks/s3fs/CHANGELOG.md +13 -0
  412. data/cookbooks/s3fs/LICENSE +37 -0
  413. data/cookbooks/s3fs/README.md +6 -0
  414. data/cookbooks/s3fs/attributes/default.rb +15 -0
  415. data/cookbooks/s3fs/files/default/fuse-2.9.3.zip +0 -0
  416. data/cookbooks/s3fs/metadata.rb +16 -0
  417. data/cookbooks/s3fs/recipes/default.rb +91 -0
  418. data/data_bags/demo/app.json +7 -0
  419. data/data_bags/nagios_services/chef.json +6 -0
  420. data/data_bags/nagios_services/linux_diskspace.json +5 -0
  421. data/data_bags/nagios_services/momma_cat.json +6 -0
  422. data/data_bags/nagios_services/mu-master-memory.json +5 -0
  423. data/data_bags/nagios_services/nagios_ui.json +6 -0
  424. data/data_bags/nagios_services/node_ssh.json +6 -0
  425. data/data_bags/nagios_services/ssh.json +6 -0
  426. data/demo/lambda_test.yaml +29 -0
  427. data/environments/DEV.json +8 -0
  428. data/environments/PROD.json +8 -0
  429. data/environments/dev.json +8 -0
  430. data/environments/development.json +8 -0
  431. data/environments/prod.json +8 -0
  432. data/extras/README.md +1 -0
  433. data/extras/admin-role-binding.yaml +16 -0
  434. data/extras/admin-user.yaml +6 -0
  435. data/extras/aws-auth-cm.yaml.erb +12 -0
  436. data/extras/clean-stock-amis +48 -0
  437. data/extras/git-fix-permissions-hook +12 -0
  438. data/extras/gitlab-eks-helper.sh.erb +20 -0
  439. data/extras/image-generators/README.md +2 -0
  440. data/extras/image-generators/aws/centos6.yaml +18 -0
  441. data/extras/image-generators/aws/centos7-govcloud.yaml +24 -0
  442. data/extras/image-generators/aws/centos7.yaml +17 -0
  443. data/extras/image-generators/aws/rhel7.yaml +17 -0
  444. data/extras/image-generators/aws/win2k12.yaml +16 -0
  445. data/extras/image-generators/aws/win2k16.yaml +16 -0
  446. data/extras/image-generators/aws/windows.yaml +18 -0
  447. data/extras/image-generators/gcp/centos6.yaml +17 -0
  448. data/extras/lambda_waf_domain_blacklist.py +103 -0
  449. data/extras/platform_berksfile_base +50 -0
  450. data/extras/ruby_rpm/build.sh +17 -0
  451. data/extras/ruby_rpm/muby.spec +44 -0
  452. data/extras/vault_tools/README.md +6 -0
  453. data/extras/vault_tools/export_vaults.sh +3 -0
  454. data/extras/vault_tools/recreate_vaults.sh +5 -0
  455. data/extras/vault_tools/test_vaults.sh +5 -0
  456. data/install/README.md +8 -0
  457. data/install/cfn_create_mu_master.json +1034 -0
  458. data/install/chef-server.rb.erb +19 -0
  459. data/install/deprecated-bash-library.sh +1891 -0
  460. data/install/images/Usage.png +0 -0
  461. data/install/installer +71 -0
  462. data/install/jenkinskeys.rb +8 -0
  463. data/install/user-dot-murc.erb +14 -0
  464. data/modules/html.erb +19 -0
  465. data/modules/mommacat.ru +426 -0
  466. data/modules/mu/cleanup.rb +339 -0
  467. data/modules/mu/cloud.rb +1446 -0
  468. data/modules/mu/clouds/README.md +201 -0
  469. data/modules/mu/clouds/aws/alarm.rb +319 -0
  470. data/modules/mu/clouds/aws/cache_cluster.rb +1010 -0
  471. data/modules/mu/clouds/aws/collection.rb +373 -0
  472. data/modules/mu/clouds/aws/container_cluster.rb +667 -0
  473. data/modules/mu/clouds/aws/database.rb +1836 -0
  474. data/modules/mu/clouds/aws/dnszone.rb +911 -0
  475. data/modules/mu/clouds/aws/firewall_rule.rb +641 -0
  476. data/modules/mu/clouds/aws/folder.rb +92 -0
  477. data/modules/mu/clouds/aws/function.rb +349 -0
  478. data/modules/mu/clouds/aws/group.rb +251 -0
  479. data/modules/mu/clouds/aws/loadbalancer.rb +888 -0
  480. data/modules/mu/clouds/aws/log.rb +363 -0
  481. data/modules/mu/clouds/aws/msg_queue.rb +480 -0
  482. data/modules/mu/clouds/aws/notification.rb +139 -0
  483. data/modules/mu/clouds/aws/role.rb +656 -0
  484. data/modules/mu/clouds/aws/search_domain.rb +646 -0
  485. data/modules/mu/clouds/aws/server.rb +2294 -0
  486. data/modules/mu/clouds/aws/server_pool.rb +1388 -0
  487. data/modules/mu/clouds/aws/storage_pool.rb +495 -0
  488. data/modules/mu/clouds/aws/user.rb +382 -0
  489. data/modules/mu/clouds/aws/userdata/README.md +4 -0
  490. data/modules/mu/clouds/aws/userdata/linux.erb +179 -0
  491. data/modules/mu/clouds/aws/userdata/windows.erb +278 -0
  492. data/modules/mu/clouds/aws/vpc.rb +1943 -0
  493. data/modules/mu/clouds/aws.rb +1009 -0
  494. data/modules/mu/clouds/cloudformation/alarm.rb +146 -0
  495. data/modules/mu/clouds/cloudformation/cache_cluster.rb +167 -0
  496. data/modules/mu/clouds/cloudformation/collection.rb +117 -0
  497. data/modules/mu/clouds/cloudformation/database.rb +278 -0
  498. data/modules/mu/clouds/cloudformation/dnszone.rb +274 -0
  499. data/modules/mu/clouds/cloudformation/firewall_rule.rb +308 -0
  500. data/modules/mu/clouds/cloudformation/loadbalancer.rb +193 -0
  501. data/modules/mu/clouds/cloudformation/log.rb +170 -0
  502. data/modules/mu/clouds/cloudformation/server.rb +370 -0
  503. data/modules/mu/clouds/cloudformation/server_pool.rb +279 -0
  504. data/modules/mu/clouds/cloudformation/vpc.rb +322 -0
  505. data/modules/mu/clouds/cloudformation.rb +733 -0
  506. data/modules/mu/clouds/docker.rb +30 -0
  507. data/modules/mu/clouds/google/container_cluster.rb +290 -0
  508. data/modules/mu/clouds/google/database.rb +152 -0
  509. data/modules/mu/clouds/google/firewall_rule.rb +267 -0
  510. data/modules/mu/clouds/google/group.rb +164 -0
  511. data/modules/mu/clouds/google/loadbalancer.rb +479 -0
  512. data/modules/mu/clouds/google/server.rb +1510 -0
  513. data/modules/mu/clouds/google/server_pool.rb +274 -0
  514. data/modules/mu/clouds/google/user.rb +266 -0
  515. data/modules/mu/clouds/google/userdata/README.md +4 -0
  516. data/modules/mu/clouds/google/userdata/linux.erb +137 -0
  517. data/modules/mu/clouds/google/userdata/windows.erb +275 -0
  518. data/modules/mu/clouds/google/vpc.rb +890 -0
  519. data/modules/mu/clouds/google.rb +811 -0
  520. data/modules/mu/config/README.md +11 -0
  521. data/modules/mu/config/alarm.rb +271 -0
  522. data/modules/mu/config/cache_cluster.rb +172 -0
  523. data/modules/mu/config/collection.rb +87 -0
  524. data/modules/mu/config/container_cluster.rb +103 -0
  525. data/modules/mu/config/container_cluster.yml +36 -0
  526. data/modules/mu/config/database.rb +458 -0
  527. data/modules/mu/config/database.yml +26 -0
  528. data/modules/mu/config/dnszone.rb +327 -0
  529. data/modules/mu/config/firewall_rule.rb +118 -0
  530. data/modules/mu/config/folder.rb +70 -0
  531. data/modules/mu/config/function.rb +140 -0
  532. data/modules/mu/config/group.rb +64 -0
  533. data/modules/mu/config/loadbalancer.rb +482 -0
  534. data/modules/mu/config/log.rb +47 -0
  535. data/modules/mu/config/log.yml +6 -0
  536. data/modules/mu/config/msg_queue.rb +47 -0
  537. data/modules/mu/config/msg_queue.yml +9 -0
  538. data/modules/mu/config/notification.rb +44 -0
  539. data/modules/mu/config/project.rb +71 -0
  540. data/modules/mu/config/role.rb +102 -0
  541. data/modules/mu/config/search_domain.rb +61 -0
  542. data/modules/mu/config/search_domain.yml +25 -0
  543. data/modules/mu/config/server.rb +587 -0
  544. data/modules/mu/config/server.yml +8 -0
  545. data/modules/mu/config/server_pool.rb +216 -0
  546. data/modules/mu/config/server_pool.yml +71 -0
  547. data/modules/mu/config/storage_pool.rb +145 -0
  548. data/modules/mu/config/user.rb +78 -0
  549. data/modules/mu/config/vpc.rb +743 -0
  550. data/modules/mu/config/vpc.yml +6 -0
  551. data/modules/mu/config.rb +2000 -0
  552. data/modules/mu/defaults/README.md +2 -0
  553. data/modules/mu/defaults/amazon_images.yaml +121 -0
  554. data/modules/mu/defaults/google_images.yaml +16 -0
  555. data/modules/mu/deploy.rb +686 -0
  556. data/modules/mu/groomer.rb +123 -0
  557. data/modules/mu/groomers/README.md +58 -0
  558. data/modules/mu/groomers/chef.rb +1024 -0
  559. data/modules/mu/kittens.rb +11319 -0
  560. data/modules/mu/logger.rb +208 -0
  561. data/modules/mu/master/README.md +27 -0
  562. data/modules/mu/master/chef.rb +471 -0
  563. data/modules/mu/master/ldap.rb +1005 -0
  564. data/modules/mu/master.rb +415 -0
  565. data/modules/mu/mommacat.rb +2703 -0
  566. data/modules/mu-load-config.rb +1 -0
  567. data/modules/mu.rb +724 -0
  568. data/modules/scratchpad.erb +1 -0
  569. data/modules/tests/super_complex_bok.yml +41 -0
  570. data/modules/tests/super_simple_bok.yml +40 -0
  571. data/mu.gemspec +62 -0
  572. data/roles/demo-dbservice-configure.json +19 -0
  573. data/roles/demo-portal-configure.json +19 -0
  574. data/roles/mu-master-jenkins.json +24 -0
  575. data/roles/mu-master-nagios-only.json +13 -0
  576. data/roles/mu-master.json +12 -0
  577. data/roles/mu-node.json +19 -0
  578. data/roles/mu-splunk-server.json +13 -0
  579. data/roles/mu-splunk.json +13 -0
  580. data/test/clean_up.py +25 -0
  581. data/test/demo-test-profile/README.md +3 -0
  582. data/test/demo-test-profile/controls/flask.rb +84 -0
  583. data/test/demo-test-profile/inspec.lock +7 -0
  584. data/test/demo-test-profile/inspec.yml +11 -0
  585. data/test/etco-test-profile/README.md +3 -0
  586. data/test/etco-test-profile/controls/all-in-one.rb +182 -0
  587. data/test/etco-test-profile/inspec.lock +7 -0
  588. data/test/etco-test-profile/inspec.yml +11 -0
  589. data/test/exec_inspec.py +246 -0
  590. data/test/exec_mu_install.py +241 -0
  591. data/test/exec_retry.py +44 -0
  592. data/test/mu-master-test/README.md +3 -0
  593. data/test/mu-master-test/controls/all_in_one.rb +557 -0
  594. data/test/mu-master-test/inspec.lock +3 -0
  595. data/test/mu-master-test/inspec.yml +11 -0
  596. data/test/mu-tools-test/README.md +3 -0
  597. data/test/mu-tools-test/controls/base.rb +265 -0
  598. data/test/mu-tools-test/inspec.lock +3 -0
  599. data/test/mu-tools-test/inspec.yml +8 -0
  600. data/test/simple-server-php-test/README.md +3 -0
  601. data/test/simple-server-php-test/controls/apachephp.rb +25 -0
  602. data/test/simple-server-php-test/controls/example.rb +19 -0
  603. data/test/simple-server-php-test/inspec.lock +7 -0
  604. data/test/simple-server-php-test/inspec.yml +12 -0
  605. data/test/simple-server-rails-test/README.md +3 -0
  606. data/test/simple-server-rails-test/controls/rails.rb +188 -0
  607. data/test/simple-server-rails-test/inspec.lock +7 -0
  608. data/test/simple-server-rails-test/inspec.yml +11 -0
  609. data/test/simple-windows-test/README.md +3 -0
  610. data/test/simple-windows-test/controls/windows.rb +20 -0
  611. data/test/simple-windows-test/inspec.lock +7 -0
  612. data/test/simple-windows-test/inspec.yml +11 -0
  613. data/test/smoke_test.rb +75 -0
  614. data/test/wordpress-test/README.md +3 -0
  615. data/test/wordpress-test/controls/wordpress.rb +97 -0
  616. data/test/wordpress-test/inspec.lock +7 -0
  617. data/test/wordpress-test/inspec.yml +11 -0
  618. metadata +979 -0
@@ -0,0 +1,455 @@
1
+ #
2
+ # Author:: Sander Botman <sbotman@schubergphilis.com>
3
+ # Cookbook Name:: nagios
4
+ # Library:: service
5
+ #
6
+ # Copyright 2014, Sander Botman
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ require_relative 'base'
22
+
23
+ class Nagios
24
+ #
25
+ # This class holds all methods with regard to servicedependency options,
26
+ # that are used within nagios configurations.
27
+ #
28
+ class Service < Nagios::Base
29
+ attr_reader :service_description,
30
+ :host_name,
31
+ :hostgroup_name,
32
+ :contacts,
33
+ :contact_groups,
34
+ :check_command,
35
+ :servicegroups,
36
+ :hostgroups,
37
+ :custom_options
38
+
39
+ attr_accessor :display_name,
40
+ :is_volatile,
41
+ :initial_state,
42
+ :max_check_attempts,
43
+ :check_interval,
44
+ :retry_interval,
45
+ :active_checks_enabled,
46
+ :passive_checks_enabled,
47
+ :check_period,
48
+ :obsess_over_service,
49
+ :check_freshness,
50
+ :freshness_threshold,
51
+ :event_handler,
52
+ :event_handler_enabled,
53
+ :low_flap_threshold,
54
+ :high_flap_threshold,
55
+ :flap_detection_enabled,
56
+ :flap_detection_options,
57
+ :process_perf_data,
58
+ :retain_status_information,
59
+ :retain_nonstatus_information,
60
+ :notification_interval,
61
+ :first_notification_delay,
62
+ :notification_period,
63
+ :notification_options,
64
+ :notifications_enabled,
65
+ :parallelize_check,
66
+ :stalking_options,
67
+ :notes,
68
+ :notes_url,
69
+ :action_url,
70
+ :icon_image,
71
+ :icon_image_alt
72
+
73
+ def initialize(service_description)
74
+ @service_description = service_description
75
+ srv = service_description.split('!')
76
+ @check_command = srv.shift
77
+ @arguments = srv
78
+ @servicegroups = {}
79
+ @contacts = {}
80
+ @contact_groups = {}
81
+ @hostgroups = {}
82
+ @hosts = {}
83
+ @custom_options = {}
84
+ super()
85
+ end
86
+ # rubocop:enable MethodLength
87
+
88
+ def check_command
89
+ if blank?(@arguments)
90
+ @check_command.to_s
91
+ else
92
+ @check_command.to_s + '!' + @arguments.join('!')
93
+ end
94
+ end
95
+
96
+ def check_command=(cmd)
97
+ cmd = cmd.split('!')
98
+ cmd.shift
99
+ @arguments = cmd
100
+ end
101
+
102
+ def check_period
103
+ get_timeperiod(@check_period)
104
+ end
105
+
106
+ # contacts
107
+ # This is a list of the short names of the contacts that should be notified
108
+ # whenever there are problems (or recoveries) with this host.
109
+ # Multiple contacts should be separated by commas.
110
+ # Useful if you want notifications to go to just a few people and don't want
111
+ # to configure contact groups.
112
+ # You must specify at least one contact or contact group in each host definition.
113
+ def contacts_list
114
+ @contacts.values.map(&:to_s).sort.join(',')
115
+ end
116
+
117
+ # contact_groups
118
+ # This is a list of the short names of the contact groups that should be notified
119
+ # whenever there are problems (or recoveries) with this host.
120
+ # Multiple contact groups should be separated by commas.
121
+ # You must specify at least one contact or contact group in each host definition.
122
+ def contact_groups_list
123
+ @contact_groups.values.map(&:to_s).sort.join(',')
124
+ end
125
+
126
+ def definition
127
+ if blank?(hostgroup_name_list) && blank?(host_name_list) && name.nil?
128
+ "# Skipping #{service_description} because host_name and hostgroup_name are missing."
129
+ else
130
+ configured = configured_options
131
+ custom_options.each { |_, v| configured[v.to_s] = v.value }
132
+ get_definition(configured, 'service')
133
+ end
134
+ end
135
+
136
+ # host_name
137
+ # This directive is used to return all host objects
138
+ def host_name
139
+ @hosts
140
+ end
141
+
142
+ # host_name_list
143
+ # This directive is used to specify the short name(s) of the host(s) that the service
144
+ # "runs" on or is associated with. Multiple hosts should be separated by commas.
145
+ def host_name_list
146
+ @hosts.values.map(&:to_s).sort.join(',')
147
+ end
148
+
149
+ # hostgroup_name
150
+ # This directive is used to return all hostgroup objects
151
+ def hostgroup_name
152
+ @hostgroups
153
+ end
154
+
155
+ # hostgroup_name_list
156
+ # This directive is used to specify the short name(s) of the hostgroup(s) that the
157
+ # service "runs" on or is associated with. Multiple hostgroups should be separated by commas.
158
+ # The hostgroup_name may be used instead of, or in addition to, the host_name directive.
159
+ def hostgroup_name_list
160
+ @hostgroups.values.map(&:to_s).sort.join(',')
161
+ end
162
+
163
+ def import(hash)
164
+ update_options(hash)
165
+ update_members(hash, 'contacts', Nagios::Contact)
166
+ update_members(hash, 'contact_groups', Nagios::Contactgroup)
167
+ update_members(hash, 'host_name', Nagios::Host)
168
+ update_members(hash, 'hostgroup_name', Nagios::Hostgroup)
169
+ update_members(hash, 'servicegroups', Nagios::Servicegroup, true)
170
+ update_members(hash, 'check_command', Nagios::Command)
171
+ end
172
+
173
+ def notification_period
174
+ get_timeperiod(@notification_period)
175
+ end
176
+
177
+ def push(obj)
178
+ case obj
179
+ when Nagios::Servicegroup
180
+ push_object(obj, @servicegroups)
181
+ when Nagios::Hostgroup
182
+ push_object(obj, @hostgroups)
183
+ when Nagios::Host
184
+ push_object(obj, @hosts)
185
+ when Nagios::Contact
186
+ push_object(obj, @contacts)
187
+ when Nagios::Contactgroup
188
+ push_object(obj, @contact_groups)
189
+ when Nagios::Command
190
+ @check_command = obj
191
+ when Nagios::Timeperiod
192
+ @check_period = obj
193
+ @notification_period = obj
194
+ when Nagios::CustomOption
195
+ push_object(obj, @custom_options)
196
+ end
197
+ end
198
+
199
+ def pop(obj)
200
+ return if obj == self
201
+ case obj
202
+ when Nagios::Servicegroup
203
+ if @servicegroups.keys?(obj.to_s)
204
+ pop_object(obj, @servicegroups)
205
+ pop(self, obj)
206
+ end
207
+ when Nagios::Hostgroup
208
+ if @hostgroups.keys?(obj.to_s)
209
+ pop_object(obj, @hostgroups)
210
+ pop(self, obj)
211
+ end
212
+ when Nagios::Host
213
+ if @hosts.keys?(obj.to_s)
214
+ pop_object(obj, @hosts)
215
+ pop(self, obj)
216
+ end
217
+ when Nagios::Contact
218
+ if @contacts.keys?(obj.to_s)
219
+ pop_object(obj, @contacts)
220
+ pop(self, obj)
221
+ end
222
+ when Nagios::Contactgroup
223
+ if @contact_groups.keys?(obj.to_s)
224
+ pop_object(obj, @contact_groups)
225
+ pop(self, obj)
226
+ end
227
+ when Nagios::Command
228
+ @check_command = nil if @check_command == obj
229
+ when Nagios::Timeperiod
230
+ @check_period = nil if @check_command == obj
231
+ @notification_period = nil if @check_command == obj
232
+ when Nagios::CustomOption
233
+ if @custom_options.keys?(obj.to_s)
234
+ pop_object(obj, @custom_options)
235
+ pop(self, obj)
236
+ end
237
+ end
238
+ end
239
+ # rubocop:enable MethodLength
240
+
241
+ # servicegroups
242
+ # This directive is used to define the description of the service, which may contain spaces,
243
+ # dashes, and colons (semicolons, apostrophes, and quotation marks should be avoided).
244
+ # No two services associated with the same host can have the same description.
245
+ # Services are uniquely identified with their host_name and service_description directives.
246
+ def servicegroups_list
247
+ @servicegroups.values.map(&:to_s).sort.join(',')
248
+ end
249
+
250
+ def self.create(name)
251
+ Nagios.instance.find(Nagios::Service.new(name))
252
+ end
253
+
254
+ def to_s
255
+ service_description
256
+ end
257
+
258
+ # check the integer options
259
+ # default = nil
260
+
261
+ def max_check_attempts=(int)
262
+ @max_check_attempts = check_integer(int)
263
+ end
264
+
265
+ def check_interval=(int)
266
+ @check_interval = check_integer(int)
267
+ end
268
+
269
+ def retry_interval=(int)
270
+ @retry_interval = check_integer(int)
271
+ end
272
+
273
+ def freshness_threshold=(int)
274
+ @freshness_threshold = check_integer(int)
275
+ end
276
+
277
+ def low_flap_threshold=(int)
278
+ @low_flap_threshold = check_integer(int)
279
+ end
280
+
281
+ def high_flap_threshold=(int)
282
+ @high_flap_threshold = check_integer(int)
283
+ end
284
+
285
+ def notification_interval=(int)
286
+ @notification_interval = check_integer(int)
287
+ end
288
+
289
+ def first_notification_delay=(int)
290
+ @first_notification_delay = check_integer(int)
291
+ end
292
+
293
+ # check the True/False options
294
+ # default = nil
295
+
296
+ # rubocop:disable Style/PredicateName
297
+ def is_volatile=(arg)
298
+ @is_volatile = check_bool(arg)
299
+ end
300
+ # rubocop:enable Style/PredicateName
301
+
302
+ def active_checks_enabled=(arg)
303
+ @active_checks_enabled = check_bool(arg)
304
+ end
305
+
306
+ def passive_checks_enabled=(arg)
307
+ @passive_checks_enabled = check_bool(arg)
308
+ end
309
+
310
+ def obsess_over_service=(arg)
311
+ @obsess_over_service = check_bool(arg)
312
+ end
313
+
314
+ def check_freshness=(arg)
315
+ @check_freshness = check_bool(arg)
316
+ end
317
+
318
+ def event_handler_enabled=(arg)
319
+ @event_handler_enabled = check_bool(arg)
320
+ end
321
+
322
+ def flap_detection_enabled=(arg)
323
+ @flap_detection_enabled = check_bool(arg)
324
+ end
325
+
326
+ def process_perf_data=(arg)
327
+ @process_perf_data = check_bool(arg)
328
+ end
329
+
330
+ def retain_status_information=(arg)
331
+ @retain_status_information = check_bool(arg)
332
+ end
333
+
334
+ def retain_nonstatus_information=(arg)
335
+ @retain_nonstatus_information = check_bool(arg)
336
+ end
337
+
338
+ def notifications_enabled=(arg)
339
+ @notifications_enabled = check_bool(arg)
340
+ end
341
+
342
+ def parallelize_check=(arg)
343
+ @parallelize_check = check_bool(arg)
344
+ end
345
+
346
+ # check other options
347
+
348
+ # flap_detection_options
349
+ # This directive is used to determine what service states the flap detection logic will use for this service.
350
+ # Valid options are a combination of one or more of the following:
351
+ # o = OK states,
352
+ # w = WARNING states,
353
+ # c = CRITICAL states,
354
+ # u = UNKNOWN states.
355
+
356
+ def flap_detection_options=(arg)
357
+ @flap_detection_options = check_state_options(arg, %w(o w u c), 'flap_detection_options')
358
+ end
359
+
360
+ # notification_options
361
+ # This directive is used to determine when notifications for the service should be sent out.
362
+ # Valid options are a combination of one or more of the following:
363
+ # w = send notifications on a WARNING state,
364
+ # u = send notifications on an UNKNOWN state,
365
+ # c = send notifications on a CRITICAL state,
366
+ # r = send notifications on recoveries (OK state),
367
+ # f = send notifications when the service starts and stops flapping,
368
+ # s = send notifications when scheduled downtime starts and ends.
369
+ #
370
+ # If you specify n (none) as an option, no service notifications will be sent out.
371
+ # If you do not specify any notification options, Nagios will assume that you want
372
+ # notifications to be sent out for all possible states.
373
+ #
374
+ # Example: If you specify w,r in this field, notifications will only be sent out when
375
+ # the service goes into a WARNING state and when it recovers from a WARNING state.
376
+
377
+ def notification_options=(arg)
378
+ @notification_options = check_state_options(arg, %w(w u c r f s n), 'notification_options')
379
+ end
380
+
381
+ # stalking_options
382
+ # This directive determines which service states "stalking" is enabled for.
383
+ # Valid options are a combination of one or more of the following:
384
+ # o = stalk on OK states,
385
+ # w = stalk on WARNING states,
386
+ # u = stalk on UNKNOWN states,
387
+ # c = stalk on CRITICAL states.
388
+ #
389
+ # More information on state stalking can be found here.
390
+
391
+ def stalking_options=(arg)
392
+ @stalking_options = check_state_options(arg, %w(o w u c), 'stalking_options')
393
+ end
394
+
395
+ private
396
+
397
+ def config_options
398
+ {
399
+ 'name' => 'name',
400
+ 'use' => 'use',
401
+ 'service_description' => 'service_description',
402
+ 'host_name_list' => 'host_name',
403
+ 'hostgroup_name_list' => 'hostgroup_name',
404
+ 'servicegroups_list' => 'servicegroups',
405
+ 'display_name' => 'display_name',
406
+ 'is_volatile' => 'is_volatile',
407
+ 'check_command' => 'check_command',
408
+ 'initial_state' => 'initial_state',
409
+ 'max_check_attempts' => 'max_check_attempts',
410
+ 'check_interval' => 'check_interval',
411
+ 'retry_interval' => 'retry_interval',
412
+ 'active_checks_enabled' => 'active_checks_enabled',
413
+ 'passive_checks_enabled' => 'passive_checks_enabled',
414
+ 'check_period' => 'check_period',
415
+ 'obsess_over_service' => 'obsess_over_service',
416
+ 'check_freshness' => 'check_freshness',
417
+ 'freshness_threshold' => 'freshness_threshold',
418
+ 'event_handler' => 'event_handler',
419
+ 'event_handler_enabled' => 'event_handler_enabled',
420
+ 'low_flap_threshold' => 'low_flap_threshold',
421
+ 'high_flap_threshold' => 'high_flap_threshold',
422
+ 'flap_detection_enabled' => 'flap_detection_enabled',
423
+ 'flap_detection_options' => 'flap_detection_options',
424
+ 'process_perf_data' => 'process_perf_data',
425
+ 'retain_status_information' => 'retain_status_information',
426
+ 'retain_nonstatus_information' => 'retain_nonstatus_information',
427
+ 'notification_interval' => 'notification_interval',
428
+ 'first_notification_delay' => 'first_notification_delay',
429
+ 'notification_period' => 'notification_period',
430
+ 'notification_options' => 'notification_options',
431
+ 'notifications_enabled' => 'notifications_enabled',
432
+ 'parallelize_check' => 'parallelize_check',
433
+ 'contacts_list' => 'contacts',
434
+ 'contact_groups_list' => 'contact_groups',
435
+ 'stalking_options' => 'stalking_options',
436
+ 'notes' => 'notes',
437
+ 'notes_url' => 'notes_url',
438
+ 'action_url' => 'action_url',
439
+ 'icon_image' => 'icon_image',
440
+ 'icon_image_alt' => 'icon_image_alt',
441
+ 'register' => 'register',
442
+ }
443
+ end
444
+ # rubocop:enable MethodLength
445
+
446
+ def merge_members(obj)
447
+ obj.contacts.each { |m| push(m) }
448
+ obj.host_name.each { |m| push(m) }
449
+ obj.servicegroups.each { |m| push(m) }
450
+ obj.hostgroup_name.each { |m| push(m) }
451
+ obj.contact_groups.each { |m| push(m) }
452
+ obj.custom_options.each { |_, m| push(m) }
453
+ end
454
+ end
455
+ end
@@ -0,0 +1,215 @@
1
+ #
2
+ # Author:: Sander Botman <sbotman@schubergphilis.com>
3
+ # Cookbook Name:: nagios
4
+ # Library:: servicedependency
5
+ #
6
+ # Copyright 2014, Sander Botman
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ require_relative 'base'
22
+
23
+ class Nagios
24
+ #
25
+ # This class holds all methods with regard to servicedependency options,
26
+ # that are used within nagios configurations.
27
+ #
28
+ class Servicedependency < Nagios::Base
29
+ attr_reader :service_description,
30
+ :dependency_period,
31
+ :dependent_host_name,
32
+ :dependent_hostgroup_name,
33
+ :dependent_servicegroup_name,
34
+ :host_name,
35
+ :hostgroup_name,
36
+ :servicegroup_name
37
+
38
+ attr_accessor :dependent_service_description,
39
+ :inherits_parent,
40
+ :execution_failure_criteria,
41
+ :notification_failure_criteria
42
+
43
+ def initialize(name)
44
+ @service_description = name
45
+ @host_name = {}
46
+ @hostgroup_name = {}
47
+ @servicegroup_name = {}
48
+ @dependent_host_name = {}
49
+ @dependent_hostgroup_name = {}
50
+ @dependent_servicegroup_name = {}
51
+ super()
52
+ end
53
+
54
+ def definition
55
+ get_definition(configured_options, 'servicedependency')
56
+ end
57
+
58
+ def dependent_host_name_list
59
+ @dependent_host_name.values.map(&:to_s).sort.join(',')
60
+ end
61
+
62
+ def dependent_hostgroup_name_list
63
+ @dependent_hostgroup_name.values.map(&:to_s).sort.join(',')
64
+ end
65
+
66
+ def dependent_servicegroup_name_list
67
+ @dependent_servicegroup_name.values.map(&:to_s).sort.join(',')
68
+ end
69
+
70
+ def host_name_list
71
+ @host_name.values.map(&:to_s).sort.join(',')
72
+ end
73
+
74
+ def hostgroup_name_list
75
+ @hostgroup_name.values.map(&:to_s).sort.join(',')
76
+ end
77
+
78
+ def servicegroup_name_list
79
+ @servicegroup_name.values.map(&:to_s).sort.join(',')
80
+ end
81
+
82
+ def import(hash)
83
+ update_options(hash)
84
+ update_members(hash, 'host_name', Nagios::Host)
85
+ update_members(hash, 'hostgroup_name', Nagios::Hostgroup)
86
+ update_members(hash, 'servicegroup_name', Nagios::Servicegroup)
87
+ update_dependency_members(hash, 'dependent_host_name', Nagios::Host)
88
+ update_dependency_members(hash, 'dependent_hostgroup_name', Nagios::Hostgroup)
89
+ update_dependency_members(hash, 'dependent_servicegroup_name', Nagios::Servicegroup)
90
+ end
91
+
92
+ def push(obj)
93
+ case obj
94
+ when Nagios::Host
95
+ push_object(obj, @host_name)
96
+ when Nagios::Hostgroup
97
+ push_object(obj, @hostgroup_name)
98
+ when Nagios::Servicegroup
99
+ push_object(obj, @servicegroup_name)
100
+ when Nagios::Timeperiod
101
+ @dependency_period = obj
102
+ end
103
+ end
104
+
105
+ def pop(obj)
106
+ return if obj == self
107
+ case obj
108
+ when Nagios::Host
109
+ if @host_name.keys?(obj.to_s)
110
+ pop_object(obj, @host_name)
111
+ pop(self, obj)
112
+ end
113
+ when Nagios::Hostgroup
114
+ if @host_name.keys?(obj.to_s)
115
+ pop_object(obj, @hostgroup_name)
116
+ pop(self, obj)
117
+ end
118
+ when Nagios::Servicegroup
119
+ if @host_name.keys?(obj.to_s)
120
+ pop_object(obj, @servicegroup_name)
121
+ pop(self, obj)
122
+ end
123
+ when Nagios::Timeperiod
124
+ @dependency_period = nil if @dependency_period == obj
125
+ end
126
+ end
127
+
128
+ def pop_dependency(obj)
129
+ return if obj == self
130
+ case obj
131
+ when Nagios::Host
132
+ if @dependent_host_name.keys?(obj.to_s)
133
+ pop_object(obj, @dependent_host_name)
134
+ obj.pop(self)
135
+ end
136
+ when Nagios::Hostgroup
137
+ if @dependent_hostgroup_name.keys?(obj.to_s)
138
+ pop_object(obj, @dependent_hostgroup_name)
139
+ obj.pop(self)
140
+ end
141
+ when Nagios::Servicegroup
142
+ if @dependent_servicegroup_name.keys?(obj.to_s)
143
+ pop_object(obj, @dependent_servicegroup_name)
144
+ obj.pop(self)
145
+ end
146
+ end
147
+ end
148
+ # rubocop:enable MethodLength
149
+
150
+ def push_dependency(obj)
151
+ case obj
152
+ when Nagios::Host
153
+ push_object(obj, @dependent_host_name)
154
+ when Nagios::Hostgroup
155
+ push_object(obj, @dependent_hostgroup_name)
156
+ when Nagios::Servicegroup
157
+ push_object(obj, @dependent_servicegroup_name)
158
+ end
159
+ end
160
+
161
+ def self.create(name)
162
+ Nagios.instance.find(Nagios::Servicedependency.new(name))
163
+ end
164
+
165
+ def to_s
166
+ service_description
167
+ end
168
+
169
+ # check the True/False options
170
+ # default = nil
171
+
172
+ def inherits_parent=(arg)
173
+ @inherits_parent = check_bool(arg)
174
+ end
175
+
176
+ # check other options
177
+
178
+ def execution_failure_criteria=(arg)
179
+ @execution_failure_criteria = check_state_options(arg, %w(o w u c p n), 'execution_failure_criteria')
180
+ end
181
+
182
+ def notification_failure_criteria=(arg)
183
+ @notification_failure_criteria = check_state_options(arg, %w(o w u c p n), 'notification_failure_criteria')
184
+ end
185
+
186
+ private
187
+
188
+ def config_options
189
+ {
190
+ 'dependency_period' => 'dependency_period',
191
+ 'dependent_host_name_list' => 'dependent_host_name',
192
+ 'dependent_hostgroup_name_list' => 'dependent_hostgroup_name',
193
+ 'dependent_servicegroup_name_list' => 'dependent_servicegroup_name',
194
+ 'service_description' => 'service_description',
195
+ 'servicegroup_name_list' => 'servicegroup_name',
196
+ 'dependent_service_description' => 'dependent_service_description',
197
+ 'host_name_list' => 'host_name',
198
+ 'hostgroup_name_list' => 'hostgroup_name',
199
+ 'inherits_parent' => 'inherits_parent',
200
+ 'execution_failure_criteria' => 'execution_failure_criteria',
201
+ 'notification_failure_criteria' => 'notification_failure_criteria',
202
+ }
203
+ end
204
+ # rubocop:enable MethodLength
205
+
206
+ def merge_members(obj)
207
+ obj.host_name.each { |m| push(m) }
208
+ obj.hostgroup_name.each { |m| push(m) }
209
+ obj.servicegroup_name.each { |m| push(m) }
210
+ obj.dependent_host_name.each { |m| push_dependency(m) }
211
+ obj.dependent_hostgroup_name.each { |m| push_dependency(m) }
212
+ obj.dependent_servicegroup_name.each { |m| dependent_servicegroup_name(m) }
213
+ end
214
+ end
215
+ end