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,542 @@
1
+ # Cookbook Name:: mu-master
2
+ # Recipe:: init
3
+ #
4
+ # Copyright:: Copyright (c) 2017 eGlobalTech, Inc., all rights reserved
5
+ #
6
+ # Licensed under the BSD-3 license (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License in the root of the project or at
9
+ #
10
+ # http://egt-labs.com/mu/LICENSE.html
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # This recipe is meant to be invoked standalone, by chef-apply. It can safely
19
+ # be invoked during a regular chef-client run.
20
+ #
21
+ # When modifying this recipe, DO NOT ADD EXTERNAL DEPENDENCIES. That means no
22
+ # references to other cookbooks, no include_recipes, no cookbook_files, no
23
+ # templates.
24
+
25
+ require 'etc'
26
+ require 'open-uri'
27
+ require 'socket'
28
+
29
+ # If we're invoked with a stripped-down environment, many of our guards and
30
+ # execs will fail. Append the stuff that's typically missing. Note that even
31
+ # if we hardcode all of our own paths to commands things still break, due to
32
+ # things that spawn commands of their own with the environment they inherit
33
+ # from us.
34
+ ENV['PATH'] = ENV['PATH']+":/bin:/opt/opscode/embedded/bin"
35
+
36
+ # XXX We want to be able to override these things when invoked from chef-apply,
37
+ # but, like, how?
38
+ CHEF_SERVER_VERSION="12.17.15-1"
39
+ CHEF_CLIENT_VERSION="14.4.56"
40
+ KNIFE_WINDOWS="1.9.0"
41
+ MU_BASE="/opt/mu"
42
+ MU_BRANCH="i_yam_what_i_yam" # GIT HOOK EDITABLE DO NOT TOUCH
43
+ realbranch=`cd #{MU_BASE}/lib && git rev-parse --abbrev-ref HEAD`
44
+
45
+ if ENV.key?('MU_BRANCH')
46
+ MU_BRANCH = ENV['MU_BRANCH']
47
+ elsif $?.exitstatus == 0
48
+ MU_BRANCH=realbranch.chomp
49
+ else
50
+ MU_BRANCH="master"
51
+ end
52
+ begin
53
+ resources('service[sshd]')
54
+ rescue Chef::Exceptions::ResourceNotFound
55
+ service "sshd" do
56
+ action :nothing
57
+ end
58
+ end
59
+
60
+ if File.read("/etc/ssh/sshd_config").match(/^AllowUsers\s+([^\s]+)(?:\s|$)/)
61
+ SSH_USER = Regexp.last_match[1].chomp
62
+ else
63
+ execute "sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config" do
64
+ only_if "grep 'PermitRootLogin no' /etc/ssh/sshd_config"
65
+ notifies :restart, "service[sshd]", :immediately
66
+ end
67
+ SSH_USER="root"
68
+ end
69
+ RUNNING_STANDALONE=node['application_attributes'].nil?
70
+
71
+ service "iptables" do
72
+ ignore_failure true
73
+ action :nothing
74
+ only_if "( /bin/systemctl -l --no-pager | grep iptables.service ) || ( /sbin/chkconfig --list | grep ^iptables )"
75
+ end
76
+
77
+ # These guys are a workaround for Opscode bugs that seems to affect some Chef
78
+ # Server upgrades.
79
+ directory "/var/run/postgresql" do
80
+ mode 0755
81
+ # owner "opscode-pgsql"
82
+ # group "opscode-pgsql"
83
+ action :nothing
84
+ end
85
+ #link "/tmp/.s.PGSQL.5432" do
86
+ # to "/var/run/postgresql/.s.PGSQL.5432"
87
+ # owner "opscode-pgsql"
88
+ # group "opscode-pgsql"
89
+ # action :nothing
90
+ # only_if { !::File.exists?("/tmp/.s.PGSQL.5432") }
91
+ # only_if { ::File.exists?("/var/run/postgresql/.s.PGSQL.5432") }
92
+ #end
93
+ link "/var/run/postgresql/.s.PGSQL.5432" do
94
+ to "/tmp/.s.PGSQL.5432"
95
+ # owner "opscode-pgsql"
96
+ # group "opscode-pgsql"
97
+ notifies :create, "directory[/var/run/postgresql]", :before
98
+ only_if { !::File.exists?("/var/run/postgresql/.s.PGSQL.5432") }
99
+ # only_if { ::File.exists?("/tmp/.s.PGSQL.5432") }
100
+ end
101
+ execute "Chef Server rabbitmq workaround" do
102
+ # This assumes we get clean stop, which *should* be the case if we execute
103
+ # before any upgrade or reconfigure. If that assumption is wrong we'd prepend:
104
+ # stop private-chef-runsvdir ; ps auxww | egrep '(opscode|runsv|postgres)' | grep -v grep | awk '{print $2}' | xargs kill
105
+ command "rm -rf /var/log/opscode/rabbitmq/* /var/opt/opscode/rabbitmq/* /var/opt/opscode/rabbitmq/.??*"
106
+ action :nothing
107
+ notifies :stop, "service[chef-server]", :before
108
+ end
109
+
110
+ remote_file "back up /etc/hosts" do
111
+ path "/etc/hosts.muinstaller"
112
+ source "file:///etc/hosts"
113
+ action :nothing
114
+ end
115
+ file "use a clean /etc/hosts during install" do
116
+ path "/etc/hosts"
117
+ content "
118
+ 127.0.0.1 localhost
119
+ ::1 localhost6.localdomain6 localhost6
120
+ "
121
+ notifies :create, "remote_file[back up /etc/hosts]", :before
122
+ only_if { RUNNING_STANDALONE }
123
+ not_if { ::Dir.exists?("#{MU_BASE}/lib/.git") }
124
+ end
125
+
126
+ execute "reconfigure Chef server" do
127
+ command "/opt/opscode/bin/chef-server-ctl reconfigure"
128
+ action :nothing
129
+ notifies :stop, "service[iptables]", :before
130
+ # notifies :create, "link[/tmp/.s.PGSQL.5432]", :before
131
+ notifies :create, "link[/var/run/postgresql/.s.PGSQL.5432]", :before
132
+ notifies :restart, "service[chef-server]", :immediately
133
+ notifies :start, "service[iptables]", :immediately
134
+ only_if { RUNNING_STANDALONE }
135
+ end
136
+ execute "upgrade Chef server" do
137
+ command "/opt/opscode/bin/chef-server-ctl upgrade"
138
+ action :nothing
139
+ timeout 1200 # this can take a while
140
+ notifies :stop, "service[iptables]", :before
141
+ notifies :run, "execute[Chef Server rabbitmq workaround]", :before
142
+ # notifies :create, "link[/tmp/.s.PGSQL.5432]", :before
143
+ notifies :create, "link[/var/run/postgresql/.s.PGSQL.5432]", :before
144
+ notifies :start, "service[iptables]", :immediately
145
+ only_if { RUNNING_STANDALONE }
146
+ end
147
+ service "chef-server" do
148
+ restart_command "/opt/opscode/bin/chef-server-ctl restart"
149
+ stop_command "/opt/opscode/bin/chef-server-ctl stop"
150
+ start_command "/opt/opscode/bin/chef-server-ctl start"
151
+ pattern "/opt/opscode/embedded/sbin/nginx"
152
+ action :nothing
153
+ # notifies :create, "link[/tmp/.s.PGSQL.5432]", :before
154
+ # notifies :create, "link[/var/run/postgresql/.s.PGSQL.5432]", :before
155
+ notifies :stop, "service[iptables]", :before
156
+ notifies :start, "service[iptables]", :immediately
157
+ only_if { RUNNING_STANDALONE }
158
+ end
159
+
160
+ basepackages = []
161
+ removepackages = []
162
+ rpms = {}
163
+ dpkgs = {}
164
+
165
+ elversion = node['platform_version'].to_i > 2000 ? 6 : node['platform_version'].to_i
166
+ if platform_family?("rhel")
167
+ basepackages = ["git", "curl", "diffutils", "patch", "gcc", "gcc-c++", "make", "postgresql-devel", "libyaml", "libffi-devel"]
168
+ # package epel-release-6-8.9.amzn1.noarch (which is newer than epel-release-6-8.noarch) is already installed
169
+
170
+ rpms = {
171
+ "epel-release" => "http://dl.fedoraproject.org/pub/epel/epel-release-latest-#{elversion}.noarch.rpm",
172
+ "chef-server-core" => "https://packages.chef.io/files/stable/chef-server/#{CHEF_SERVER_VERSION.sub(/\-\d+$/, "")}/el/#{elversion}/chef-server-core-#{CHEF_SERVER_VERSION}.el#{elversion}.x86_64.rpm"
173
+ }
174
+
175
+
176
+ if elversion < 6 or elversion >= 8
177
+ raise "Mu Masters on RHEL-family hosts must be equivalent to RHEL6 or RHEL7 (got #{elversion.to_s})"
178
+
179
+ # RHEL6, CentOS6, Amazon Linux
180
+ elsif elversion < 7
181
+ basepackages.concat(["mysql-devel"])
182
+ rpms["ruby25"] = "https://s3.amazonaws.com/cloudamatic/muby-2.5.3-1.el6.x86_64.rpm"
183
+
184
+ removepackages = ["nagios"]
185
+
186
+ # RHEL7, CentOS7
187
+ elsif elversion < 8
188
+ basepackages.concat(["libX11", "tcl", "tk", "mariadb-devel"])
189
+ rpms["ruby25"] = "https://s3.amazonaws.com/cloudamatic/muby-2.5.3-1.el7.x86_64.rpm"
190
+ removepackages = ["nagios", "firewalld"]
191
+ end
192
+ # Amazon Linux
193
+ if node['platform_version'].to_i > 2000
194
+ basepackages.concat(["compat-libffi5"])
195
+ rpms.delete("epel-release")
196
+ end
197
+
198
+ else
199
+ raise "Mu Masters are currently only supported on RHEL-family hosts."
200
+ end
201
+
202
+ package basepackages
203
+
204
+ directory MU_BASE do
205
+ recursive true
206
+ mode 0755
207
+ end
208
+ bash "set git default branch to #{MU_BRANCH}" do
209
+ cwd "#{MU_BASE}/lib"
210
+ code <<-EOH
211
+ git config branch.#{MU_BRANCH}.remote origin
212
+ git config branch.#{MU_BRANCH}.merge refs/heads/#{MU_BRANCH}
213
+ git checkout #{MU_BRANCH}
214
+ EOH
215
+ action :nothing
216
+ end
217
+ git "#{MU_BASE}/lib" do
218
+ repository "git://github.com/cloudamatic/mu.git"
219
+ revision MU_BRANCH
220
+ checkout_branch MU_BRANCH
221
+ enable_checkout false
222
+ not_if { ::Dir.exists?("#{MU_BASE}/lib/.git") }
223
+ notifies :run, "bash[set git default branch to #{MU_BRANCH}]", :immediately
224
+ end
225
+
226
+ # Enable some git hook weirdness for Mu developers
227
+ ["post-merge", "post-checkout", "post-rewrite"].each { |hook|
228
+ remote_file "#{MU_BASE}/lib/.git/hooks/#{hook}" do
229
+ source "file://#{MU_BASE}/lib/extras/git-fix-permissions-hook"
230
+ mode 0755
231
+ end
232
+ }
233
+ file "#{MU_BASE}/lib/.git/hooks/pre-commit" do
234
+ action :delete
235
+ end
236
+
237
+ [MU_BASE+"/var", MU_BASE+"/install", MU_BASE+"/deprecated-bash-library.sh"].each do |dir|
238
+ directory dir do
239
+ recursive true
240
+ mode 0755
241
+ end
242
+ end
243
+
244
+ # Stub files so standalone Ruby programs like mu-configure can know what
245
+ # version to install/find without loading the full Mu library.
246
+ file "#{MU_BASE}/var/mu-chef-client-version" do
247
+ content CHEF_CLIENT_VERSION
248
+ mode 0644
249
+ end
250
+ file "#{MU_BASE}/var/mu-chef-server-version" do
251
+ content CHEF_SERVER_VERSION
252
+ mode 0644
253
+ end
254
+
255
+ # Account for Chef Server upgrades, which require some extra behavior
256
+ execute "move aside old Chef Server files" do
257
+ command "mv /opt/opscode /opt/opscode.upgrading.backup"
258
+ notifies :run, "execute[rm -rf /opt/opscode.upgrading.backup]", :delayed
259
+ action :nothing
260
+ end
261
+ execute "rm -rf /opt/opscode.upgrading.backup" do
262
+ action :nothing
263
+ end
264
+ rpm_package "Chef Server upgrade package" do
265
+ source rpms["chef-server-core"]
266
+ action :upgrade
267
+ only_if "rpm -q chef-server-core"
268
+ notifies :run, "execute[move aside old Chef Server files]", :before
269
+ notifies :run, "execute[upgrade Chef server]", :immediately
270
+ notifies :run, "execute[reconfigure Chef server]", :immediately
271
+ notifies :restart, "service[chef-server]", :immediately
272
+ only_if { RUNNING_STANDALONE }
273
+ end
274
+
275
+ # REMOVE OLD RUBYs
276
+ execute "clean up old Ruby 2.1.6" do
277
+ command "rm -rf /opt/rubies/ruby-2.1.6"
278
+ only_if { ::Dir.exists?("/opt/rubies/ruby-2.1.6") }
279
+ end
280
+
281
+ yum_package 'ruby23-2.3.1-1.el7.centos.x86_64' do
282
+ action :purge
283
+ end
284
+
285
+ execute "Kill ruby-2.3.1" do
286
+ command "yum erase ruby23-2.3.1-1.el7.centos.x86_64 -y"
287
+ only_if { ::Dir.exists?("/opt/rubies/ruby-2.3.1") }
288
+ end
289
+
290
+ execute "clean up old ruby-2.3.1" do
291
+ command "rm -rf /opt/rubies/ruby-2.3.1"
292
+ only_if { ::Dir.exists?("/opt/rubies/ruby-2.3.1") }
293
+ end
294
+
295
+ # Regular old rpm-based installs
296
+ rpms.each_pair { |pkg, src|
297
+ rpm_package pkg do
298
+ source src
299
+ if pkg == "ruby25"
300
+ options '--prefix=/opt/rubies/'
301
+ end
302
+ if pkg == "chef-server-core" and File.size?("/etc/opscode/chef-server.rb")
303
+ # On a normal install this will execute when we set up chef-server.rb,
304
+ # but on a reinstall or an install on an image where that file already
305
+ # exists, we need to invoke this some other way.
306
+ notifies :run, "execute[reconfigure Chef server]", :immediately
307
+ only_if { RUNNING_STANDALONE }
308
+ end
309
+ end
310
+ }
311
+ package "jq"
312
+ package removepackages do
313
+ action :remove
314
+ end
315
+
316
+
317
+
318
+ file "initial chef-server.rb" do
319
+ path "/etc/opscode/chef-server.rb"
320
+ content "server_name='127.0.0.1'
321
+ api_fqdn server_name
322
+ nginx['server_name'] = server_name
323
+ nginx['enable_non_ssl'] = false
324
+ nginx['non_ssl_port'] = 81
325
+ nginx['ssl_port'] = 7443
326
+ nginx['ssl_ciphers'] = 'HIGH:MEDIUM:!LOW:!kEDH:!aNULL:!ADH:!eNULL:!EXP:!SSLv2:!SEED:!CAMELLIA:!PSK'
327
+ nginx['ssl_protocols'] = 'TLSv1.2'
328
+ bookshelf['external_url'] = 'https://127.0.0.1:7443'
329
+ bookshelf['vip_port'] = 7443\n"
330
+ not_if { ::File.size?("/etc/opscode/chef-server.rb") }
331
+ notifies :run, "execute[reconfigure Chef server]", :immediately
332
+ end
333
+
334
+ ["bin", "etc", "lib", "var/users/mu", "var/deployments", "var/orgs/mu"].each { |mudir|
335
+ directory "#{MU_BASE}/#{mudir}" do
336
+ mode mudir.match(/^var\//) ? 0700 : 0755
337
+ owner "root"
338
+ recursive true
339
+ end
340
+ }
341
+ file "#{MU_BASE}/var/users/mu/email" do
342
+ if $MU_CFG
343
+ content "#{$MU_CFG['mu_admin_email']}\n"
344
+ else
345
+ content "root@example.com\n"
346
+ end
347
+ end
348
+ file "#{MU_BASE}/var/users/mu/realname" do
349
+ if $MU_CFG
350
+ content "#{$MU_CFG['mu_admin_name']}\n"
351
+ else
352
+ content "Mu Administrator\n"
353
+ end
354
+ end
355
+
356
+ ["mu-aws-setup", "mu-cleanup", "mu-configure", "mu-deploy", "mu-firewall-allow-clients", "mu-gen-docs", "mu-load-config.rb", "mu-node-manage", "mu-tunnel-nagios", "mu-upload-chef-artifacts", "mu-user-manage", "mu-ssh"].each { |exe|
357
+ link "#{MU_BASE}/bin/#{exe}" do
358
+ to "#{MU_BASE}/lib/bin/#{exe}"
359
+ end
360
+ file "#{MU_BASE}/lib/bin/#{exe}" do
361
+ mode 0755
362
+ end
363
+ }
364
+ remote_file "#{MU_BASE}/bin/mu-self-update" do
365
+ source "file://#{MU_BASE}/lib/bin/mu-self-update"
366
+ mode 0755
367
+ end
368
+
369
+ ["/usr/local/ruby-current", "/opt/chef/embedded"].each { |rubydir|
370
+ gembin = rubydir+"/bin/gem"
371
+ gemdir = Dir.glob("#{rubydir}/lib/ruby/gems/?.?.?/gems").last
372
+ bundler_path = gembin.sub(/gem$/, "bundle")
373
+ bash "fix #{rubydir} gem permissions" do
374
+ code <<-EOH
375
+ find -P #{rubydir}/lib/ruby/gems/?.?.?/ #{rubydir}/lib/ruby/site_ruby/ -type d -exec chmod go+rx {} \\;
376
+ find -P #{rubydir}/lib/ruby/gems/?.?.?/ #{rubydir}/lib/ruby/site_ruby/ -type f -exec chmod go+r {} \\;
377
+ find -P #{rubydir}/bin -type f -exec chmod go+rx {} \\;
378
+ EOH
379
+ action :nothing
380
+ end
381
+ gem_package bundler_path do
382
+ gem_binary gembin
383
+ package_name "bundler"
384
+ action :upgrade if rubydir == "/usr/local/ruby-current"
385
+ notifies :run, "bash[fix #{rubydir} gem permissions]", :delayed
386
+ end
387
+ execute "#{bundler_path} install" do
388
+ cwd "#{MU_BASE}/lib/modules"
389
+ umask 0022
390
+ not_if "#{bundler_path} check"
391
+ notifies :run, "bash[fix #{rubydir} gem permissions]", :delayed
392
+ notifies :restart, "service[chef-server]", :delayed if rubydir == "/opt/opscode/embedded"
393
+ # XXX notify mommacat if we're *not* in chef-apply... RUNNING_STANDALONE
394
+ end
395
+ # Expunge old versions of knife-windows
396
+ if !gemdir.nil?
397
+ Dir.glob("#{gemdir}/knife-windows-*").each { |dir|
398
+ next if dir.match(/\/knife-windows-(#{Regexp.quote(KNIFE_WINDOWS)})$/)
399
+ dir.match(/\/knife-windows-([^\/]+)$/)
400
+ gem_package "purge #{rubydir} knife windows #{Regexp.last_match[1]} #{gembin}" do
401
+ gem_binary gembin
402
+ package_name "knife-windows"
403
+ version Regexp.last_match[1]
404
+ action :remove
405
+ only_if { ::Dir.exists?(dir) }
406
+ only_if { ::Dir.exists?(gemdir) }
407
+ end
408
+ execute "rm -rf #{gemdir}/knife-windows-#{Regexp.last_match[1]}"
409
+ }
410
+
411
+ # XXX rely on bundler to get this right for us
412
+ # gem_package "#{rubydir} knife-windows #{KNIFE_WINDOWS} #{gembin}" do
413
+ # gem_binary gembin
414
+ # package_name "knife-windows"
415
+ # version KNIFE_WINDOWS
416
+ # notifies :restart, "service[chef-server]", :delayed if rubydir == "/opt/opscode/embedded"
417
+ # # XXX notify mommacat if we're *not* in chef-apply... RUNNING_STANDALONE
418
+ # end
419
+
420
+ # execute "Patch #{rubydir}'s knife-windows for Cygwin SSH bootstraps" do
421
+ # cwd "#{gemdir}/knife-windows-#{KNIFE_WINDOWS}"
422
+ # command "patch -p1 < #{MU_BASE}/lib/install/knife-windows-cygwin-#{KNIFE_WINDOWS}.patch"
423
+ # not_if "grep -i 'locate_config_value(:cygwin)' #{gemdir}/knife-windows-#{KNIFE_WINDOWS}/lib/chef/knife/bootstrap_windows_base.rb"
424
+ # notifies :restart, "service[chef-server]", :delayed if rubydir == "/opt/opscode/embedded"
425
+ # only_if { ::Dir.exists?(gemdir) }
426
+ # XXX notify mommacat if we're *not* in chef-apply... RUNNING_STANDALONE
427
+ # end
428
+ end
429
+ }
430
+
431
+
432
+ # Get a 'mu' Chef org in place and populate it with artifacts
433
+ directory "/root/.chef"
434
+ execute "knife ssl fetch" do
435
+ action :nothing
436
+ end
437
+ execute "initial Chef artifact upload" do
438
+ command "MU_INSTALLDIR=#{MU_BASE} MU_LIBDIR=#{MU_BASE}/lib MU_DATADIR=#{MU_BASE}/var #{MU_BASE}/lib/bin/mu-upload-chef-artifacts"
439
+ action :nothing
440
+ notifies :stop, "service[iptables]", :before
441
+ notifies :run, "execute[knife ssl fetch]", :before
442
+ notifies :start, "service[iptables]", :immediately
443
+ only_if { RUNNING_STANDALONE }
444
+ end
445
+ chef_gem "simple-password-gen" do
446
+ compile_time true
447
+ end
448
+ require "simple-password-gen"
449
+
450
+ # XXX this would make an awesome library
451
+ execute "create mu Chef user" do
452
+ command "/opt/opscode/bin/chef-server-ctl user-create mu Mu Master root@example.com #{Password.pronounceable} -f #{MU_BASE}/var/users/mu/mu.user.key"
453
+ umask 0277
454
+ not_if "/opt/opscode/bin/chef-server-ctl user-list | grep '^mu$'"
455
+ end
456
+ execute "create mu Chef org" do
457
+ command "/opt/opscode/bin/chef-server-ctl org-create mu mu -a mu -f #{MU_BASE}/var/orgs/mu/mu.org.key"
458
+ umask 0277
459
+ not_if "/opt/opscode/bin/chef-server-ctl org-list | grep '^mu$'"
460
+ end
461
+ # TODO copy in ~/.chef/mu.*.key to /opt/mu/var/users/mu if the stuff already exists
462
+ file "initial root knife.rb" do
463
+ path "/root/.chef/knife.rb"
464
+ content "
465
+ node_name 'mu'
466
+ client_key '#{MU_BASE}/var/users/mu/mu.user.key'
467
+ validation_client_name 'mu-validator'
468
+ validation_key '#{MU_BASE}/var/orgs/mu/mu.org.key'
469
+ chef_server_url 'https://127.0.0.1:7443/organizations/mu'
470
+ chef_server_root 'https://127.0.0.1:7443/organizations/mu'
471
+ syntax_check_cache_path '/root/.chef/syntax_check_cache'
472
+ cookbook_path [ '/root/.chef/cookbooks', '/root/.chef/site_cookbooks' ]
473
+ ssl_verify_mode :verify_none
474
+ knife[:vault_mode] = 'client'
475
+ knife[:vault_admins] = ['mu']\n"
476
+ only_if { !::File.size?("/root/.chef/knife.rb") }
477
+ notifies :run, "execute[initial Chef artifact upload]", :immediately
478
+ end
479
+
480
+
481
+ # Rig us up for a knife bootstrap
482
+ SSH_DIR = "#{Etc.getpwnam(SSH_USER).dir}/.ssh"
483
+ ROOT_SSH_DIR = "#{Etc.getpwuid(0).dir}/.ssh"
484
+ directory SSH_DIR do
485
+ mode 0700
486
+ user SSH_USER
487
+ end
488
+ if SSH_DIR != ROOT_SSH_DIR
489
+ directory ROOT_SSH_DIR do
490
+ mode 0700
491
+ end
492
+ end
493
+ bash "add localhost ssh to authorized_keys and config" do
494
+ code <<-EOH
495
+ cat #{ROOT_SSH_DIR}/id_rsa.pub >> #{SSH_DIR}/authorized_keys
496
+ echo "Host localhost" >> #{ROOT_SSH_DIR}/config
497
+ echo " IdentityFile #{ROOT_SSH_DIR}/id_rsa" >> #{ROOT_SSH_DIR}/config
498
+ EOH
499
+ action :nothing
500
+ end
501
+ execute "ssh-keygen -N '' -f #{ROOT_SSH_DIR}/id_rsa" do
502
+ umask 0177
503
+ not_if { ::File.exists?("#{ROOT_SSH_DIR}/id_rsa") }
504
+ notifies :run, "bash[add localhost ssh to authorized_keys and config]", :immediately
505
+ end
506
+ file "/etc/chef/client.pem" do
507
+ action :nothing
508
+ end
509
+ file "/etc/chef/validation.pem" do
510
+ action :nothing
511
+ end
512
+
513
+ execute "create MU-MASTER Chef client" do
514
+ if SSH_USER == "root"
515
+ command "/opt/chef/bin/knife bootstrap -N MU-MASTER --no-node-verify-api-cert --node-ssl-verify-mode=none 127.0.0.1"
516
+ else
517
+ command "/opt/chef/bin/knife bootstrap -N MU-MASTER --no-node-verify-api-cert --node-ssl-verify-mode=none -x #{SSH_USER} --sudo 127.0.0.1"
518
+ end
519
+ not_if "/opt/chef/bin/knife node list | grep '^MU-MASTER$'"
520
+ only_if "/opt/chef/bin/knife ssl check" # make sure we don't wipe ourselves due to unrelated SSL issues
521
+ notifies :delete, "file[/etc/chef/client.pem]", :before
522
+ notifies :delete, "file[/etc/chef/validation.pem]", :before
523
+ only_if { RUNNING_STANDALONE }
524
+ end
525
+
526
+ file "#{MU_BASE}/etc/mu.rc" do
527
+ content %Q{export MU_INSTALLDIR="#{MU_BASE}"
528
+ export MU_DATADIR="#{MU_BASE}/var"
529
+ export PATH="#{MU_BASE}/bin:/usr/local/ruby-current/bin:${PATH}:/opt/opscode/embedded/bin"
530
+ }
531
+ mode 0644
532
+ action :create_if_missing
533
+ end
534
+
535
+ # Community cookbooks keep touching gems, and none of them are smart about our
536
+ # default umask. We have to clean up after them every time.
537
+ ["/usr/local/ruby-current", "/opt/chef/embedded"].each { |rubydir|
538
+ execute "trigger permission fix in #{rubydir}" do
539
+ command "ls /etc/motd > /dev/null"
540
+ notifies :run, "bash[fix #{rubydir} gem permissions]", :delayed
541
+ end
542
+ }
@@ -0,0 +1,109 @@
1
+ # Cookbook Name:: mu-master
2
+ # Recipe:: ssl-certs
3
+ #
4
+ # Copyright:: Copyright (c) 2017 eGlobalTech, Inc., all rights reserved
5
+ #
6
+ # Licensed under the BSD-3 license (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License in the root of the project or at
9
+ #
10
+ # http://egt-labs.com/mu/LICENSE.html
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # This recipe is meant to be invoked standalone, by chef-apply. It can safely
19
+ # be invoked during a regular chef-client run.
20
+ #
21
+ # When modifying this recipe, DO NOT ADD EXTERNAL DEPENDENCIES. That means no
22
+ # references to other cookbooks, no include_recipes, no cookbook_files, no
23
+ # templates.
24
+
25
+ include_recipe 'mu-master::firewall-holes'
26
+ service_certs = ["rsyslog", "mommacat", "ldap", "consul", "vault"]
27
+
28
+ directory "#{$MU_CFG['datadir']}/ssl"
29
+ template "#{$MU_CFG['datadir']}/ssl/openssl.cnf" do
30
+ source "openssl.cnf.erb"
31
+ mode 0644
32
+ variables(
33
+ :mu_ssl_dir => "#{$MU_CFG['datadir']}/ssl",
34
+ # XXX I feel like including localhost here is bad but I can't justify that
35
+ # feeling, and 389ds really wants it, so for now it stays.
36
+ :alt_names => [$MU_CFG['public_address'], "localhost", "127.0.0.1", node['fqdn'], node['hostname'], node['local_hostname'], node['local_ipv4'], node['public_hostname'], node['public_ipv4']].uniq
37
+ )
38
+ notifies :delete, "file[#{$MU_CFG['datadir']}/ssl/Mu_CA.pem]", :immediately
39
+ end
40
+ execute "generate SSL CA key" do
41
+ command "openssl genrsa -out Mu_CA.key 4096"
42
+ cwd "#{$MU_CFG['datadir']}/ssl"
43
+ not_if { ::File.exists?("#{$MU_CFG['datadir']}/ssl/Mu_CA.key") }
44
+ notifies :delete, "file[#{$MU_CFG['datadir']}/ssl/CA-command.txt]", :immediately
45
+ end
46
+ file "#{$MU_CFG['datadir']}/ssl/Mu_CA.key" do
47
+ mode 0400
48
+ end
49
+ execute "create internal SSL CA" do
50
+ command "openssl req -subj \"/CN=#{$MU_CFG['public_address']}/OU=Mu Server #{$MU_CFG['public_address']}/O=eGlobalTech/C=US\" -x509 -new -nodes -key Mu_CA.key -days 1024 -out Mu_CA.pem -sha512 -extensions v3_ca -config #{$MU_CFG['datadir']}/ssl/openssl.cnf"
51
+ cwd "#{$MU_CFG['datadir']}/ssl"
52
+ action :nothing
53
+ service_certs.each { |cert|
54
+ notifies :delete, "file[#{$MU_CFG['datadir']}/ssl/#{cert}.crt]", :immediately
55
+ }
56
+ end
57
+ file "remove CA-command.txt if Mu_CA.pem is empty or missing" do
58
+ path "#{$MU_CFG['datadir']}/ssl/CA-command.txt"
59
+ action :delete
60
+ not_if { ::File.size?("#{$MU_CFG['datadir']}/ssl/Mu_CA.pem") }
61
+ end
62
+ file "#{$MU_CFG['datadir']}/ssl/CA-command.txt" do
63
+ content "openssl req -subj \"/CN=#{$MU_CFG['public_address']}/OU=Mu Server #{$MU_CFG['public_address']}/O=eGlobalTech/C=US\" -x509 -new -nodes -key Mu_CA.key -days 1024 -out Mu_CA.pem -sha512 -extensions v3_ca -config #{$MU_CFG['datadir']}/ssl/openssl.cnf"
64
+ mode 0400
65
+ notifies :run, "execute[create internal SSL CA]", :immediately
66
+ end
67
+
68
+ execute "update CA store" do
69
+ command "/usr/bin/update-ca-trust force-enable; /usr/bin/update-ca-trust extract"
70
+ action :nothing
71
+ end
72
+ file "#{$MU_CFG['datadir']}/ssl/Mu_CA.pem" do
73
+ mode 0444
74
+ end
75
+ remote_file "/etc/pki/ca-trust/source/anchors/Mu_CA.pem" do
76
+ source "file://#{$MU_CFG['datadir']}/ssl/Mu_CA.pem"
77
+ notifies :run, "execute[update CA store]", :immediately
78
+ end
79
+ remote_file "#{$MU_CFG['installdir']}/lib/cookbooks/mu-tools/files/default/Mu_CA.pem" do
80
+ source "file://#{$MU_CFG['datadir']}/ssl/Mu_CA.pem"
81
+ end
82
+
83
+ service_certs.each { |cert|
84
+ bash "generate service cert for #{cert}" do
85
+ code <<-EOH
86
+ set -e
87
+ echo "Generating #{cert}.key"
88
+ openssl genrsa -out #{cert}.key 4096
89
+ echo "Generating #{cert}.csr"
90
+ openssl req -subj "/CN=#{$MU_CFG['public_address']}/OU=Mu #{cert}/O=eGlobalTech/C=US" -new -key #{cert}.key -out #{cert}.csr -sha512 -extensions v3_ca -config #{$MU_CFG['datadir']}/ssl/openssl.cnf
91
+ echo "Signing #{cert}.csr => #{cert}.crt"
92
+ openssl x509 -req -in #{cert}.csr -CA Mu_CA.pem -CAkey Mu_CA.key -CAcreateserial -out #{cert}.crt -days 500 -sha512 -extensions v3_req -extfile #{$MU_CFG['datadir']}/ssl/openssl.cnf
93
+ cat Mu_CA.pem >> #{cert}.crt
94
+ openssl pkcs12 -export -inkey #{cert}.key -in #{cert}.crt -out #{cert}.p12 -nodes -name "#{cert}" -passout pass:""
95
+ EOH
96
+ cwd "#{$MU_CFG['datadir']}/ssl"
97
+ not_if { ::File.size?("#{$MU_CFG['datadir']}/ssl/#{cert}.crt") }
98
+ end
99
+
100
+ %w{key crt p12}.each do |type|
101
+ file "#{$MU_CFG['datadir']}/ssl/#{cert}.#{type}" do
102
+ mode 0400
103
+ end
104
+ end
105
+
106
+ file "#{$MU_CFG['datadir']}/ssl/#{cert}.csr" do
107
+ action :delete
108
+ end
109
+ }