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,757 @@
1
+ #!/bin/sh
2
+ # Copyright:: Copyright (c) 2014 eGlobalTech, Inc., all rights reserved
3
+ #
4
+ # Licensed under the BSD-3 license (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License in the root of the project or at
7
+ #
8
+ # http://egt-labs.com/mu/LICENSE.html
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ set -e
17
+
18
+ #################################################
19
+ ################## SET VARIABLES ################
20
+ #################################################
21
+
22
+ scriptpath="`dirname $0`"
23
+ knife="/opt/chef/bin/knife"
24
+
25
+ USER=`whoami`
26
+ STARTDIR=`pwd`
27
+ HOMEDIR="`getent passwd \"$USER\" |cut -d: -f6`"
28
+ if [ -z $MU_CHEF_CACHE ];then
29
+ MU_CHEF_CACHE=$HOMEDIR/.chef
30
+ fi
31
+ manifest="$MU_CHEF_CACHE/mu_manifest"
32
+ berksdir="$HOMEDIR/.berkshelf"
33
+ if [ -z $MU_INSTALLDIR ];then
34
+ MU_INSTALLDIR=/opt/mu
35
+ fi
36
+ if [ -z $MU_DATADIR ];then
37
+ if [ "$USER" == "root" ];then
38
+ MU_DATADIR=/opt/mu/var
39
+ else
40
+ MU_DATADIR=$HOMEDIR/.mu/var
41
+ fi
42
+ fi
43
+ real_datadir="$MU_DATADIR"
44
+
45
+
46
+ source $MU_INSTALLDIR/lib/install/deprecated-bash-library.sh
47
+ if [ -x $MU_INSTALLDIR/lib/bin/mu-gen-env ];then
48
+ $MU_INSTALLDIR/lib/bin/mu-gen-env > $HOMEDIR/.murc
49
+ source $HOMEDIR/.murc
50
+ fi
51
+ export MU_DATADIR="$real_datadir"
52
+
53
+ cd $MU_CHEF_CACHE
54
+
55
+ #################################################
56
+ ################## Updated Cmds ################
57
+ #################################################
58
+
59
+ usage()
60
+ {
61
+ if [ "$1" != "" ];then
62
+ echo ""
63
+ echo "${RED}$1${NORM}"
64
+ echo ""
65
+ fi
66
+ echo "Syncs Chef code to running Chef master. Optionally refreshes from git."
67
+ echo "Usage: $0 [-a|-r repo_name[:branch] [-r repo_name[:branch] [...]]] [-f [-c <commit>] ] [-d] [-n] [-s]"
68
+ echo " ${BOLD}-f${NORM}: Forcibly re-sync Chef repos from Git before uploading"
69
+ echo " to Chef. Saves your uncommitted changes unless ${BOLD}-d${NORM} is specified."
70
+ echo " ${BOLD}-c <commit>${NORM} (requires ${BOLD}-f${NORM} and at most one ${BOLD}-r${NORM}): Reset to a specific commit."
71
+ echo " Saves your uncommitted changes unless ${BOLD}-d${NORM} is specified."
72
+ echo " ${BOLD}-d${NORM}: Discard any uncommited changes to currently checked-out branches."
73
+ echo " ${BOLD}-p${NORM}: Purge Chef resources from the Chef server's memory before uploading."
74
+ echo " expunging old resources from the running server."
75
+ echo " ${BOLD}-s${NORM}: Shortcut mode. Update cookbooks only."
76
+ echo " ${BOLD}-m <name>${NORM}: Match mode. Only operate on artifacts with this name, e.g. '-s -m symantec' to upload a cookbook named symantec."
77
+ echo " ${BOLD}-g${NORM}: Update data bags only."
78
+ echo " ${BOLD}-a${NORM}: Refresh and upload the currently checked-out branch from ALL Chef repos."
79
+ echo " Cannot be used with ${BOLD}-c${NORM} or ${BOLD}-r${NORM}. Saves your uncommitted changes unless ${BOLD}-d${NORM}"
80
+ echo " is specified."
81
+ echo " ${BOLD}-b <branchname>${NORM}: Upload the named branch from ALL Chef repos. Useful if"
82
+ echo " you want to use, for example, only ${BOLD}master${NORM} from every repo Saves your"
83
+ echo " uncommitted changes unless ${BOLD}-d${NORM} is specified."
84
+ echo " ${BOLD}-r${NORM}: A Chef artifact repository to upload. Can specify multiple. See list"
85
+ echo " below. Optionally, specify a branch by appending ${BOLD}:branchname${NORM} (this will"
86
+ echo " override ${BOLD}-b${NORM}). Saves your uncommitted changes unless ${BOLD}-d${NORM}"
87
+ echo " is specified."
88
+ echo ""
89
+ echo "Known Chef artifact repositories, as set by ${BOLD}mu-configure${NORM}. Ordered"
90
+ echo "from lowest priority to highest:"
91
+ for repo in $ADDTL_CHEF_REPOS $MU_REPO;do
92
+ reponame="`echo $repo | cut -d/ -f2 | sed -e 's/\.git$//'`"
93
+ echo "${BOLD}$reponame${NORM}"
94
+ done
95
+ exit 1
96
+ }
97
+ mu_repo_name="`echo $MU_REPO | sed 's/^.*\///' | cut -d. -f1`"
98
+
99
+ purge_manifest()
100
+ {
101
+ purge_repo=$1
102
+ purge_type=$2
103
+ if [ -f $manifest ];then
104
+ grep -v "^$purge_type:.*:$purge_repo$" $manifest > /tmp/manifest.tmp.$$ && /bin/mv /tmp/manifest.tmp.$$ $manifest
105
+ fi
106
+ }
107
+
108
+ update_manifest()
109
+ {
110
+ update_repo=$1
111
+ artifact_type=$2
112
+ artifact_name="`echo $3 | sed -e 's/\.json//'`"
113
+
114
+ if [ -f $manifest ];then
115
+ grep -v "^$artifact_type:$artifact_name:" $manifest > /tmp/manifest.tmp.$$ && /bin/mv /tmp/manifest.tmp.$$ $manifest
116
+ fi
117
+ echo "$artifact_type:$artifact_name:$update_repo" >> $manifest
118
+ }
119
+
120
+ add_berkshelf_cookbooks()
121
+ {
122
+ repodir="$1"
123
+ user="`whoami`"
124
+ user_home="`getent passwd \"$user\" |cut -d: -f6`"
125
+ berksdir="$user_home/.berkshelf"
126
+ berks="/usr/local/ruby-current/bin/ruby /usr/local/ruby-current/bin/berks"
127
+ cd $repodir
128
+ is_synced="`$berks list -F json 2>&1 | grep 'lockfile is out of sync'`"
129
+
130
+ if [ "$MU_DEPRESOLVE" == "1" -o "$is_synced" != "" ];then
131
+ # The cleansing fire for Berksfile.lock and ~/.berkshelf/cookbooks
132
+ if [ "$MU_DEPRESOLVE" == "1" ];then
133
+ echo "${GREEN}Resolving standard Mu cookbook dependencies in $repodir/Berksfile${NORM}"
134
+ else
135
+ echo "${GREEN}Attempting to update $repodir/Berksfile.lock${NORM}"
136
+ fi
137
+ if [ -f "$repodir/Berksfile.lock" ];then
138
+ mv -f "$repodir/Berksfile.lock" "$repodir/Berksfile.lock.prev"
139
+ fi
140
+ if [ -d ~/.berkshelf/cookbooks ];then
141
+ rm -rf ~/.berkshelf/cookbooks.prev
142
+ mv -f ~/.berkshelf/cookbooks ~/.berkshelf/cookbooks.prev
143
+ fi
144
+
145
+ if ! $berks install > /dev/null ;then
146
+ echo "${RED}berks install failed on $repodir/Berksfile${NORM}"
147
+ if [ -f "$repodir/Berksfile.lock.prev" ];then
148
+ echo "${YELLOW}Reverting $repodir/Berksfile.lock${NORM}"
149
+ mv -f $repodir/Berksfile.lock.prev $repodir/Berksfile.lock
150
+ fi
151
+ if [ -d ~/.berkshelf/cookbooks.prev ];then
152
+ mv -f ~/.berkshelf/cookbooks.prev ~/.berkshelf/cookbooks
153
+ fi
154
+ else
155
+ echo "${GREEN}Rebuilt $repodir/Berksfile.lock${NORM}"
156
+ rm -f $repodir/Berksfile.lock.prev
157
+ rm -rf ~/.berkshelf/cookbooks.prev
158
+ fi
159
+ else
160
+ # just make sure ~/.berkshelf/cookbooks isn't missing pieces
161
+ $berks install
162
+ fi
163
+
164
+ is_synced="`$berks list -F json 2>&1 | grep 'lockfile is out of sync'`"
165
+ if [ "$is_synced" != "" ];then
166
+ echo "${RED}$repodir/Berksfile.lock still out of sync after install, bailing${NORM}"
167
+ $berks install -d
168
+ $berks upload -d --no-freeze
169
+ exit 1
170
+ fi
171
+
172
+ for name in $($berks list -F json | jq -r '.cookbooks | .[] | .name');do
173
+ if [ "$match" == "" -o "$match" == "$name" ];then
174
+ berkshelf_cookbooks="$berkshelf_cookbooks $name"
175
+ if [ "$name" == "mu-tools" ];then # XXX kludge
176
+ can_skip_mu_repo=1
177
+ fi
178
+ fi
179
+ done
180
+
181
+ if [ "$nopurge" == "" -a "$all" != "1" ];then
182
+ echo "${GREEN}Purging old Chef resources derived from Berkshelf${NORM}"
183
+ cd $repodir
184
+ set +e
185
+ for name in $berkshelf_cookbooks;do
186
+ $knife cookbook delete $name --yes -a
187
+ done
188
+ set -e
189
+ fi
190
+
191
+ echo ""
192
+ echo "${GREEN}Uploading Berkshelf Chef cookbooks from ${BOLD}$repodir${NORM}"
193
+
194
+ if [ "$match" == "" ];then
195
+ cd $repodir && $berks upload --no-freeze --force || exit 1
196
+ elif [ "$berkshelf_cookbooks" != "" ];then
197
+ echo "${GREEN}Matching only: ${BOLD}${berkshelf_cookbooks}${NORM}${GREEN}${NORM}"
198
+ cd $repodir && $berks upload $berkshelf_cookbooks --no-freeze --force 2>&1 || echo "${YELLOW}Missing cookbooks ok when using -m if they're not supposed to have been in $repodir/Berksfile${NORM}"
199
+ fi
200
+ cd $MU_CHEF_CACHE
201
+ }
202
+
203
+ copied_repodirs=""
204
+
205
+ set_repo_path()
206
+ {
207
+ repo="$1"
208
+ reponame="`echo $repo | cut -d/ -f2 | sed -e 's/\.git$//'`"
209
+
210
+ if [ "$repo" == "$MU_REPO" -o "$repo" == "$mu_repo_name" ];then
211
+ orig_source="$MU_INSTALLDIR/lib"
212
+ else
213
+ orig_source="$MU_DATADIR/$reponame"
214
+ fi
215
+ current_repo_path=$orig_source
216
+
217
+ owner=`/usr/bin/stat -c '%U' "$orig_source" 2>/dev/null`
218
+
219
+ if [ "$USER" != "$owner" ];then
220
+ artifact_source="$MU_DATADIR/tmp/$reponame.$$"
221
+ echo "${GREEN}Cloning ${BOLD}$orig_source${NORM}${GREEN} into $artifact_source${NORM}"
222
+ mkdir -p "$artifact_source"
223
+ if [ "$repo" == "$MU_REPO" ];then
224
+ srcdir="$MU_INSTALLDIR/lib"
225
+ else
226
+ srcdir="$MU_DATADIR/$reponame"
227
+ fi
228
+ for subdir in cookbooks site_cookbooks roles environments data_bags Berksfile Berksfile.lock;do
229
+ if [ -e "$srcdir/$subdir" ];then
230
+ cp -a "$srcdir/$subdir" "$artifact_source/"
231
+ fi
232
+ done
233
+ tmp_dirs_to_remove="$artifact_source $tmp_dirs_to_remove"
234
+ copied_repodirs="${copied_repodirs} $artifact_source/"
235
+ current_repo_path="$artifact_source"
236
+ else
237
+ current_repo_path="$orig_source"
238
+ fi
239
+ }
240
+
241
+
242
+ all=0
243
+ while getopts "fb:c:npsgdhar:b:m:" opt; do
244
+ case $opt in
245
+ r)
246
+ arg_repos="$arg_repos $OPTARG"
247
+ ;;
248
+ a)
249
+ all=1
250
+ ;;
251
+ f)
252
+ force_sync=1
253
+ ;;
254
+ c)
255
+ force_commit=$OPTARG
256
+ ;;
257
+ b)
258
+ force_branch=$OPTARG
259
+ ;;
260
+ p)
261
+ purge=1
262
+ ;;
263
+ g)
264
+ bags_only=1
265
+ ;;
266
+ s)
267
+ cookbooks_only=1
268
+ ;;
269
+ m)
270
+ match=$OPTARG
271
+ ;;
272
+ d)
273
+ discard=1
274
+ ;;
275
+ h)
276
+ usage
277
+ ;;
278
+ \?)
279
+ usage
280
+ ;;
281
+ esac
282
+ done
283
+
284
+ use_on_disk=1
285
+ nopurge=1
286
+
287
+ if [ "$arg_repos" == "" ];then
288
+ all=1
289
+ fi
290
+ if [ "$purge" != "" ];then
291
+ nopurge=""
292
+ fi
293
+
294
+ if [ "$force_sync" != "" ];then
295
+ use_on_disk=0
296
+ fi
297
+ if [ "$force_commit" != "" ];then
298
+ use_on_disk=0
299
+ fi
300
+ if [ "$force_branch" != "" ];then
301
+ use_on_disk=0
302
+ fi
303
+
304
+ if [ "$force_commit" != "" -a "$force_sync" != "1" ];then
305
+ usage "Can't use -c without -f"
306
+ use_on_disk=0
307
+ fi
308
+ if echo $arg_repos | egrep -v '(^ )|( $)' | grep ' ' ;then
309
+ if [ "$force_commit" != "" ];then
310
+ usage "Can't have multiple -r options with -c"
311
+ fi
312
+ fi
313
+ if [ "$all" == "1" -a "$force_commit" != "" ];then
314
+ usage "Can't use -a with -c"
315
+ fi
316
+ if [ "$all" == "1" -a "$arg_repos" != "" ];then
317
+ usage "Can't use -a with -r"
318
+ fi
319
+
320
+ if [ "$all" == "1" ];then
321
+ for repo in $ADDTL_CHEF_REPOS $MU_REPO;do
322
+ reponame="`echo $repo | sed -e 's/\.git$//' | sed -e 's/.*\///'`"
323
+ REPOS="$REPOS $reponame"
324
+ done
325
+ else
326
+ for repo in $arg_repos;do
327
+ REPOS="$REPOS $repo"
328
+ done
329
+ fi
330
+
331
+ set_repo_path $MU_REPO
332
+ export MU_COOKBOOK_ROOT=$current_repo_path
333
+
334
+ if [ "$cookbooks_only" == "1" ];then
335
+ chef_artifacts="cookbooks site_cookbooks"
336
+ elif [ "$bags_only" == "1" ];then
337
+ chef_artifacts="data_bags"
338
+ else
339
+ chef_artifacts="site_cookbooks cookbooks roles environments data_bags"
340
+ fi
341
+
342
+ # Clear out the data bags we forcibly manufacture for Nagios users.
343
+ if [ "$USER" == "root" ];then
344
+ for dir in $MU_CHEF_CACHE/data_bags/nagios_users;do
345
+ if [ -d "$MU_DATADIR/users" -a -d $dir ];then
346
+ for admin in `ls $MU_DATADIR/users/`;do
347
+ rm -f "$dir/$admin.json"
348
+ done
349
+ fi
350
+ done
351
+ fi
352
+
353
+
354
+ if [ "$nopurge" == "" -a "$all" == "1" ];then
355
+ if [ "$use_on_disk" == "1" -o "$all" == "1" ];then
356
+ if [ "$cookbooks_only" == "1" ];then
357
+ $knife cookbook bulk delete --purge '.+' --yes 2>/dev/null
358
+ /bin/rm -rf $MU_CHEF_CACHE/cookbooks $MU_CHEF_CACHE/site_cookbooks
359
+ elif [ "$bags_only" == "1" ];then
360
+ # Nowadays we have data bags that are persistent and node-related. Leave
361
+ # them be, and only delete our automatic ones.
362
+ for bag in nagios_users nagios_servers demo;do
363
+ $knife data bag delete $bag --yes 2>/dev/null
364
+ done
365
+ else
366
+ $knife cookbook bulk delete --purge '.+' --yes 2>/dev/null
367
+ /bin/rm -rf $MU_CHEF_CACHE/cookbooks $MU_CHEF_CACHE/site_cookbooks
368
+ /bin/rm -rf $MU_CHEF_CACHE/roles $MU_CHEF_CACHE/environments $MU_CHEF_CACHE/data_bags
369
+ $knife role bulk delete '.*' --yes 2>/dev/null
370
+ for env in `$knife environment list | grep -v '_default$'`;do
371
+ $knife environment delete $env --yes 2>/dev/null
372
+ done
373
+ for bag in nagios_users nagios_servers demo;do
374
+ $knife data bag delete $bag --yes 2>/dev/null
375
+ done
376
+ fi
377
+ fi
378
+ fi
379
+
380
+
381
+ upload_cookbooks=""
382
+ berkshelf_cookbooks=""
383
+ upload_roles=""
384
+ upload_environments=""
385
+ upload_data_bags=""
386
+ tmp_dirs_to_remove=""
387
+ berkshelf_include_cookbooks=""
388
+
389
+ can_skip_mu_repo=0
390
+ for repo in $REPOS;do
391
+ skip_cookbooks=0
392
+ repo_name="`echo $repo | cut -d: -f1`"
393
+
394
+ if [ "$repo_name" == "$mu_repo_name" -a "$can_skip_mu_repo" == "1" ];then
395
+ echo "${YELLOW}Skipping ${BOLD}$repo_name${NORM}${YELLOW} cookbooks, which have already been uploaded by another Berksfile${NORM}"
396
+ chef_artifacts="`echo $chef_artifacts | sed -e 's/site_cookbooks//'`"
397
+ chef_artifacts="`echo $chef_artifacts | sed -e 's/cookbooks//'`"
398
+ fi
399
+ if [ "$nopurge" == "" -a "$all" != "1" ];then
400
+ echo "${GREEN}Purging old Chef resources derived from $repo_name${NORM}"
401
+ for resource in `grep ":$repo_name$" $manifest`;do
402
+ type="`echo $resource | cut -d: -f1`"
403
+ name="`echo $resource | cut -d: -f2`"
404
+ set +e
405
+ if [ "$type" == "cookbooks" -o "$type" == "site_cookbooks" ];then
406
+ /bin/rm -rf $MU_CHEF_CACHE/$type/$name
407
+ $knife cookbook delete $name --yes --all
408
+ elif [ "$type" == "roles" -a "$cookbooks_only" == "" ];then
409
+ /bin/rm -rf $MU_CHEF_CACHE/$type/$name.json
410
+ $knife role delete $name --yes
411
+ elif [ "$type" == "environments" -a "$cookbooks_only" == "" ];then
412
+ /bin/rm -rf $MU_CHEF_CACHE/$type/$name.json
413
+ $knife environment delete $name --yes
414
+ elif [ "$type" == "data_bags" -a "$cookbooks_only" == "" ];then
415
+ /bin/rm -rf $MU_CHEF_CACHE/$type/$name
416
+ $knife data bag delete $name --yes
417
+ fi
418
+ set -e
419
+ done
420
+ fi
421
+
422
+ set_repo_path $repo
423
+ artifact_source=$current_repo_path
424
+
425
+ branch=""
426
+
427
+ if echo $repo | grep ':';then
428
+ branch="`echo $repo | cut -d: -f2`"
429
+ elif [ "$force_branch" != "" ];then
430
+ branch=$force_branch
431
+ fi
432
+
433
+ cd $artifact_source || ( echo "Couldn't cd to $artifact_source!" ; exit 1 )
434
+ if [ -d "$artifact_source/.git" ];then
435
+ lastbranch="`git branch | egrep '^\* ' | awk '{print $2}'`"
436
+ fi
437
+
438
+ if [ "$branch" == "" ];then
439
+ if [ "$all" == "1" -a "$lastbranch" != "" ];then
440
+ branch=$lastbranch
441
+ else
442
+ branch="master"
443
+ fi
444
+ fi
445
+
446
+ if [ -d "$artifact_source/.git" ];then
447
+ if [ "$use_on_disk" == "" -o "$use_on_disk" == "0" ];then
448
+ # Stash unchecked local changes so we can put things back how we found them
449
+ if [ "$discard" != "1" ]; then
450
+ stashed_changes=1
451
+ if [ "`git stash | grep '^No local changes to save'`" ];then
452
+ stashed_changes=0
453
+ else
454
+ echo "${GREEN}Stashing changes from working tree in ${BOLD}$repo_name${NORM}"
455
+ git --no-pager stash list | head -1
456
+ fi
457
+ fi
458
+
459
+ # Swap branches, if pertinent
460
+ if [ "$branch" != "$lastbranch" ];then
461
+ echo "${YELLOW}Switching from $lastbranch to $branch${NORM} in `pwd`"
462
+ set +e
463
+ git fetch
464
+ set -e
465
+ git checkout $branch
466
+ else
467
+ set +e
468
+ git fetch
469
+ set -e
470
+ git checkout -f $branch
471
+ fi
472
+
473
+ if [ "$force_sync" == "1" ]; then
474
+ echo "${RED}Forcibly resetting $repo_name to branch $branch${NORM}"
475
+ if [ ! -z $force_commit ];then
476
+ # We got asked to reset to a particular commit, do so
477
+ echo "${RED}Using comment $force_commit${NORM}"
478
+ git reset --hard $force_commit
479
+ else
480
+ git reset --hard
481
+ fi
482
+ echo "${YELLOW}Updating $repo_name branch $branch from origin${NORM}"
483
+ git pull origin $branch
484
+ else
485
+ echo "${YELLOW}Updating $repo_name branch $branch from origin${NORM}"
486
+ set +e
487
+ git pull origin $branch
488
+ set -e
489
+ fi
490
+ fi
491
+ fi
492
+
493
+ if [ "$repo_name" != "$mu_repo_name" ];then
494
+ if grep "AUTO-INCLUDE STANDARD MU COOKBOOKS" $artifact_source/Berksfile > /dev/null 2>&1;then
495
+ export MU_DEPRESOLVE=1
496
+ fi
497
+ else
498
+ unset MU_DEPRESOLVE
499
+ fi
500
+
501
+ create_berksfile=0
502
+ if [ -f "$artifact_source/Berksfile" ];then
503
+ if ( echo $chef_artifacts | grep cookbooks > /dev/null ) ;then
504
+ add_berkshelf_cookbooks "$artifact_source"
505
+ fi
506
+ else
507
+ cp $MU_INSTALLDIR/lib/extras/platform_berksfile_base $artifact_source/Berksfile
508
+ create_berksfile=1
509
+ export MU_DEPRESOLVE=1
510
+ fi
511
+
512
+ for artifact in $chef_artifacts;do
513
+ purge_manifest $repo_name $artifact
514
+ if [ -e "$artifact_source/$artifact" ];then
515
+ # Overwrite anything from earlier in the stream with a conflicting name
516
+ for f in `ls $artifact_source/$artifact/`;do
517
+ if [ "$artifact" == "environments" -o "$artifact" == "roles" ];then
518
+ shortname="`echo $f | sed -e 's/\.json//'`"
519
+ else
520
+ shortname=$f
521
+ fi
522
+ if [ -e "$MU_CHEF_CACHE/$artifact/$f" -a "$artifact" != "data_bags" ];then
523
+ set +e
524
+ oldsrc="`grep "^$artifact:$shortname:" $manifest`"
525
+ set -e
526
+ if [ "$artifact" == "cookbooks" -o "$artifact" == "site_cookbooks" ];then
527
+ if [ $create_berksfile == "1" ];then
528
+ echo "cookbook '$shortname', path: ENV['MU_DATADIR']+'/$repo_name/$artifact/$shortname'" >> "$artifact_source/Berksfile"
529
+ fi
530
+ fi
531
+ if [ "`diff -r $artifact_source/$artifact/$f $MU_CHEF_CACHE/$artifact/$f`" != "" ];then
532
+ if [ "$oldsrc" == "" ];then
533
+ echo "${YELLOW}Overriding $artifact/$shortname with ${BOLD}$repo_name/$artifact/$shortname${NORM}"
534
+ else
535
+ echo "${YELLOW}Overriding $artifact/$shortname from ${BOLD}$oldsrc${NORM} with ${BOLD}$repo_name/$artifact/$shortname${NORM}"
536
+ fi
537
+ /bin/rm -rf $MU_CHEF_CACHE/$artifact/$f
538
+ elif [ "$oldsrc" != "" ];then
539
+ echo "${YELLOW}Duplicate artifact ${BOLD}$artifact/$shortname${NORM} from ${BOLD}$oldsrc${NORM}, ignoring"
540
+ fi
541
+ else
542
+ if [ "$artifact" == "cookbooks" -o "$artifact" == "site_cookbooks" ];then
543
+ if [ $create_berksfile == "1" ];then
544
+ echo "cookbook '$shortname', path: ENV['MU_DATADIR']+'/$repo_name/$artifact/$shortname'" >> "$artifact_source/Berksfile"
545
+ fi
546
+ if ! [[ "$berkshelf_cookbooks" =~ "$shortname" ]];then
547
+ if [ "$match" == "" -o "$match" == "$shortname" ];then
548
+ echo "${GREEN}Adding ${BOLD}$repo_name/$artifact/$shortname${NORM}"
549
+ fi
550
+ fi
551
+ else
552
+ if [ "$match" == "" -o "$match" == "$shortname" ];then
553
+ echo "${GREEN}Adding ${BOLD}$repo_name/$artifact/$shortname${NORM}"
554
+ fi
555
+ fi
556
+ fi
557
+ update_manifest $repo $artifact $f
558
+ if [ "$artifact" == "cookbooks" -o "$artifact" == "site_cookbooks" ];then
559
+ if ! [[ "$berkshelf_cookbooks" =~ "$shortname" ]];then
560
+ upload_cookbooks="$upload_cookbooks $shortname"
561
+ test -d "$MU_CHEF_CACHE/$artifact/$shortname" || mkdir -p "$MU_CHEF_CACHE/$artifact/$shortname"
562
+ /bin/cp -rf $artifact_source/$artifact/$shortname $MU_CHEF_CACHE/$artifact
563
+ fi
564
+ elif [ "$artifact" == "roles" ];then
565
+ upload_roles="$upload_roles $shortname"
566
+ elif [ "$artifact" == "environments" ];then
567
+ upload_environments="$upload_environments $shortname"
568
+ elif [ "$artifact" == "data_bags" ];then
569
+ upload_data_bags="$upload_data_bags $shortname"
570
+ fi
571
+ done
572
+ if [ "$artifact" != "cookbooks" -a "$artifact" != "site_cookbooks" ];then
573
+ /bin/cp -rf $artifact_source/$artifact $MU_CHEF_CACHE
574
+ fi
575
+ fi
576
+ done
577
+
578
+ # If we just made up a Berksfile, use it to upload things
579
+ if [ $create_berksfile == "1" ];then
580
+ add_berkshelf_cookbooks "$artifact_source"
581
+ fi
582
+
583
+ set +x
584
+
585
+ if [ -d "$artifact_source/.git" ];then
586
+ if [ "$use_on_disk" == "" ];then
587
+ if [ "$branch" != "$lastbranch" -a "$discard" != "1" ];then
588
+ echo "${GREEN}Returning to $lastbranch${NORM}"
589
+ git checkout $lastbranch
590
+ fi
591
+ if [ "$stashed_changes" == "1" ];then
592
+ echo "${GREEN}Restoring stashed changes from working tree in ${BOLD}$repo_name${NORM}"
593
+ git stash pop
594
+ fi
595
+ fi
596
+ fi
597
+ done
598
+
599
+ # Add some ad-hoc data bag contents for nagios_users. These are Mu logins
600
+ # and contacts based on the Mu admins stored in $MU_DATADIR/users.
601
+ if [ -d "$MU_DATADIR/users" -a "$USER" == "root" ];then
602
+ bagdir="$MU_CHEF_CACHE/data_bags/nagios_users"
603
+ test -d "$bagdir" || mkdir -p "$bagdir"
604
+ upload_data_bags="nagios_users $upload_data_bags"
605
+
606
+ set +e
607
+
608
+ cd $MU_CHEF_CACHE
609
+ bag_created=0
610
+ for admin in mu;do
611
+ if [ -f "$bagdir/$admin.json" ];then
612
+ if [ "$bagcreated" == "0" ];then
613
+ bagcreated=1
614
+ $knife data bag create nagios_users
615
+ fi
616
+ $knife data bag from file nagios_users $bagdir/$admin.json
617
+ fi
618
+ if [ ! -f "$bagdir/$admin.json" ];then
619
+ id="`echo $admin | sed -e 's/@/_/'`"
620
+ crypt="*"
621
+ if [ -f $MU_DATADIR/users/$admin/monitoring_email ];then
622
+ email="`cat $MU_DATADIR/users/$admin/monitoring_email`"
623
+ else
624
+ email="`cat $MU_DATADIR/users/$admin/email`"
625
+ fi
626
+ if [ "$match" == "" -o "$match" == "$id" ];then
627
+ if [ "$email" != "none" ];then
628
+ echo "${GREEN}Adding $id to nagios_users data bag (email $email)${NORM}"
629
+ echo "{ \"id\": \"$id\", \"groups\": \"sysadmin\", \"htpasswd\": \"$crypt\", \"openid\": \"http://nagiosadmin.myopenid.com/\", \"nagios\": { \"pager\": \"$email\", \"email\": \"$email\" } }" > "$bagdir/$admin.json"
630
+ else
631
+ echo "${GREEN}Adding $id to nagios_users data bag (No email)${NORM}"
632
+ echo "{ \"id\": \"$id\", \"groups\": \"sysadmin\", \"htpasswd\": \"$crypt\", \"openid\": \"http://nagiosadmin.myopenid.com/\", \"nagios\": { \"pager\": \"devnull@localhost\", \"email\": \"devnull@localhost\" } }" > "$bagdir/$admin.json"
633
+ fi
634
+ fi
635
+ fi
636
+ done
637
+ fi
638
+
639
+ # Somehow directory gets lost. Set it to something sane
640
+ cd $HOMEDIR
641
+ if [ "$all" != "1" ];then
642
+ if [ "$bags_only" == "1" ];then
643
+ for bag in $upload_data_bags;do
644
+ bagcreated=0
645
+ for file in `ls -1 $MU_CHEF_CACHE/data_bags/$bag/*.json`;do
646
+ itemname="`echo $file | sed -r 's/.*\/([^\\]+).json$/\1/'`"
647
+ if [ "$match" == "" -o "$match" == "$itemname" ];then
648
+ if [ "$bagcreated" == "0" ];then
649
+ bagcreated=1
650
+ $knife data bag create $bag
651
+ fi
652
+ $knife data bag from file $bag $file
653
+ fi
654
+ done
655
+ done
656
+ else
657
+ for role in $upload_roles;do
658
+ if [ "$match" == "" -o "$match" == "$role" ];then
659
+ $knife role from file $MU_CHEF_CACHE/roles/$role.json
660
+ fi
661
+ done
662
+ for env in $upload_environments;do
663
+ if [ "$match" == "" -o "$match" == "$env" ];then
664
+ $knife environment from file $MU_CHEF_CACHE/environments/$env.json
665
+ fi
666
+ done
667
+ set +e
668
+ for bag in $upload_data_bags;do
669
+ bagcreated=0
670
+ for file in `ls -1 $MU_CHEF_CACHE/data_bags/$bag/*.json`;do
671
+ itemname="`echo $file | sed -r 's/.*\/([^\\]+).json$/\1/'`"
672
+ if [ "$match" == "" -o "$match" == "$itemname" ];then
673
+ if [ "$bagcreated" == "0" ];then
674
+ bagcreated=1
675
+ $knife data bag create $bag
676
+ fi
677
+ $knife data bag from file $bag $file
678
+ fi
679
+ done
680
+ done
681
+ set -e
682
+ fi
683
+ else
684
+ databagdir="$MU_CHEF_CACHE/data_bags/"
685
+
686
+ if [ "$cookbooks_only" == "1" ];then
687
+ if [ "$tmp_dirs_to_remove" != "" ];then
688
+ echo "${GREEN}Cleaning up temporary directories: ${BOLD}$tmp_dirs_to_remove${NORM}"
689
+ rm -rf $tmp_dirs_to_remove
690
+ fi
691
+ echo "${GREEN}Cookbook upload complete and -s specified, all done.${NORM}"
692
+ exit
693
+ elif [ "$bags_only" == "1" ];then
694
+ if [ "$match" != "" ];then
695
+ echo "Uploading data bag items named '$match'"
696
+ fi
697
+ for Dir in $(find $databagdir* -mindepth 0 -maxdepth 1 -type d );do
698
+ folder=$(basename $Dir);
699
+ bagcreated=0
700
+ files="$databagdir$folder/*.json"
701
+ for file in $files;do
702
+ itemname="`echo $file | sed -r 's/.*\/([^\\]+).json$/\1/'`"
703
+ if [ "$match" == "" -o "$match" == "$itemname" ];then
704
+ if [ "$bagcreated" == "0" ];then
705
+ bagcreated=1
706
+ $knife data bag create $folder
707
+ fi
708
+ $knife data bag from file $folder $file
709
+ fi
710
+ done
711
+ done
712
+ else
713
+ cd $MU_CHEF_CACHE
714
+ if [ "$match" != "" ];then
715
+ echo "Uploading any non-cookbook items named '$match'"
716
+ fi
717
+
718
+ _files="$MU_CHEF_CACHE/roles/*.json"
719
+ for file in $_files;do
720
+ role="`echo $file | sed -r 's/.*\/([^\\]+).json$/\1/'`"
721
+ if [ "$match" == "" -o "$match" == "$role" ];then
722
+ $knife role from file $file
723
+ fi
724
+ done
725
+
726
+ _files="$MU_CHEF_CACHE/environments/*.json"
727
+ for file in $_files;do
728
+ env="`echo $file | sed -r 's/.*\/([^\\]+).json$/\1/'`"
729
+ if [ "$match" == "" -o "$match" == "$env" ];then
730
+ $knife environment from file $file
731
+ fi
732
+ done
733
+
734
+ for Dir in $(find $databagdir* -mindepth 0 -maxdepth 1 -type d );do
735
+ folder=$(basename $Dir);
736
+ bagcreated=0
737
+ set +e
738
+ files="$databagdir$folder/*.json"
739
+ for file in $files;do
740
+ itemname="`echo $file | sed -r 's/.*\/([^\\]+).json$/\1/'`"
741
+ if [ "$match" == "" -o "$match" == "$itemname" ];then
742
+ if [ "$bagcreated" == "0" ];then
743
+ bagcreated=1
744
+ $knife data bag create $folder
745
+ fi
746
+ $knife data bag from file $folder $file
747
+ fi
748
+ done
749
+ set -e
750
+ done
751
+ fi
752
+ fi
753
+
754
+ if [ "$tmp_dirs_to_remove" != "" ];then
755
+ echo "${GREEN}Cleaning up temporary directories: ${BOLD}$tmp_dirs_to_remove${NORM}"
756
+ rm -rf $tmp_dirs_to_remove
757
+ fi