cloud-toaster 1.1.2

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 (515) hide show
  1. checksums.yaml +15 -0
  2. data/LICENSE +202 -0
  3. data/README.md +54 -0
  4. data/Rakefile +51 -0
  5. data/VERSION +1 -0
  6. data/bin/strace-4.8_patched/strace-i686 +0 -0
  7. data/bin/strace-4.8_patched/strace-x86_64 +0 -0
  8. data/bin/toaster +74 -0
  9. data/chef/cookbooks/chef-solo-search/CHANGELOG +16 -0
  10. data/chef/cookbooks/chef-solo-search/Gemfile +8 -0
  11. data/chef/cookbooks/chef-solo-search/LICENSE +202 -0
  12. data/chef/cookbooks/chef-solo-search/NOTICE +18 -0
  13. data/chef/cookbooks/chef-solo-search/README.md +143 -0
  14. data/chef/cookbooks/chef-solo-search/Rakefile +10 -0
  15. data/chef/cookbooks/chef-solo-search/libraries/search/overrides.rb +100 -0
  16. data/chef/cookbooks/chef-solo-search/libraries/search/parser.rb +222 -0
  17. data/chef/cookbooks/chef-solo-search/libraries/search.rb +75 -0
  18. data/chef/cookbooks/chef-solo-search/libraries/vendor/chef/solr_query/lucene.treetop +150 -0
  19. data/chef/cookbooks/chef-solo-search/libraries/vendor/chef/solr_query/lucene_nodes.rb +285 -0
  20. data/chef/cookbooks/chef-solo-search/libraries/vendor/chef/solr_query/query_transform.rb +65 -0
  21. data/chef/cookbooks/chef-solo-search/metadata.rb +11 -0
  22. data/chef/cookbooks/chef-solo-search/recipes/default.rb +3 -0
  23. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/node/alpha.json +10 -0
  24. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/node/beta.json +10 -0
  25. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/node/without_json_class.json +7 -0
  26. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/users/jerry.json +8 -0
  27. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/users/lea.json +10 -0
  28. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/users/mike.json +13 -0
  29. data/chef/cookbooks/chef-solo-search/tests/data/data_bags/users/tom.json +10 -0
  30. data/chef/cookbooks/chef-solo-search/tests/gemfiles/Gemfile.10 +4 -0
  31. data/chef/cookbooks/chef-solo-search/tests/gemfiles/Gemfile.11 +5 -0
  32. data/chef/cookbooks/chef-solo-search/tests/test_data_bags.rb +45 -0
  33. data/chef/cookbooks/chef-solo-search/tests/test_search.rb +244 -0
  34. data/chef/cookbooks/lxc/attributes/create_lxc.rb +8 -0
  35. data/chef/cookbooks/lxc/attributes/general.rb +15 -0
  36. data/chef/cookbooks/lxc/attributes/init_bare_os.rb +15 -0
  37. data/chef/cookbooks/lxc/attributes/init_proto.rb +18 -0
  38. data/chef/cookbooks/lxc/attributes/install_ruby.rb +51 -0
  39. data/chef/cookbooks/lxc/attributes/mount_volume.rb +11 -0
  40. data/chef/cookbooks/lxc/attributes/setup_host.rb +9 -0
  41. data/chef/cookbooks/lxc/attributes/setup_proxy.rb +3 -0
  42. data/chef/cookbooks/lxc/attributes/start_lxc.rb +11 -0
  43. data/chef/cookbooks/lxc/attributes/stop_lxc.rb +3 -0
  44. data/chef/cookbooks/lxc/files/install.chef.sh +78 -0
  45. data/chef/cookbooks/lxc/metadata.json +6 -0
  46. data/chef/cookbooks/lxc/recipes/create_lxc.rb +106 -0
  47. data/chef/cookbooks/lxc/recipes/init_bare_os.rb +82 -0
  48. data/chef/cookbooks/lxc/recipes/init_proto.rb +417 -0
  49. data/chef/cookbooks/lxc/recipes/install_docker.rb +61 -0
  50. data/chef/cookbooks/lxc/recipes/install_ruby.rb +28 -0
  51. data/chef/cookbooks/lxc/recipes/mount_volume.rb +63 -0
  52. data/chef/cookbooks/lxc/recipes/setup_database.rb +22 -0
  53. data/chef/cookbooks/lxc/recipes/setup_host.rb +179 -0
  54. data/chef/cookbooks/lxc/recipes/setup_proxy.rb +157 -0
  55. data/chef/cookbooks/lxc/recipes/start_lxc.rb +180 -0
  56. data/chef/cookbooks/lxc/recipes/stop_lxc.rb +86 -0
  57. data/chef/cookbooks/mysql/CHANGELOG.md +391 -0
  58. data/chef/cookbooks/mysql/README.md +211 -0
  59. data/chef/cookbooks/mysql/attributes/default.rb +22 -0
  60. data/chef/cookbooks/mysql/libraries/helpers.rb +277 -0
  61. data/chef/cookbooks/mysql/libraries/matchers.rb +17 -0
  62. data/chef/cookbooks/mysql/libraries/provider_mysql_client.rb +10 -0
  63. data/chef/cookbooks/mysql/libraries/provider_mysql_client_debian.rb +37 -0
  64. data/chef/cookbooks/mysql/libraries/provider_mysql_client_fedora.rb +38 -0
  65. data/chef/cookbooks/mysql/libraries/provider_mysql_client_freebsd.rb +33 -0
  66. data/chef/cookbooks/mysql/libraries/provider_mysql_client_omnios.rb +41 -0
  67. data/chef/cookbooks/mysql/libraries/provider_mysql_client_rhel.rb +42 -0
  68. data/chef/cookbooks/mysql/libraries/provider_mysql_client_smartos.rb +33 -0
  69. data/chef/cookbooks/mysql/libraries/provider_mysql_client_suse.rb +37 -0
  70. data/chef/cookbooks/mysql/libraries/provider_mysql_client_ubuntu.rb +37 -0
  71. data/chef/cookbooks/mysql/libraries/provider_mysql_service.rb +10 -0
  72. data/chef/cookbooks/mysql/libraries/provider_mysql_service_debian.rb +193 -0
  73. data/chef/cookbooks/mysql/libraries/provider_mysql_service_fedora.rb +157 -0
  74. data/chef/cookbooks/mysql/libraries/provider_mysql_service_freebsd.rb +151 -0
  75. data/chef/cookbooks/mysql/libraries/provider_mysql_service_omnios.rb +232 -0
  76. data/chef/cookbooks/mysql/libraries/provider_mysql_service_rhel.rb +318 -0
  77. data/chef/cookbooks/mysql/libraries/provider_mysql_service_smartos.rb +216 -0
  78. data/chef/cookbooks/mysql/libraries/provider_mysql_service_suse.rb +170 -0
  79. data/chef/cookbooks/mysql/libraries/provider_mysql_service_ubuntu.rb +218 -0
  80. data/chef/cookbooks/mysql/libraries/resource_mysql_client.rb +11 -0
  81. data/chef/cookbooks/mysql/libraries/resource_mysql_service.rb +194 -0
  82. data/chef/cookbooks/mysql/metadata.json +40 -0
  83. data/chef/cookbooks/mysql/metadata.rb +20 -0
  84. data/chef/cookbooks/mysql/recipes/client.rb +22 -0
  85. data/chef/cookbooks/mysql/recipes/server.rb +33 -0
  86. data/chef/cookbooks/mysql/recipes/server_deprecated.rb +23 -0
  87. data/chef/cookbooks/mysql/templates/default/5.0/my.cnf.erb +38 -0
  88. data/chef/cookbooks/mysql/templates/default/5.1/my.cnf.erb +38 -0
  89. data/chef/cookbooks/mysql/templates/default/5.5/my.cnf.erb +38 -0
  90. data/chef/cookbooks/mysql/templates/default/5.6/my.cnf.erb +39 -0
  91. data/chef/cookbooks/mysql/templates/default/apparmor/usr.sbin.mysqld.erb +40 -0
  92. data/chef/cookbooks/mysql/templates/default/debian/debian.cnf.erb +12 -0
  93. data/chef/cookbooks/mysql/templates/default/debian/mysql-server.seed.erb +10 -0
  94. data/chef/cookbooks/mysql/templates/default/deprecated/my.cnf.erb +374 -0
  95. data/chef/cookbooks/mysql/templates/default/grants/grants.sql.erb +27 -0
  96. data/chef/cookbooks/mysql/templates/default/omnios/mysql.xml.erb +26 -0
  97. data/chef/cookbooks/mysql/templates/default/omnios/svc.method.mysqld.erb +29 -0
  98. data/chef/cookbooks/mysql/templates/default/smartos/mysql.xml.erb +32 -0
  99. data/chef/cookbooks/mysql/templates/default/smartos/svc.method.mysqld.erb +29 -0
  100. data/chef/cookbooks/openssl/README.md +37 -0
  101. data/chef/cookbooks/openssl/libraries/secure_password.rb +37 -0
  102. data/chef/cookbooks/openssl/metadata.json +30 -0
  103. data/chef/cookbooks/openssl/metadata.rb +8 -0
  104. data/chef/cookbooks/openssl/recipes/default.rb +19 -0
  105. data/chef/cookbooks/ssh/attributes/default.rb +8 -0
  106. data/chef/cookbooks/ssh/recipes/authorize_key.rb +20 -0
  107. data/chef/cookbooks/toaster/attributes/testing.rb +37 -0
  108. data/chef/cookbooks/toaster/libraries/default.rb +61 -0
  109. data/chef/cookbooks/toaster/recipes/post__cakephp__default.rb +27 -0
  110. data/chef/cookbooks/toaster/recipes/post__cube__default.rb +26 -0
  111. data/chef/cookbooks/toaster/recipes/post__drupal__default.rb +16 -0
  112. data/chef/cookbooks/toaster/recipes/post__icinga__default.rb +9 -0
  113. data/chef/cookbooks/toaster/recipes/post__node__default.rb +16 -0
  114. data/chef/cookbooks/toaster/recipes/post__virtualbox__default.rb +12 -0
  115. data/chef/cookbooks/toaster/recipes/post__wordpress__default.rb +12 -0
  116. data/chef/cookbooks/toaster/recipes/pre__aegir__default.rb +12 -0
  117. data/chef/cookbooks/toaster/recipes/pre__app__default.rb +3 -0
  118. data/chef/cookbooks/toaster/recipes/pre__cakephp__default.rb +24 -0
  119. data/chef/cookbooks/toaster/recipes/pre__cube__default.rb +9 -0
  120. data/chef/cookbooks/toaster/recipes/pre__disco__default.rb +21 -0
  121. data/chef/cookbooks/toaster/recipes/pre__drbd__default.rb +7 -0
  122. data/chef/cookbooks/toaster/recipes/pre__eaccelerator__default.rb +2 -0
  123. data/chef/cookbooks/toaster/recipes/pre__elasticsearch-head__default.rb +11 -0
  124. data/chef/cookbooks/toaster/recipes/pre__elasticsearch__default.rb +6 -0
  125. data/chef/cookbooks/toaster/recipes/pre__gitosis__default.rb +17 -0
  126. data/chef/cookbooks/toaster/recipes/pre__kafka__default.rb +3 -0
  127. data/chef/cookbooks/toaster/recipes/pre__munin__server.rb +6 -0
  128. data/chef/cookbooks/toaster/recipes/pre__mysql__server.rb +4 -0
  129. data/chef/cookbooks/toaster/recipes/pre__nagios__default.rb +3 -0
  130. data/chef/cookbooks/toaster/recipes/pre__netkernel__default.rb +24 -0
  131. data/chef/cookbooks/toaster/recipes/pre__php__default.rb +2 -0
  132. data/chef/cookbooks/toaster/recipes/pre__postgresql__server.rb +3 -0
  133. data/chef/cookbooks/toaster/recipes/pre__pxe_dust__default.rb +9 -0
  134. data/chef/cookbooks/toaster/recipes/pre__pxe_install_server__default.rb +6 -0
  135. data/chef/cookbooks/toaster/recipes/pre__riak__default.rb +40 -0
  136. data/chef/cookbooks/toaster/recipes/pre__sensu__default.rb +9 -0
  137. data/chef/cookbooks/toaster/recipes/pre__sol__default.rb +2 -0
  138. data/chef/cookbooks/toaster/recipes/pre__solr__default.rb +6 -0
  139. data/chef/cookbooks/toaster/recipes/pre__sonar__default.rb +2 -0
  140. data/chef/cookbooks/toaster/recipes/pre__storm__default.rb +3 -0
  141. data/chef/cookbooks/toaster/recipes/pre__vmware__tools.rb +4 -0
  142. data/chef/cookbooks/toaster/recipes/pre__wordpress__default.rb +17 -0
  143. data/chef/cookbooks/toaster/recipes/pre__xen__default.rb +7 -0
  144. data/chef/cookbooks/toaster/recipes/pre__znc__default.rb +7 -0
  145. data/chef/cookbooks/toaster/recipes/testing.rb +241 -0
  146. data/chef/cookbooks/toaster/recipes/testing_post.rb +36 -0
  147. data/chef/cookbooks/yum/CHANGELOG.md +212 -0
  148. data/chef/cookbooks/yum/README.md +268 -0
  149. data/chef/cookbooks/yum/attributes/main.rb +97 -0
  150. data/chef/cookbooks/yum/libraries/matchers.rb +27 -0
  151. data/chef/cookbooks/yum/metadata.json +34 -0
  152. data/chef/cookbooks/yum/metadata.rb +13 -0
  153. data/chef/cookbooks/yum/providers/globalconfig.rb +37 -0
  154. data/chef/cookbooks/yum/providers/repository.rb +85 -0
  155. data/chef/cookbooks/yum/recipes/default.rb +34 -0
  156. data/chef/cookbooks/yum/resources/globalconfig.rb +105 -0
  157. data/chef/cookbooks/yum/resources/repository.rb +63 -0
  158. data/chef/cookbooks/yum/templates/default/main.erb +251 -0
  159. data/chef/cookbooks/yum/templates/default/repo.erb +109 -0
  160. data/chef/cookbooks/yum-mysql-community/CHANGELOG.md +67 -0
  161. data/chef/cookbooks/yum-mysql-community/README.md +137 -0
  162. data/chef/cookbooks/yum-mysql-community/attributes/mysql-connectors-community.rb +31 -0
  163. data/chef/cookbooks/yum-mysql-community/attributes/mysql55-community.rb +29 -0
  164. data/chef/cookbooks/yum-mysql-community/attributes/mysql56-community.rb +31 -0
  165. data/chef/cookbooks/yum-mysql-community/files/default/mysql_pubkey.asc +33 -0
  166. data/chef/cookbooks/yum-mysql-community/metadata.json +30 -0
  167. data/chef/cookbooks/yum-mysql-community/metadata.rb +8 -0
  168. data/chef/cookbooks/yum-mysql-community/recipes/connectors.rb +48 -0
  169. data/chef/cookbooks/yum-mysql-community/recipes/mysql55.rb +48 -0
  170. data/chef/cookbooks/yum-mysql-community/recipes/mysql56.rb +48 -0
  171. data/config.json +34 -0
  172. data/lib/toaster/api.rb +447 -0
  173. data/lib/toaster/chef/chef_listener.rb +514 -0
  174. data/lib/toaster/chef/chef_node_inspector.rb +165 -0
  175. data/lib/toaster/chef/chef_util.rb +865 -0
  176. data/lib/toaster/chef/failsafe_resource_parser.rb +140 -0
  177. data/lib/toaster/chef/resource_inspector.rb +536 -0
  178. data/lib/toaster/db/cache.rb +98 -0
  179. data/lib/toaster/db/cached_db.rb +53 -0
  180. data/lib/toaster/db/cgi_session_cache.rb +209 -0
  181. data/lib/toaster/db/db.rb +98 -0
  182. data/lib/toaster/db/mysql.rb +18 -0
  183. data/lib/toaster/db/ram_cache.rb +203 -0
  184. data/lib/toaster/markup/jdom-1.1.jar +0 -0
  185. data/lib/toaster/markup/jdom-b7.jar +0 -0
  186. data/lib/toaster/markup/markup_util.rb +437 -0
  187. data/lib/toaster/markup/vmtools-utils-0.5.jar +0 -0
  188. data/lib/toaster/markup/xmldiff.sh +5 -0
  189. data/lib/toaster/model/additional_property.rb +11 -0
  190. data/lib/toaster/model/automation.rb +218 -0
  191. data/lib/toaster/model/automation_attribute.rb +13 -0
  192. data/lib/toaster/model/automation_run.rb +104 -0
  193. data/lib/toaster/model/ignore_property.rb +11 -0
  194. data/lib/toaster/model/key_value_pair.rb +59 -0
  195. data/lib/toaster/model/run_attribute.rb +17 -0
  196. data/lib/toaster/model/state.rb +17 -0
  197. data/lib/toaster/model/state_change.rb +79 -0
  198. data/lib/toaster/model/task.rb +292 -0
  199. data/lib/toaster/model/task_execution.rb +76 -0
  200. data/lib/toaster/model/task_parameter.rb +66 -0
  201. data/lib/toaster/model/user.rb +32 -0
  202. data/lib/toaster/ohai/_disabled_/network_ports.rb +81 -0
  203. data/lib/toaster/ohai/apache/apache.rb +48 -0
  204. data/lib/toaster/ohai/cron/cron.rb +32 -0
  205. data/lib/toaster/ohai/files/_meta.rb +30 -0
  206. data/lib/toaster/ohai/files/files.rb +20 -0
  207. data/lib/toaster/ohai/gems/gems.rb +19 -0
  208. data/lib/toaster/ohai/groups/groups.rb +20 -0
  209. data/lib/toaster/ohai/iptables/iptables.rb +48 -0
  210. data/lib/toaster/ohai/mounts/mounts.rb +26 -0
  211. data/lib/toaster/ohai/mysql/mysql.rb +31 -0
  212. data/lib/toaster/ohai/packages/_meta.rb +86 -0
  213. data/lib/toaster/ohai/packages/packages.rb +33 -0
  214. data/lib/toaster/ohai/ports/ports.rb +21 -0
  215. data/lib/toaster/ohai/routes/routes.rb +25 -0
  216. data/lib/toaster/ohai/services/services.rb +42 -0
  217. data/lib/toaster/ohai/users/users.rb +17 -0
  218. data/lib/toaster/state/convergence.rb +197 -0
  219. data/lib/toaster/state/idempotence.rb +192 -0
  220. data/lib/toaster/state/ptrace_util.rb +48 -0
  221. data/lib/toaster/state/state_node.rb +105 -0
  222. data/lib/toaster/state/state_transition.rb +38 -0
  223. data/lib/toaster/state/state_transition_graph.rb +701 -0
  224. data/lib/toaster/state/syscall_tracer.rb +317 -0
  225. data/lib/toaster/state/system_state.rb +349 -0
  226. data/lib/toaster/state/transition_edge.rb +65 -0
  227. data/lib/toaster/test/test_attribute.rb +19 -0
  228. data/lib/toaster/test/test_case.rb +175 -0
  229. data/lib/toaster/test/test_coverage.rb +147 -0
  230. data/lib/toaster/test/test_coverage_goal.rb +108 -0
  231. data/lib/toaster/test/test_generator.rb +246 -0
  232. data/lib/toaster/test/test_orchestrator.rb +165 -0
  233. data/lib/toaster/test/test_result.rb +73 -0
  234. data/lib/toaster/test/test_runner.rb +394 -0
  235. data/lib/toaster/test/test_suite.rb +151 -0
  236. data/lib/toaster/test_manager.rb +281 -0
  237. data/lib/toaster/toaster_app_service.rb +141 -0
  238. data/lib/toaster/util/blocking_map.rb +80 -0
  239. data/lib/toaster/util/combinatorial.rb +58 -0
  240. data/lib/toaster/util/config.rb +103 -0
  241. data/lib/toaster/util/docker.rb +71 -0
  242. data/lib/toaster/util/logging.rb +19 -0
  243. data/lib/toaster/util/lxc.rb +383 -0
  244. data/lib/toaster/util/mem_dump.rb +38 -0
  245. data/lib/toaster/util/proxy.rb +23 -0
  246. data/lib/toaster/util/timestamp.rb +131 -0
  247. data/lib/toaster/util/util.rb +437 -0
  248. data/lib/toaster/web_ui.rb +7 -0
  249. data/webapp/Gemfile +46 -0
  250. data/webapp/Gemfile.lock +237 -0
  251. data/webapp/Rakefile +6 -0
  252. data/webapp/app/assets/fonts/font.woff +0 -0
  253. data/webapp/app/assets/images/final_state.gif +0 -0
  254. data/webapp/app/assets/images/initial_state.gif +0 -0
  255. data/webapp/app/assets/images/loading.gif +0 -0
  256. data/webapp/app/assets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  257. data/webapp/app/assets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  258. data/webapp/app/assets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  259. data/webapp/app/assets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  260. data/webapp/app/assets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  261. data/webapp/app/assets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  262. data/webapp/app/assets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  263. data/webapp/app/assets/images/ui-icons_222222_256x240.png +0 -0
  264. data/webapp/app/assets/javascripts/analysis.js.coffee +3 -0
  265. data/webapp/app/assets/javascripts/application.js +16 -0
  266. data/webapp/app/assets/javascripts/execs.js.coffee +3 -0
  267. data/webapp/app/assets/javascripts/graph.js +441 -0
  268. data/webapp/app/assets/javascripts/jquery-1.7.2.js +9404 -0
  269. data/webapp/app/assets/javascripts/jquery-ui-1.8.22.js +11529 -0
  270. data/webapp/app/assets/javascripts/jquery.cookie.js +96 -0
  271. data/webapp/app/assets/javascripts/jquery.hotkeys.js +99 -0
  272. data/webapp/app/assets/javascripts/jquery.jstree.js +4551 -0
  273. data/webapp/app/assets/javascripts/jsPlumb/jquery.jsPlumb-1.3.14-all-min.js +1 -0
  274. data/webapp/app/assets/javascripts/jstree.util.js +53 -0
  275. data/webapp/app/assets/javascripts/scripts.js.coffee +3 -0
  276. data/webapp/app/assets/javascripts/settings.js.coffee +3 -0
  277. data/webapp/app/assets/javascripts/test.js.coffee +3 -0
  278. data/webapp/app/assets/javascripts/util.js.coffee +3 -0
  279. data/webapp/app/assets/stylesheets/analysis.css.scss +3 -0
  280. data/webapp/app/assets/stylesheets/application.css +49 -0
  281. data/webapp/app/assets/stylesheets/execs.css.scss +3 -0
  282. data/webapp/app/assets/stylesheets/graph.css +159 -0
  283. data/webapp/app/assets/stylesheets/jquery-ui-1.8.6.custom.css +572 -0
  284. data/webapp/app/assets/stylesheets/layout.css +151 -0
  285. data/webapp/app/assets/stylesheets/menu.css +186 -0
  286. data/webapp/app/assets/stylesheets/reset.css +41 -0
  287. data/webapp/app/assets/stylesheets/scripts.css.scss +3 -0
  288. data/webapp/app/assets/stylesheets/settings.css.scss +3 -0
  289. data/webapp/app/assets/stylesheets/test.css.scss +3 -0
  290. data/webapp/app/assets/stylesheets/util.css.scss +3 -0
  291. data/webapp/app/assets/stylesheets/websymbols/websymbols-regular-webfont.eot +0 -0
  292. data/webapp/app/assets/stylesheets/websymbols/websymbols-regular-webfont.svg +1 -0
  293. data/webapp/app/assets/stylesheets/websymbols/websymbols-regular-webfont.ttf +0 -0
  294. data/webapp/app/assets/stylesheets/websymbols/websymbols-regular-webfont.woff +0 -0
  295. data/webapp/app/controllers/analysis_controller.rb +7 -0
  296. data/webapp/app/controllers/application_controller.rb +14 -0
  297. data/webapp/app/controllers/base_controller.rb +91 -0
  298. data/webapp/app/controllers/execs_controller.rb +59 -0
  299. data/webapp/app/controllers/graph_controller.rb +17 -0
  300. data/webapp/app/controllers/scripts_controller.rb +166 -0
  301. data/webapp/app/controllers/settings_controller.rb +10 -0
  302. data/webapp/app/controllers/test_controller.rb +127 -0
  303. data/webapp/app/controllers/util_controller.rb +6 -0
  304. data/webapp/app/helpers/analysis_helper.rb +2 -0
  305. data/webapp/app/helpers/application_helper.rb +2 -0
  306. data/webapp/app/helpers/automations_helper.rb +2 -0
  307. data/webapp/app/helpers/execs_helper.rb +2 -0
  308. data/webapp/app/helpers/scripts_helper.rb +2 -0
  309. data/webapp/app/helpers/settings_helper.rb +2 -0
  310. data/webapp/app/helpers/test_helper.rb +2 -0
  311. data/webapp/app/helpers/util_helper.rb +2 -0
  312. data/webapp/app/views/analysis/convergence.html.erb +156 -0
  313. data/webapp/app/views/analysis/idempotence.html.erb +2 -0
  314. data/webapp/app/views/execs/automation_runs.html.erb +98 -0
  315. data/webapp/app/views/execs/task_executions.html.erb +154 -0
  316. data/webapp/app/views/graph/graph_frame.html +101 -0
  317. data/webapp/app/views/layouts/application.html.erb +114 -0
  318. data/webapp/app/views/scripts/edit.html.erb +58 -0
  319. data/webapp/app/views/scripts/graph.html.erb +75 -0
  320. data/webapp/app/views/scripts/import_chef.html.erb +104 -0
  321. data/webapp/app/views/scripts/scripts.html.erb +116 -0
  322. data/webapp/app/views/scripts/tasks.html.erb +139 -0
  323. data/webapp/app/views/settings/containers.html.erb +161 -0
  324. data/webapp/app/views/settings/index.html.erb +51 -0
  325. data/webapp/app/views/test/cases.html.erb +2 -0
  326. data/webapp/app/views/test/gen.html.erb +229 -0
  327. data/webapp/app/views/test/suites.html.erb +205 -0
  328. data/webapp/app/views/util/chef.html.erb +53 -0
  329. data/webapp/bin/bundle +3 -0
  330. data/webapp/bin/rails +4 -0
  331. data/webapp/bin/rake +4 -0
  332. data/webapp/config/application.rb +28 -0
  333. data/webapp/config/boot.rb +18 -0
  334. data/webapp/config/database.yml +42 -0
  335. data/webapp/config/environment.rb +5 -0
  336. data/webapp/config/environments/development.rb +35 -0
  337. data/webapp/config/environments/production.rb +80 -0
  338. data/webapp/config/environments/test.rb +36 -0
  339. data/webapp/config/initializers/backtrace_silencers.rb +7 -0
  340. data/webapp/config/initializers/devise.rb +256 -0
  341. data/webapp/config/initializers/filter_parameter_logging.rb +4 -0
  342. data/webapp/config/initializers/inflections.rb +16 -0
  343. data/webapp/config/initializers/mime_types.rb +5 -0
  344. data/webapp/config/initializers/patches.rb +13 -0
  345. data/webapp/config/initializers/secret_token.rb +12 -0
  346. data/webapp/config/initializers/session_store.rb +6 -0
  347. data/webapp/config/initializers/wrap_parameters.rb +16 -0
  348. data/webapp/config/locales/devise.en.yml +59 -0
  349. data/webapp/config/locales/en.yml +23 -0
  350. data/webapp/config/routes.rb +113 -0
  351. data/webapp/config.ru +4 -0
  352. data/webapp/db/development.sqlite3 +0 -0
  353. data/webapp/db/migrate/20140624002037_devise_create_users.rb +42 -0
  354. data/webapp/db/migrate/20140628002058_create_all_tables.rb +159 -0
  355. data/webapp/db/schema.rb +162 -0
  356. data/webapp/db/seeds.rb +7 -0
  357. data/webapp/log/development.log +167823 -0
  358. data/webapp/public/404.html +58 -0
  359. data/webapp/public/422.html +58 -0
  360. data/webapp/public/500.html +57 -0
  361. data/webapp/public/favicon.ico +0 -0
  362. data/webapp/public/robots.txt +5 -0
  363. data/webapp/test/controllers/analysis_controller_test.rb +14 -0
  364. data/webapp/test/controllers/automations_controller_test.rb +49 -0
  365. data/webapp/test/controllers/execs_controller_test.rb +9 -0
  366. data/webapp/test/controllers/executions_controller_test.rb +9 -0
  367. data/webapp/test/controllers/runs_controller_test.rb +7 -0
  368. data/webapp/test/controllers/scripts_controller_test.rb +9 -0
  369. data/webapp/test/controllers/settings_controller_test.rb +9 -0
  370. data/webapp/test/controllers/test_controller_test.rb +14 -0
  371. data/webapp/test/controllers/util_controller_test.rb +9 -0
  372. data/webapp/test/fixtures/users.yml +11 -0
  373. data/webapp/test/helpers/analysis_helper_test.rb +4 -0
  374. data/webapp/test/helpers/automations_helper_test.rb +4 -0
  375. data/webapp/test/helpers/execs_helper_test.rb +4 -0
  376. data/webapp/test/helpers/executions_helper_test.rb +4 -0
  377. data/webapp/test/helpers/runs_helper_test.rb +4 -0
  378. data/webapp/test/helpers/scripts_helper_test.rb +4 -0
  379. data/webapp/test/helpers/settings_helper_test.rb +4 -0
  380. data/webapp/test/helpers/test_helper_test.rb +4 -0
  381. data/webapp/test/helpers/util_helper_test.rb +4 -0
  382. data/webapp/test/models/user_test.rb +7 -0
  383. data/webapp/test/test_helper.rb +15 -0
  384. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/analysis.css.scssc +0 -0
  385. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/automations.css.scssc +0 -0
  386. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/execs.css.scssc +0 -0
  387. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/executions.css.scssc +0 -0
  388. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/scripts.css.scssc +0 -0
  389. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/settings.css.scssc +0 -0
  390. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/test.css.scssc +0 -0
  391. data/webapp/tmp/cache/assets/development/sass/1330a34c6b24ed44c0f194c03246f627289a985a/util.css.scssc +0 -0
  392. data/webapp/tmp/cache/assets/development/sprockets/06a1cdb3d5472dd126cffc18f548c342 +0 -0
  393. data/webapp/tmp/cache/assets/development/sprockets/0dc0562647e703ca0535da3b9fcad796 +0 -0
  394. data/webapp/tmp/cache/assets/development/sprockets/113f1c71cb0f2a786729477989122982 +0 -0
  395. data/webapp/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  396. data/webapp/tmp/cache/assets/development/sprockets/151a1c6b128721d8923ba0c380a2af17 +0 -0
  397. data/webapp/tmp/cache/assets/development/sprockets/1722fb8a6daad566c8a6d5ef31969459 +0 -0
  398. data/webapp/tmp/cache/assets/development/sprockets/1a05555c46560c6b246aa0a996679bc6 +0 -0
  399. data/webapp/tmp/cache/assets/development/sprockets/1cb7fb6aa8bd1c2b7df8f7c52442e345 +0 -0
  400. data/webapp/tmp/cache/assets/development/sprockets/1d76f803b0a83adc5ea7e7c848657967 +0 -0
  401. data/webapp/tmp/cache/assets/development/sprockets/200152f95fc464d69c425ed8fdc2fbcc +0 -0
  402. data/webapp/tmp/cache/assets/development/sprockets/2049c8927ebd046c8a3291f81041d5f1 +0 -0
  403. data/webapp/tmp/cache/assets/development/sprockets/207907100aabd08a6767e39a95b364e3 +0 -0
  404. data/webapp/tmp/cache/assets/development/sprockets/249e2d4db815922fc72419c4a1407caf +0 -0
  405. data/webapp/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  406. data/webapp/tmp/cache/assets/development/sprockets/3034e4c334b1ebed9433e33050555f18 +0 -0
  407. data/webapp/tmp/cache/assets/development/sprockets/316c88d859cc3666044e51b1dd89e872 +0 -0
  408. data/webapp/tmp/cache/assets/development/sprockets/347f43d816178c8ba11a28a771696924 +0 -0
  409. data/webapp/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  410. data/webapp/tmp/cache/assets/development/sprockets/36ab92a3b8d527ed1eff0944b5f1263d +0 -0
  411. data/webapp/tmp/cache/assets/development/sprockets/3893b852ff196f05ff6ca8e38bb2237f +0 -0
  412. data/webapp/tmp/cache/assets/development/sprockets/3c358bd5fa32d151c7aa44971dd9b96f +0 -0
  413. data/webapp/tmp/cache/assets/development/sprockets/3ce88fad85146e0bed233f5419c24d29 +0 -0
  414. data/webapp/tmp/cache/assets/development/sprockets/3dabcb7c89677292e1e019a9bac446e5 +0 -0
  415. data/webapp/tmp/cache/assets/development/sprockets/4116fac01e6d379ede37af725a592477 +0 -0
  416. data/webapp/tmp/cache/assets/development/sprockets/42628e032b8f0b16a5ba01a1fcc7b6d7 +0 -0
  417. data/webapp/tmp/cache/assets/development/sprockets/437b258a98e8fe2c87fa8e24b7ce9abf +0 -0
  418. data/webapp/tmp/cache/assets/development/sprockets/43e98ed206f05738ae305e7e1b09a840 +0 -0
  419. data/webapp/tmp/cache/assets/development/sprockets/468da8933ba442b88b2f4b0e40c2ac30 +0 -0
  420. data/webapp/tmp/cache/assets/development/sprockets/48ef3fa68e9084c7cfa84e525decc318 +0 -0
  421. data/webapp/tmp/cache/assets/development/sprockets/4b68dcc030691297629a7156361018dc +0 -0
  422. data/webapp/tmp/cache/assets/development/sprockets/50368b1bd77c9130d821cbad89ab83ac +0 -0
  423. data/webapp/tmp/cache/assets/development/sprockets/511a980807b8d16fc3fb839991041865 +0 -0
  424. data/webapp/tmp/cache/assets/development/sprockets/516a0973874a73d0d15feec9448f7466 +0 -0
  425. data/webapp/tmp/cache/assets/development/sprockets/569e21b0ca1a230c7880f8d7a8b1febf +0 -0
  426. data/webapp/tmp/cache/assets/development/sprockets/5b5543d2ed5bed100f1739fc12ebf2c5 +0 -0
  427. data/webapp/tmp/cache/assets/development/sprockets/5c10dbffb918651dc0498579ba9a6853 +0 -0
  428. data/webapp/tmp/cache/assets/development/sprockets/5c366b5370316b3e9c03d1a58cb5eb44 +0 -0
  429. data/webapp/tmp/cache/assets/development/sprockets/5fcb9466e0d5cb0e31b35957fe2d3901 +0 -0
  430. data/webapp/tmp/cache/assets/development/sprockets/61da396fb86c5ecd844a2d83ac759b4b +0 -0
  431. data/webapp/tmp/cache/assets/development/sprockets/624ba87170059068845a4651b3cd2c7c +0 -0
  432. data/webapp/tmp/cache/assets/development/sprockets/6391f61b6121feda70da6d0a22520fdd +0 -0
  433. data/webapp/tmp/cache/assets/development/sprockets/653a981829c12a52bd57b7918168a148 +0 -0
  434. data/webapp/tmp/cache/assets/development/sprockets/66479793d9e5683d9f7fa67522d1962d +0 -0
  435. data/webapp/tmp/cache/assets/development/sprockets/69c589bd224ee0df5ab02e4568e0ab39 +0 -0
  436. data/webapp/tmp/cache/assets/development/sprockets/6dd7c564897b7e66eecbb180baeef2c6 +0 -0
  437. data/webapp/tmp/cache/assets/development/sprockets/6e2b92a4e6966cb78e63207bc7888391 +0 -0
  438. data/webapp/tmp/cache/assets/development/sprockets/70adb410f59a0edc5aea8c2b2ef8a441 +0 -0
  439. data/webapp/tmp/cache/assets/development/sprockets/72cbfd5bf33945bcce154f7a4feaf04d +0 -0
  440. data/webapp/tmp/cache/assets/development/sprockets/740ee9d355ada8cf5e9beb620f2cd5cc +0 -0
  441. data/webapp/tmp/cache/assets/development/sprockets/74770a22b5d1b0b3bc3527da83706f96 +0 -0
  442. data/webapp/tmp/cache/assets/development/sprockets/759bf97655af50852816720db7b59fcb +0 -0
  443. data/webapp/tmp/cache/assets/development/sprockets/76e9c19246c684413a02af695fa2b0bc +0 -0
  444. data/webapp/tmp/cache/assets/development/sprockets/7728beeace48ca12e336d2bce0158871 +0 -0
  445. data/webapp/tmp/cache/assets/development/sprockets/77f49730c7b689f75a2e174fbd3ace2a +0 -0
  446. data/webapp/tmp/cache/assets/development/sprockets/78021a57030fd36cf82699aad9910b26 +0 -0
  447. data/webapp/tmp/cache/assets/development/sprockets/796b349b06da691fe5f069f9e3947fcb +0 -0
  448. data/webapp/tmp/cache/assets/development/sprockets/79e7505c70697cc7d34d4a8351c3b840 +0 -0
  449. data/webapp/tmp/cache/assets/development/sprockets/7b2b7d9034fc7b77daf5da1436667e6f +0 -0
  450. data/webapp/tmp/cache/assets/development/sprockets/7c2ea2ca2cdd89b062bf23f44e8f599c +0 -0
  451. data/webapp/tmp/cache/assets/development/sprockets/7ea112af55e6df12cdff377052b71420 +0 -0
  452. data/webapp/tmp/cache/assets/development/sprockets/7f27632588dd316836b009a621c0176c +0 -0
  453. data/webapp/tmp/cache/assets/development/sprockets/7fcef9f644290dea8d0e4bf13f6bb8e9 +0 -0
  454. data/webapp/tmp/cache/assets/development/sprockets/81c6bf67419a29257ed79f442c24907d +0 -0
  455. data/webapp/tmp/cache/assets/development/sprockets/83656ce9260eb473c1654420e0180167 +0 -0
  456. data/webapp/tmp/cache/assets/development/sprockets/83e8bdddefc2dce069b56e6650135397 +0 -0
  457. data/webapp/tmp/cache/assets/development/sprockets/880c796f41e5d67ae68ed239acfc91e3 +0 -0
  458. data/webapp/tmp/cache/assets/development/sprockets/8c1c39dd537d2c9990fe9c70a5646b06 +0 -0
  459. data/webapp/tmp/cache/assets/development/sprockets/8d763042da5254015767385ce324b348 +0 -0
  460. data/webapp/tmp/cache/assets/development/sprockets/91e1ccbf65ff4d9b0f42b1159796bcf2 +0 -0
  461. data/webapp/tmp/cache/assets/development/sprockets/92cdfac7698b6bb68983cf317c1cedef +0 -0
  462. data/webapp/tmp/cache/assets/development/sprockets/94cab8cbc120e152ce4c444492a3fc1d +0 -0
  463. data/webapp/tmp/cache/assets/development/sprockets/96b918c3c041b6a089c8adc870fa3aaa +0 -0
  464. data/webapp/tmp/cache/assets/development/sprockets/97cbe306627b432ab3bfb52416690d1d +0 -0
  465. data/webapp/tmp/cache/assets/development/sprockets/98da83d396c0c00eb03937ecbc2e6bfa +0 -0
  466. data/webapp/tmp/cache/assets/development/sprockets/9db04db20ec9c4a0f84ed01caa5e6e2b +0 -0
  467. data/webapp/tmp/cache/assets/development/sprockets/9dc1c251f50c828fae95d6107619c53e +0 -0
  468. data/webapp/tmp/cache/assets/development/sprockets/9e91711ab34bbf89ad1cfb4351027d36 +0 -0
  469. data/webapp/tmp/cache/assets/development/sprockets/9f587881f98b328b656e6456178418b5 +0 -0
  470. data/webapp/tmp/cache/assets/development/sprockets/9fc981560caba00621bb95d0974ad076 +0 -0
  471. data/webapp/tmp/cache/assets/development/sprockets/9fd4385f8fda99f3ddd3f133a89231d1 +0 -0
  472. data/webapp/tmp/cache/assets/development/sprockets/a32ab71649e3db15eca95bcc3a7588da +0 -0
  473. data/webapp/tmp/cache/assets/development/sprockets/a497c976969bdbb1f69875358d39d3b5 +0 -0
  474. data/webapp/tmp/cache/assets/development/sprockets/b06058d455770c1d9db6b6670bc4bf4d +0 -0
  475. data/webapp/tmp/cache/assets/development/sprockets/b3da405f1e68470ad6146a1322f2438c +0 -0
  476. data/webapp/tmp/cache/assets/development/sprockets/b4ba5853663f6721d15942ce08dd76bf +0 -0
  477. data/webapp/tmp/cache/assets/development/sprockets/b6f1534bcdbff92a16c85487f363235a +0 -0
  478. data/webapp/tmp/cache/assets/development/sprockets/b9c57b9750f8af3551b1a5d9e27f0a92 +0 -0
  479. data/webapp/tmp/cache/assets/development/sprockets/bb5be6a0ee889a15214e2442aee8c6e1 +0 -0
  480. data/webapp/tmp/cache/assets/development/sprockets/bc80a81b2d67b5ad40f3c7a2bb6e6f22 +0 -0
  481. data/webapp/tmp/cache/assets/development/sprockets/bfaba27d5ce71d292f453659b0755511 +0 -0
  482. data/webapp/tmp/cache/assets/development/sprockets/bfac6cd2984fbd5e0d762389e3c37164 +0 -0
  483. data/webapp/tmp/cache/assets/development/sprockets/c17bec9e3b5db6d8385c3d6eb362e628 +0 -0
  484. data/webapp/tmp/cache/assets/development/sprockets/c1a9eceddc0a1e41eb2992e9204f71e6 +0 -0
  485. data/webapp/tmp/cache/assets/development/sprockets/c50cd87be040044504b5c3fde1047e24 +0 -0
  486. data/webapp/tmp/cache/assets/development/sprockets/c5907cfd07b24ad19b8c80e8af618a57 +0 -0
  487. data/webapp/tmp/cache/assets/development/sprockets/c8da5594caf845a183dd1c6cd45c5433 +0 -0
  488. data/webapp/tmp/cache/assets/development/sprockets/cbc6968ed49fa14db439a64dd0a46abc +0 -0
  489. data/webapp/tmp/cache/assets/development/sprockets/cedf710ee090647b81c08675583eca62 +0 -0
  490. data/webapp/tmp/cache/assets/development/sprockets/cf1e3cebfad43293c3c470a5e437ebc9 +0 -0
  491. data/webapp/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  492. data/webapp/tmp/cache/assets/development/sprockets/d5a14f86bb4b422fdd8eb4722d966c9a +0 -0
  493. data/webapp/tmp/cache/assets/development/sprockets/d66b9cdd3230f9e5354e495e17097c49 +0 -0
  494. data/webapp/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  495. data/webapp/tmp/cache/assets/development/sprockets/dfa0ed87d851222fe58ada385e3f037d +0 -0
  496. data/webapp/tmp/cache/assets/development/sprockets/e1aa402390382db4d97b27cb094485fa +0 -0
  497. data/webapp/tmp/cache/assets/development/sprockets/e4f1db35ef9d9fbbf53252a44e381eb8 +0 -0
  498. data/webapp/tmp/cache/assets/development/sprockets/e57eb6c1ad51fd8c13afc0e719a259b5 +0 -0
  499. data/webapp/tmp/cache/assets/development/sprockets/e7c37b542e914e392ec326190cea1aa2 +0 -0
  500. data/webapp/tmp/cache/assets/development/sprockets/e923d7e19c216d4a924831f3896e007a +0 -0
  501. data/webapp/tmp/cache/assets/development/sprockets/e96a414a621483bbc89e73f11be5e7b4 +0 -0
  502. data/webapp/tmp/cache/assets/development/sprockets/eafcfc3d2561c18743c1b32f0f710c68 +0 -0
  503. data/webapp/tmp/cache/assets/development/sprockets/ecdd630f5466d45a2afa7515aaa5fc3b +0 -0
  504. data/webapp/tmp/cache/assets/development/sprockets/ee60a0a35d60cff425373970547694bd +0 -0
  505. data/webapp/tmp/cache/assets/development/sprockets/eee2c36b75709b0c3797c2a151fdd5d3 +0 -0
  506. data/webapp/tmp/cache/assets/development/sprockets/f104b66c0f89b453d0c8c73980fbab18 +0 -0
  507. data/webapp/tmp/cache/assets/development/sprockets/f26d1bc86590415685e9836ad75d1774 +0 -0
  508. data/webapp/tmp/cache/assets/development/sprockets/f4081e868eb565527099dba2c9d8c4de +0 -0
  509. data/webapp/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  510. data/webapp/tmp/cache/assets/development/sprockets/f813030b97e30415ad276bbd1f7e1fb4 +0 -0
  511. data/webapp/tmp/cache/assets/development/sprockets/f8e3e28bc9640c25da58aea46c3ac4b3 +0 -0
  512. data/webapp/tmp/cache/assets/development/sprockets/f9169d0a8b70eaf95de52b3c6ad51105 +0 -0
  513. data/webapp/tmp/cache/assets/development/sprockets/f939450f7a481e3fbeb158b81b39c624 +0 -0
  514. data/webapp/tmp/cache/assets/development/sprockets/fce73296b8298ac4c74b3e95cde4dfdb +0 -0
  515. metadata +941 -0
@@ -0,0 +1,417 @@
1
+
2
+ include_recipe "lxc::init_bare_os"
3
+
4
+ rootfs = node["lxc"]["proto"]["root_fs"]
5
+ chroot_cmd = "#{node["path"]["chroot"]} #{rootfs}"
6
+ lxc_config = "#{node["lxc"]["proto"]["config_file"]}"
7
+ cache="#{node["lxc"]["bare_os"]["cachedir"]}"
8
+
9
+ # include code in Ruby LOAD_PATH
10
+ code_dir = File.join(File.dirname(__FILE__), "..","..","..","..", "lib")
11
+ $:.unshift(code_dir)
12
+ require 'toaster/util/config'
13
+
14
+ package "proto_install_btrfs" do
15
+ if ["ubuntu","debian"].include?(node[:platform])
16
+ package_name "btrfs-tools"
17
+ else
18
+ package_name "btrfs-progs"
19
+ end
20
+ action :install
21
+ only_if do node["lxc"]["use_copy_on_write"] end
22
+ not_if "which btrfs"
23
+ end
24
+
25
+ bash "proto_init_cow" do
26
+ code <<-EOH
27
+ btrfs subvolume create #{node["lxc"]["root_path"]}/#{node["lxc"]["proto"]["name"]}
28
+ EOH
29
+ only_if do node["lxc"]["use_copy_on_write"] end
30
+ not_if "test -f #{node["lxc"]["root_path"]}/#{node["lxc"]["proto"]["name"]}"
31
+ end
32
+
33
+ bash "proto_copy_os" do
34
+ code <<-EOH
35
+ # check if we want to use copy-on-write (btrfs)
36
+ if [ -d /mnt/btrfs/ ]; then
37
+ echo "INFO: Creating new btrfs subvolume at '/mnt/btrfs/#{node["lxc"]["proto"]["name"]}'"
38
+ btrfs subvolume create /mnt/btrfs/#{node["lxc"]["proto"]["name"]}
39
+ fi
40
+
41
+ echo -n "INFO: Copying rootfs from '#{cache}/rootfs/' to '#{rootfs}' ..."
42
+ mkdir -p #{rootfs}
43
+ rsync -a #{cache}/rootfs/ #{rootfs}
44
+ EOH
45
+ not_if "test -d #{rootfs}"
46
+ # don't execute if we use docker.io tools
47
+ not_if do node["lxc"]["use_docker.io"] end
48
+ end
49
+
50
+ bash "proto_config_os" do
51
+ code <<-EOH
52
+
53
+ # disable selinux
54
+ mkdir -p #{rootfs}/selinux
55
+ echo 0 > #{rootfs}/selinux/enforce
56
+
57
+ # copy /etc/resolv.conf from host file system to container file system
58
+ cp /etc/resolv.conf #{rootfs}/etc/resolv.conf
59
+
60
+ # set the hostname
61
+ cat <<EOF > #{rootfs}/etc/hostname
62
+ #{node["lxc"]["proto"]["name"]}
63
+ EOF
64
+
65
+ # set minimal hosts
66
+ cat <<EOF > #{rootfs}/etc/hosts
67
+ 127.0.0.1 localhost
68
+ EOF
69
+
70
+ cat <<EOF > #{rootfs}/etc/init/devpts.conf
71
+ # this should fix problems with TTY when trying to ssh into container
72
+ start on startup
73
+ exec mount -t devpts none /dev/pts -o rw,noexec,nosuid,gid=5,mode=0620
74
+ EOF
75
+
76
+ dev_path="#{rootfs}/dev"
77
+ rm -rf $dev_path
78
+ mkdir -p $dev_path
79
+ mknod -m 666 ${dev_path}/null c 1 3
80
+ mknod -m 666 ${dev_path}/zero c 1 5
81
+ mknod -m 666 ${dev_path}/random c 1 8
82
+ mknod -m 666 ${dev_path}/urandom c 1 9
83
+ mkdir -m 755 ${dev_path}/pts
84
+ mkdir -m 1777 ${dev_path}/shm
85
+ mknod -m 666 ${dev_path}/tty c 5 0
86
+ mknod -m 666 ${dev_path}/tty0 c 4 0
87
+ mknod -m 666 ${dev_path}/tty1 c 4 1
88
+ mknod -m 666 ${dev_path}/tty2 c 4 2
89
+ mknod -m 666 ${dev_path}/tty3 c 4 3
90
+ mknod -m 666 ${dev_path}/tty4 c 4 4
91
+ mknod -m 666 ${dev_path}/tty5 c 4 5
92
+ mknod -m 666 ${dev_path}/tty6 c 4 6
93
+ mknod -m 666 ${dev_path}/tty7 c 4 7
94
+ mknod -m 600 ${dev_path}/console c 5 1
95
+ mknod -m 666 ${dev_path}/full c 1 7
96
+ mknod -m 600 ${dev_path}/initctl p
97
+ mknod -m 666 ${dev_path}/ptmx c 5 2
98
+
99
+ # on some releases, /etc/rc.local ends with a line "exit 0", which we need to get rid of first...
100
+ sed -i "s/^exit 0//gi" #{rootfs}/etc/rc.local
101
+
102
+ echo "ifconfig > /tmp/ifconfig.rc.local.out" >> #{rootfs}/etc/rc.local
103
+ echo "echo \\"#!/bin/bash\\" > /tmp/ping.rc.local.sh" >> #{rootfs}/etc/rc.local
104
+ echo "echo \\"sleep 1\\" >> /tmp/ping.rc.local.sh" >> #{rootfs}/etc/rc.local
105
+ echo "echo \\"ping -c 1 #{node["network"]["gateway"]} 2>&1 >> /tmp/ping.rc.local.out\\" >> /tmp/ping.rc.local.sh" >> #{rootfs}/etc/rc.local
106
+ echo "echo \\"route add default gw #{node["network"]["gateway"]}\\" >> /tmp/ping.rc.local.sh" >> #{rootfs}/etc/rc.local
107
+ echo "exit 0" >> #{rootfs}/etc/rc.local
108
+
109
+ echo "INFO: setting root passwd to '#{node["lxc"]["proto"]["root_pass"]}'"
110
+ echo "root:#{node["lxc"]["proto"]["root_pass"]}" | #{chroot_cmd} chpasswd
111
+
112
+ EOH
113
+ not_if "cat #{rootfs}/etc/hostname | grep #{node["lxc"]["proto"]["name"]}"
114
+ # don't execute if we use docker.io tools
115
+ not_if do node["lxc"]["use_docker.io"] end
116
+ end
117
+
118
+
119
+ bash "proto_write_lxc_config" do
120
+ code <<-EOH
121
+ mkdir -p #{node["lxc"]["proto"]["root_path"]}
122
+ cat <<EOF >> #{node["lxc"]["proto"]["root_path"]}/config
123
+ lxc.utsname = #{node["lxc"]["proto"]["name"]}
124
+ lxc.tty = 1
125
+ lxc.pts = 1024
126
+ lxc.console = none
127
+ #lxc.arch = $arch_lxc # not supported yet
128
+ lxc.rootfs = #{rootfs}
129
+ lxc.mount = #{node["lxc"]["proto"]["root_path"]}/fstab
130
+ #networking
131
+ lxc.network.type = #{node["lxc"]["proto"]["network_type"]}
132
+ lxc.network.flags = up
133
+ lxc.network.link = #{node["lxc"]["proto"]["network_link"]}
134
+ lxc.network.name = eth0
135
+ lxc.network.ipv4 = #{node["lxc"]["proto"]["ip_address"]}/24
136
+ lxc.network.hwaddr = 00:24:1d:2f:e5:5f
137
+ lxc.network.mtu = 1500
138
+ #cgroups
139
+ lxc.cgroup.devices.deny = a
140
+ # /dev/null and zero
141
+ lxc.cgroup.devices.allow = c 1:3 rwm
142
+ lxc.cgroup.devices.allow = c 1:5 rwm
143
+ # consoles
144
+ lxc.cgroup.devices.allow = c 5:1 rwm
145
+ lxc.cgroup.devices.allow = c 5:0 rwm
146
+ lxc.cgroup.devices.allow = c 4:0 rwm
147
+ lxc.cgroup.devices.allow = c 4:1 rwm
148
+ # /dev/{,u}random
149
+ lxc.cgroup.devices.allow = c 1:9 rwm
150
+ lxc.cgroup.devices.allow = c 1:8 rwm
151
+ lxc.cgroup.devices.allow = c 136:* rwm
152
+ lxc.cgroup.devices.allow = c 5:2 rwm
153
+ # rtc
154
+ lxc.cgroup.devices.allow = c 254:0 rwm
155
+ EOF
156
+
157
+ cat <<EOF > #{node["lxc"]["proto"]["root_path"]}/fstab
158
+ proc #{rootfs}/proc proc nodev,noexec,nosuid 0 0
159
+ devpts #{rootfs}/dev/pts devpts defaults 0 0
160
+ sysfs #{rootfs}/sys sysfs defaults 0 0
161
+ EOF
162
+ EOH
163
+ not_if "test -f #{node["lxc"]["proto"]["root_path"]}/config"
164
+ # don't execute if we use docker.io tools
165
+ not_if do node["lxc"]["use_docker.io"] end
166
+ end
167
+
168
+ bash "proto_docker_create" do
169
+ if node["lxc"]["bare_os"]["distribution"] == "ubuntu"
170
+ code <<-EOH
171
+ proto_name=#{node["lxc"]["proto"]["name"]}
172
+ root_path=#{node["lxc"]["root_path"]}
173
+
174
+ mkdir -p #{node["lxc"]["proto"]["root_path"]}
175
+ cat <<EOF > #{node["lxc"]["proto"]["root_path"]}/Dockerfile
176
+ FROM ubuntu
177
+ RUN mkdir /var/run/sshd
178
+ #RUN grep -v rootfs /proc/mounts > /etc/mtab
179
+ #RUN bash -c "ip addr flush dev eth0; ip addr add #{node["lxc"]["proto"]["ip_address"]}/24 dev eth0; ip route del default; ip route add default via #{node["network"]["gateway"]}; apt-get install -y net-tools openssh-server iptables dnsutils iputils-ping vim"
180
+ # add ssh dir
181
+ RUN mkdir -p /root/.ssh
182
+ EOF
183
+ proto_name=#{node["lxc"]["proto"]["name"]}
184
+ mkdir -p #{node["lxc"]["root_path"]}/$proto_name/dockerfiles/.ssh/
185
+ if [ ! -f $HOME/.ssh/id_rsa.pub ]; then
186
+ ssh-keygen -f $HOME/.ssh/id_rsa.pub -P ""
187
+ end
188
+ fi
189
+ cp $HOME/.ssh/id_rsa.pub #{node["lxc"]["root_path"]}/$proto_name/dockerfiles/.ssh/authorized_keys
190
+ imgID=`docker build -t prototypes:$proto_name #{node["lxc"]["proto"]["root_path"]} | grep "Successfully built" | tail -n 1 | sed "s/Successfully built //g"`
191
+ echo "INFO: new docker image ID: '$imgID'"
192
+ if [ "$imgID" == "" ]; then
193
+ echo "WARN: Docker image creation unsuccessful..."
194
+ docker build #{node["lxc"]["proto"]["root_path"]}
195
+ exit 1
196
+ fi
197
+ echo "$imgID" > #{node["lxc"]["root_path"]}/$proto_name/docker.image.id
198
+
199
+ cidfile=$root_path/$proto_name/docker.container.id
200
+ rm -f $cidfile
201
+ # the following commands can only be run in "privileged" docker mode:
202
+ docker run --privileged --cidfile=$cidfile $imgID bash -c "ip addr flush dev eth0; ip addr add #{node["lxc"]["proto"]["ip_address"]}/24 dev eth0; ip route del default; ip route add default via #{node["network"]["gateway"]}; apt-get update; apt-get install -y net-tools openssh-server iptables dnsutils iputils-ping vim; update-rc.d ssh defaults"
203
+ EOH
204
+ else
205
+ code <<-EOH
206
+ echo "WARN: Unexpected OS distribution: #{node["lxc"]["bare_os"]["distribution"]}"
207
+ exit 1
208
+ EOH
209
+ end
210
+ # only execute if we use docker.io tools
211
+ only_if do node["lxc"]["use_docker.io"] end
212
+ end
213
+
214
+ # terminate prototype container
215
+ # (lxc::stop_lxc also saves/commits the changes made to the prototype container)
216
+ node.set["lxc"]["cont"]["name"] = node["lxc"]["proto"]["name"]
217
+ node.set["lxc"]["cont"]["ip_address"] = node["lxc"]["proto"]["ip_address"]
218
+ node.set["lxc"]["cont"]["root_path"] = "#{node["lxc"]["root_path"]}/#{node["lxc"]["cont"]["name"]}"
219
+ node.set["lxc"]["cont"]["config_file"] = "#{node["lxc"]["cont"]["root_path"]}/config"
220
+ node.set["lxc"]["cont"]["root_fs"] = node["lxc"]["proto"]["root_fs"]
221
+ include_recipe "lxc::stop_lxc"
222
+
223
+ bash "proto_cp_resolv_conf" do
224
+ code <<-EOH
225
+ # cp resolv.conf from host to LXC container
226
+ echo "INFO: copying /etc/resolv.conf file from host to container"
227
+ rm -f #{rootfs}/etc/resolv.conf
228
+ cp /etc/resolv.conf #{rootfs}/etc/resolv.conf
229
+ EOH
230
+ # don't execute if we use docker.io tools
231
+ not_if do node["lxc"]["use_docker.io"] end
232
+ end
233
+
234
+
235
+ bash "proto_install_sshd" do
236
+ code <<-EOH
237
+ echo "INFO: Installing sshd..."
238
+ if [ "#{node["lxc"]["bare_os"]["distribution"]}" == "fedora" ]; then
239
+ # this was suggested by yum during one installation run (to clean outdated metadata)
240
+ yum --enablerepo=fedora clean metadata
241
+ # install packages
242
+ #{chroot_cmd} yum install -y openssh-server openssh-clients > /dev/null
243
+ elif [ "#{node["lxc"]["bare_os"]["distribution"]}" == "ubuntu" ]; then
244
+
245
+ existing=`cat #{rootfs}/etc/apt/sources.list | grep universe`
246
+ if [ "$existing" == "" ] && [ "#{node["lxc"]["proto"]["release"]}" != "" ]; then
247
+ echo "deb http://archive.ubuntu.com/ubuntu #{node["lxc"]["proto"]["release"]} universe #restricted multiverse" >> #{rootfs}/etc/apt/sources.list
248
+ fi
249
+
250
+ # update package list
251
+ #{chroot_cmd} apt-get update > /dev/null
252
+
253
+ # install packages
254
+ export DEBIAN_FRONTEND=noninteractive
255
+ # removed package chkconfig from list (no more available in Ubuntu quantal..)
256
+ #{chroot_cmd} apt-get install -y openssh-server
257
+ else
258
+ echo "ERROR: Unexpected OS distribution: #{node["lxc"]["bare_os"]["distribution"]}"
259
+ exit 1
260
+ fi
261
+ EOH
262
+ # don't execute if we use docker.io tools
263
+ not_if do node["lxc"]["use_docker.io"] end
264
+ end
265
+
266
+ # start prototype container
267
+ include_recipe "lxc::start_lxc"
268
+
269
+ # make sure /tmp directory is preserved over time (365 days) and not flushed on every boot
270
+ bash "proto_preserve_tmp_dir" do
271
+ code <<-EOH
272
+ sed -i "s/TMPTIME=.*$/TMPTIME=365/g" #{rootfs}/etc/default/rcS
273
+ EOH
274
+ only_if "test -f #{rootfs}/etc/default/rcS"
275
+ end
276
+
277
+ # some scripts require a "qwhich" command
278
+ bash "proto_link_commands" do
279
+ code <<-EOH
280
+ ln -s /usr/bin/which /usr/bin/qwhich
281
+ EOH
282
+ not_if "which qwhich"
283
+ end
284
+
285
+ # create bash file to execute within container
286
+ file "proto_setup_inside_script" do
287
+ path "#{rootfs}/tmp/setup.proto.inside.sh"
288
+ mode "0755"
289
+ content <<-EOH
290
+ #!/bin/bash
291
+
292
+ # make sure we have a default route
293
+ ip route del default
294
+ ip route add default via #{node["network"]["gateway"]}
295
+ #route add default gw #{node["network"]["gateway"]}
296
+
297
+ # sometimes the DNS is not immediately available and lookup of google.com fails
298
+ for i in {1..10}; do
299
+ ping -c 1 google.com && break
300
+ if [ "$i" == "10" ]; then
301
+ echo "WARN: Cannot connect out of prototype container"
302
+ cat /etc/resolv.conf
303
+ fi
304
+ sleep 1
305
+ done
306
+
307
+ # setup transparent proxy forwarding
308
+ existing=`iptables -t nat -L OUTPUT 2>&1| grep 3128 | grep DNAT`
309
+ if [ "$existing" == "" ] && [ "#{node["lxc"]["cont"]["proxy_ip"]}" != "" ]; then
310
+ echo "INFO: Inside prototype: Setting up local iptables for proxy at '#{node["lxc"]["cont"]["proxy_ip"]}:3128'"
311
+ if [ -f "/etc/init.d/iptables" ]; then
312
+ /etc/init.d/iptables start
313
+ fi
314
+ iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to #{node["lxc"]["cont"]["proxy_ip"]}:3128
315
+ fi
316
+
317
+ # ensure group "admin" exists (required for some software packages)
318
+ existing=`groups | grep admin`
319
+ if [ "$existing" == "" ] && [ -f /usr/sbin/addgroup ]; then
320
+ /usr/sbin/addgroup "admin"
321
+ usermod -a -G "admin" "root"
322
+ fi
323
+
324
+ # update installation of Ruby using RVM
325
+ existing=`cat /root/.bashrc | grep "rvm use"`
326
+ if [ "`which ruby`" == "" ] || [ "`ruby -v | grep 1.8.7`" != "" ] || [ "$existing" == "" ]; then
327
+
328
+ # the code below contains the platform-specific ruby installation code
329
+ #{node['ruby']['install_script'][node['lxc']['bare_os']['distribution']]}
330
+
331
+ fi
332
+
333
+ # update all gem packages
334
+ gem update --no-ri --no-rdoc
335
+
336
+ # install chef-solo (chef gem), if necessary
337
+ existing=`which chef-solo > /dev/null 2>&1`
338
+ if [ "$existing" == "" ]; then
339
+ gem install --no-ri --no-rdoc chef
340
+ fi
341
+
342
+ # install prerequisite for gem mysql2, needed by cloud-toaster
343
+ sudo apt-get install -y libmysqlclient-dev
344
+
345
+ # install toaster gem
346
+ gem install --no-ri --no-rdoc cloud-toaster
347
+
348
+ EOH
349
+ end
350
+
351
+ bash "proto_install_packages" do
352
+ code <<-EOH
353
+ echo "INFO: Installing packages, please be patient..."
354
+
355
+ ssh_cmd="ssh #{node["lxc"]["proto"]["ssh_user"]}@#{node["lxc"]["proto"]["ip_address"]}"
356
+ if [ "#{node["lxc"]["bare_os"]["distribution"]}" == "fedora" ]; then
357
+ install_cmd="$ssh_cmd yum install -y"
358
+ elif [ "#{node["lxc"]["bare_os"]["distribution"]}" == "ubuntu" ]; then
359
+ install_cmd="$ssh_cmd apt-get install -y"
360
+ else
361
+ echo "WARN: Unexpected OS distribution: #{node["lxc"]["bare_os"]["distribution"]}"
362
+ exit 1
363
+ fi
364
+
365
+ # Install packages inside the container.
366
+ # --> The plain vanilla LXC container does not contain often-used
367
+ # binaries like /usr/bin/test or /usr/bin/host or /sbin/ifconfig,
368
+ # so we are well advised to install all the packages listed below
369
+ # (and possibly more)..
370
+ if [ "#{node["lxc"]["bare_os"]["distribution"]}" == "fedora" ]; then
371
+
372
+ # this was suggested by yum during one installation run (to clean outdated metadata)
373
+ yum --enablerepo=fedora clean metadata
374
+
375
+ # install packages
376
+ $install_cmd man openssh-server openssh-clients screen curl wget unzip which tar bind-utils sh-utils lsof > /dev/null
377
+
378
+ elif [ "#{node["lxc"]["bare_os"]["distribution"]}" == "ubuntu" ]; then
379
+
380
+ existing=`cat #{rootfs}/etc/apt/sources.list | grep universe`
381
+ if [ "$existing" == "" ] && [ "#{node["lxc"]["proto"]["release"]}" != "" ]; then
382
+ echo "deb http://archive.ubuntu.com/ubuntu #{node["lxc"]["proto"]["release"]} universe #restricted multiverse" >> #{rootfs}/etc/apt/sources.list
383
+ fi
384
+
385
+ # update package list
386
+ $ssh_cmd apt-get update > /dev/null
387
+
388
+ # install packages
389
+ export DEBIAN_FRONTEND=noninteractive
390
+ # removed package chkconfig from list (no more available in Ubuntu quantal..)
391
+ # removed package iptables-persistent from list
392
+ $install_cmd openssh-server net-tools dnsutils iputils-ping iptables vim make > /dev/null
393
+
394
+ # make sure to uninstall previous Ruby versions
395
+ $ssh_cmd apt-get remove -yf ruby1.8
396
+ fi
397
+ EOH
398
+ end
399
+
400
+ # run setup scripts inside prototype
401
+ bash "proto_setup_inside" do
402
+ code <<-EOH
403
+ echo "INFO: Running configuration script inside prototype; ssh'ing to #{node["lxc"]["proto"]["ssh_user"]}@#{node["lxc"]["proto"]["ip_address"]} as user: `whoami`"
404
+ echo "DEBUG: running: ssh #{node["lxc"]["proto"]["ssh_user"]}@#{node["lxc"]["proto"]["ip_address"]} /tmp/setup.proto.inside.sh"
405
+ # #{chroot_cmd} /usr/sbin/sshd
406
+ ssh #{node["lxc"]["proto"]["ssh_user"]}@#{node["lxc"]["proto"]["ip_address"]} /tmp/setup.proto.inside.sh
407
+ EOH
408
+ end
409
+
410
+ # terminate prototype container
411
+ # (lxc::stop_lxc also saves/commits the changes made to the prototype container)
412
+ bash 'commit_docker_final' do
413
+ code 'echo'
414
+ notifies :run, 'bash[lxc_docker_commit]', :immediately
415
+ notifies :run, 'bash[lxc_stop]', :immediately
416
+ notifies :run, 'bash[lxc_stop_proto]', :immediately
417
+ end
@@ -0,0 +1,61 @@
1
+
2
+ if platform_family?("debian")
3
+
4
+ bash "add_kernel_repo" do
5
+ code <<-EOH
6
+ add-apt-repository ppa:canonical-kernel-team/ppa
7
+ apt-get update
8
+ EOH
9
+ not_if "which docker"
10
+ end
11
+
12
+ pkg_name = "linux-image-extra-#{`uname -r`}".strip
13
+ apt_package pkg_name do
14
+ action :install
15
+ not_if "which docker"
16
+ end
17
+
18
+ bash "install_docker_prepare" do
19
+ code <<-EOH
20
+ curl https://get.docker.io | sh -x
21
+ EOH
22
+ not_if "which docker"
23
+ end
24
+
25
+ bash "start_docker_daemon" do
26
+ code <<-EOH
27
+ docker -d &
28
+ EOH
29
+ not_if "ps aux | grep 'docker -d' | grep -v grep"
30
+ end
31
+
32
+ bash "install_docker_init" do
33
+ code <<-EOH
34
+ docker pull ubuntu
35
+ EOH
36
+ end
37
+
38
+ bash "host_docker_link" do
39
+ code <<-EOH
40
+ mv /var/lib/docker /mnt
41
+ rm -rf /var/lib/docker
42
+ ln -s /mnt/docker /var/lib/docker
43
+ EOH
44
+ only_if do node["lxc"]["store_containers_on_volume"] end
45
+ only_if "test -d /mnt"
46
+ not_if "test -d /mnt/docker"
47
+ # don't execute if we use docker.io tools
48
+ only_if do node["lxc"]["use_docker.io"] end
49
+ end
50
+
51
+ elsif platform_family?("fedora") || platform_family?("linux")
52
+
53
+ bash "error_os" do
54
+ code <<-EOH
55
+ echo "ERROR: Currently supported OSs: Debian/Ubuntu."
56
+ exit 1
57
+ EOH
58
+ end
59
+
60
+ end
61
+
@@ -0,0 +1,28 @@
1
+
2
+ # update installation of Ruby using RVM
3
+ bash "ruby_rvm_install" do
4
+ # include platform-speficic installation script code
5
+ code node['ruby']['install_script'][node['platform']]
6
+ not_if "ruby -v 2> /dev/null | grep #{node['ruby']['version_short']}"
7
+ end
8
+
9
+ # set rvm environment variables on bash login
10
+ bash "ruby_enable_rvm" do
11
+ code <<-EOH
12
+ # add two lines to the beginning (!) of /root/.bashrc
13
+ sed -i '2isource /usr/local/rvm/scripts/rvm' /root/.bashrc
14
+ sed -i '3irvm use ruby-#{node['ruby']['version']}' /root/.bashrc
15
+ EOH
16
+ not_if "cat /root/.bashrc | grep \"rvm use ruby\""
17
+ end
18
+
19
+ # install commonly needed gems
20
+ bash "ruby_install_gems" do
21
+ code <<-EOH
22
+ # install common gems
23
+ #gem install rspec
24
+ #gem install rspec -v 1.3.2 # required for, e.g., cassandra installation
25
+ EOH
26
+ not_if "gem list | grep rspec"
27
+ end
28
+
@@ -0,0 +1,63 @@
1
+
2
+ package "gdisk" do
3
+ action :install
4
+ not_if "which gdisk"
5
+ only_if "test -e #{node["lxc"]["mount"]["dev_disk"]}"
6
+ end
7
+
8
+ package "parted" do
9
+ action :install
10
+ not_if "which partprobe"
11
+ only_if "test -e #{node["lxc"]["mount"]["dev_disk"]}"
12
+ end
13
+
14
+ bash "vol_create_fs" do
15
+ code <<-EOH
16
+ last_usable_sector=#{node["lxc"]["mount"]["last_sector"]}
17
+
18
+ # The following command creates a new file system partition on ephemeral disk.
19
+ # This is required when running certain versions of Fedora in Openstack Clouds.
20
+ # usage: sgdisk --new partnum:start:end /dev/vda (0=default)
21
+ if [ "$last_usable_sector" == "" ]; then
22
+ sgdisk --new 0:0 #{node["lxc"]["mount"]["dev_disk"]}
23
+ else
24
+ sgdisk --new 0:0:$last_usable_sector #{node["lxc"]["mount"]["dev_disk"]}
25
+ fi
26
+
27
+ # reload partitions in kernel
28
+ partprobe #{node["lxc"]["mount"]["dev_disk"]}
29
+
30
+ # create ext3 file system on newly created partition
31
+ mkfs.ext3 #{node["lxc"]["mount"]["dev_partition"]}
32
+ EOH
33
+ # make sure we don't get a timeout, because the operations can take quite long
34
+ timeout 2*60*60
35
+ only_if "test -e #{node["lxc"]["mount"]["dev_disk"]}"
36
+ not_if "test -e #{node["lxc"]["mount"]["dev_partition"]}"
37
+ not_if "df | grep #{node["lxc"]["mount"]["dev_disk"]}"
38
+ end
39
+
40
+
41
+ bash "vol_mount_fs" do
42
+ code <<-EOH
43
+ mkdir -p /data
44
+ mount #{node["lxc"]["mount"]["dev_partition"]} /data/
45
+ EOH
46
+ not_if "ls /data/* > /dev/null 2>&1"
47
+ only_if "test -e #{node["lxc"]["mount"]["dev_disk"]}"
48
+ not_if "df | grep #{node["lxc"]["mount"]["dev_disk"]}"
49
+ end
50
+
51
+ # sometimes the ephemeral storage device /dev/vdb
52
+ # is automatically mounted on /mnt after boot. In
53
+ # this case, simply link from /mnt to /data
54
+ bash "vol_link_fs" do
55
+ code <<-EOH
56
+ rm -rf /data
57
+ ln -s /mnt /data
58
+ EOH
59
+ not_if "ls /data/* > /dev/null 2>&1"
60
+ only_if "test -e /mnt"
61
+ only_if "df | grep #{node["lxc"]["mount"]["dev_disk"]}"
62
+ end
63
+
@@ -0,0 +1,22 @@
1
+
2
+ if platform_family?("debian")
3
+
4
+ node.set['mysql']['server_root_password'] = "root"
5
+ include_recipe "mysql::server"
6
+
7
+ bash 'db_create' do
8
+ code "echo 'create database toaster;' | mysql -u root -p#{node['mysql']['server_root_password']}"
9
+ not_if "echo \"show databases;\" | mysql -u root -p#{node['mysql']['server_root_password']} | grep toaster"
10
+ end
11
+
12
+ else
13
+
14
+ bash "error_os" do
15
+ code <<-EOH
16
+ echo "ERROR: Currently supported host OSs: Debian/Ubuntu."
17
+ exit 1
18
+ EOH
19
+ end
20
+
21
+ end
22
+