tnargav 1.2.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 (452) hide show
  1. data/.gitignore +31 -0
  2. data/.gitsetup.yml +5 -0
  3. data/.travis.yml +7 -0
  4. data/.yardopts +1 -0
  5. data/CHANGELOG.md +1067 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +21 -0
  8. data/README.md +89 -0
  9. data/Rakefile +18 -0
  10. data/bin/vagrant +106 -0
  11. data/config/default.rb +36 -0
  12. data/contrib/README.md +12 -0
  13. data/contrib/bash/completion.sh +3 -0
  14. data/contrib/emacs/vagrant.el +8 -0
  15. data/contrib/vim/vagrantfile.vim +9 -0
  16. data/keys/README.md +17 -0
  17. data/keys/vagrant +27 -0
  18. data/keys/vagrant.pub +1 -0
  19. data/lib/vagrant/action/builder.rb +174 -0
  20. data/lib/vagrant/action/builtin/box_add.rb +81 -0
  21. data/lib/vagrant/action/builtin/call.rb +67 -0
  22. data/lib/vagrant/action/builtin/config_validate.rb +30 -0
  23. data/lib/vagrant/action/builtin/confirm.rb +38 -0
  24. data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
  25. data/lib/vagrant/action/builtin/env_set.rb +24 -0
  26. data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
  27. data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
  28. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
  29. data/lib/vagrant/action/builtin/lock.rb +57 -0
  30. data/lib/vagrant/action/builtin/nfs.rb +118 -0
  31. data/lib/vagrant/action/builtin/provision.rb +70 -0
  32. data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
  33. data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
  34. data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
  35. data/lib/vagrant/action/general/package.rb +103 -0
  36. data/lib/vagrant/action/hook.rb +107 -0
  37. data/lib/vagrant/action/runner.rb +69 -0
  38. data/lib/vagrant/action/warden.rb +103 -0
  39. data/lib/vagrant/action.rb +43 -0
  40. data/lib/vagrant/batch_action.rb +113 -0
  41. data/lib/vagrant/box.rb +97 -0
  42. data/lib/vagrant/box_collection.rb +375 -0
  43. data/lib/vagrant/cli.rb +82 -0
  44. data/lib/vagrant/config/loader.rb +222 -0
  45. data/lib/vagrant/config/v1/dummy_config.rb +13 -0
  46. data/lib/vagrant/config/v1/loader.rb +105 -0
  47. data/lib/vagrant/config/v1/root.rb +60 -0
  48. data/lib/vagrant/config/v1.rb +9 -0
  49. data/lib/vagrant/config/v2/dummy_config.rb +13 -0
  50. data/lib/vagrant/config/v2/loader.rb +141 -0
  51. data/lib/vagrant/config/v2/root.rb +105 -0
  52. data/lib/vagrant/config/v2/util.rb +21 -0
  53. data/lib/vagrant/config/v2.rb +9 -0
  54. data/lib/vagrant/config/version_base.rb +80 -0
  55. data/lib/vagrant/config.rb +61 -0
  56. data/lib/vagrant/environment.rb +843 -0
  57. data/lib/vagrant/errors.rb +570 -0
  58. data/lib/vagrant/guest.rb +163 -0
  59. data/lib/vagrant/hosts.rb +28 -0
  60. data/lib/vagrant/machine.rb +325 -0
  61. data/lib/vagrant/machine_state.rb +45 -0
  62. data/lib/vagrant/plugin/v1/command.rb +169 -0
  63. data/lib/vagrant/plugin/v1/communicator.rb +98 -0
  64. data/lib/vagrant/plugin/v1/config.rb +112 -0
  65. data/lib/vagrant/plugin/v1/errors.rb +15 -0
  66. data/lib/vagrant/plugin/v1/guest.rb +92 -0
  67. data/lib/vagrant/plugin/v1/host.rb +66 -0
  68. data/lib/vagrant/plugin/v1/manager.rb +131 -0
  69. data/lib/vagrant/plugin/v1/plugin.rb +229 -0
  70. data/lib/vagrant/plugin/v1/provider.rb +68 -0
  71. data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
  72. data/lib/vagrant/plugin/v1.rb +19 -0
  73. data/lib/vagrant/plugin/v2/command.rb +234 -0
  74. data/lib/vagrant/plugin/v2/communicator.rb +98 -0
  75. data/lib/vagrant/plugin/v2/components.rb +47 -0
  76. data/lib/vagrant/plugin/v2/config.rb +136 -0
  77. data/lib/vagrant/plugin/v2/errors.rb +15 -0
  78. data/lib/vagrant/plugin/v2/guest.rb +78 -0
  79. data/lib/vagrant/plugin/v2/host.rb +66 -0
  80. data/lib/vagrant/plugin/v2/manager.rb +173 -0
  81. data/lib/vagrant/plugin/v2/plugin.rb +226 -0
  82. data/lib/vagrant/plugin/v2/provider.rb +69 -0
  83. data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
  84. data/lib/vagrant/plugin/v2.rb +22 -0
  85. data/lib/vagrant/plugin.rb +6 -0
  86. data/lib/vagrant/registry.rb +78 -0
  87. data/lib/vagrant/ui.rb +215 -0
  88. data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
  89. data/lib/vagrant/util/busy.rb +59 -0
  90. data/lib/vagrant/util/counter.rb +24 -0
  91. data/lib/vagrant/util/downloader.rb +146 -0
  92. data/lib/vagrant/util/file_checksum.rb +38 -0
  93. data/lib/vagrant/util/file_mode.rb +12 -0
  94. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  95. data/lib/vagrant/util/is_port_open.rb +38 -0
  96. data/lib/vagrant/util/line_ending_helpers.rb +14 -0
  97. data/lib/vagrant/util/network_ip.rb +28 -0
  98. data/lib/vagrant/util/platform.rb +58 -0
  99. data/lib/vagrant/util/retryable.rb +31 -0
  100. data/lib/vagrant/util/safe_chdir.rb +33 -0
  101. data/lib/vagrant/util/safe_exec.rb +36 -0
  102. data/lib/vagrant/util/safe_puts.rb +31 -0
  103. data/lib/vagrant/util/scoped_hash_override.rb +45 -0
  104. data/lib/vagrant/util/ssh.rb +150 -0
  105. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  106. data/lib/vagrant/util/string_block_editor.rb +77 -0
  107. data/lib/vagrant/util/subprocess.rb +273 -0
  108. data/lib/vagrant/util/template_renderer.rb +83 -0
  109. data/lib/vagrant/util/which.rb +43 -0
  110. data/lib/vagrant/util.rb +12 -0
  111. data/lib/vagrant/version.rb +6 -0
  112. data/lib/vagrant.rb +258 -0
  113. data/plugins/README.md +5 -0
  114. data/plugins/commands/box/command/add.rb +51 -0
  115. data/plugins/commands/box/command/list.rb +41 -0
  116. data/plugins/commands/box/command/remove.rb +37 -0
  117. data/plugins/commands/box/command/repackage.rb +43 -0
  118. data/plugins/commands/box/command/root.rb +75 -0
  119. data/plugins/commands/box/plugin.rb +15 -0
  120. data/plugins/commands/destroy/command.rb +31 -0
  121. data/plugins/commands/destroy/plugin.rb +18 -0
  122. data/plugins/commands/halt/command.rb +33 -0
  123. data/plugins/commands/halt/plugin.rb +18 -0
  124. data/plugins/commands/init/command.rb +40 -0
  125. data/plugins/commands/init/plugin.rb +18 -0
  126. data/plugins/commands/package/command.rb +83 -0
  127. data/plugins/commands/package/plugin.rb +18 -0
  128. data/plugins/commands/plugin/action/bundler_check.rb +25 -0
  129. data/plugins/commands/plugin/action/install_gem.rb +81 -0
  130. data/plugins/commands/plugin/action/license_plugin.rb +54 -0
  131. data/plugins/commands/plugin/action/list_plugins.rb +54 -0
  132. data/plugins/commands/plugin/action/prune_gems.rb +149 -0
  133. data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
  134. data/plugins/commands/plugin/action.rb +52 -0
  135. data/plugins/commands/plugin/command/base.rb +22 -0
  136. data/plugins/commands/plugin/command/install.rb +58 -0
  137. data/plugins/commands/plugin/command/license.rb +31 -0
  138. data/plugins/commands/plugin/command/list.rb +28 -0
  139. data/plugins/commands/plugin/command/root.rb +75 -0
  140. data/plugins/commands/plugin/command/uninstall.rb +28 -0
  141. data/plugins/commands/plugin/gem_helper.rb +74 -0
  142. data/plugins/commands/plugin/plugin.rb +22 -0
  143. data/plugins/commands/plugin/state_file.rb +57 -0
  144. data/plugins/commands/provision/command.rb +34 -0
  145. data/plugins/commands/provision/plugin.rb +18 -0
  146. data/plugins/commands/reload/command.rb +37 -0
  147. data/plugins/commands/reload/plugin.rb +18 -0
  148. data/plugins/commands/resume/command.rb +25 -0
  149. data/plugins/commands/resume/plugin.rb +17 -0
  150. data/plugins/commands/ssh/command.rb +63 -0
  151. data/plugins/commands/ssh/plugin.rb +17 -0
  152. data/plugins/commands/ssh_config/command.rb +49 -0
  153. data/plugins/commands/ssh_config/plugin.rb +18 -0
  154. data/plugins/commands/status/command.rb +39 -0
  155. data/plugins/commands/status/plugin.rb +18 -0
  156. data/plugins/commands/suspend/command.rb +25 -0
  157. data/plugins/commands/suspend/plugin.rb +18 -0
  158. data/plugins/commands/up/command.rb +57 -0
  159. data/plugins/commands/up/plugin.rb +17 -0
  160. data/plugins/commands/up/start_mixins.rb +26 -0
  161. data/plugins/communicators/ssh/communicator.rb +342 -0
  162. data/plugins/communicators/ssh/plugin.rb +19 -0
  163. data/plugins/guests/arch/cap/change_host_name.rb +18 -0
  164. data/plugins/guests/arch/cap/configure_networks.rb +23 -0
  165. data/plugins/guests/arch/guest.rb +11 -0
  166. data/plugins/guests/arch/plugin.rb +25 -0
  167. data/plugins/guests/debian/cap/change_host_name.rb +18 -0
  168. data/plugins/guests/debian/cap/configure_networks.rb +61 -0
  169. data/plugins/guests/debian/guest.rb +9 -0
  170. data/plugins/guests/debian/plugin.rb +25 -0
  171. data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
  172. data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
  173. data/plugins/guests/fedora/guest.rb +11 -0
  174. data/plugins/guests/fedora/plugin.rb +25 -0
  175. data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
  176. data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
  177. data/plugins/guests/freebsd/cap/halt.rb +16 -0
  178. data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
  179. data/plugins/guests/freebsd/guest.rb +14 -0
  180. data/plugins/guests/freebsd/plugin.rb +35 -0
  181. data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
  182. data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
  183. data/plugins/guests/gentoo/guest.rb +9 -0
  184. data/plugins/guests/gentoo/plugin.rb +25 -0
  185. data/plugins/guests/linux/cap/halt.rb +16 -0
  186. data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
  187. data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
  188. data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
  189. data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
  190. data/plugins/guests/linux/guest.rb +11 -0
  191. data/plugins/guests/linux/plugin.rb +40 -0
  192. data/plugins/guests/openbsd/cap/halt.rb +16 -0
  193. data/plugins/guests/openbsd/guest.rb +11 -0
  194. data/plugins/guests/openbsd/plugin.rb +20 -0
  195. data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
  196. data/plugins/guests/pld/guest.rb +11 -0
  197. data/plugins/guests/pld/plugin.rb +20 -0
  198. data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
  199. data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
  200. data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
  201. data/plugins/guests/redhat/guest.rb +11 -0
  202. data/plugins/guests/redhat/plugin.rb +30 -0
  203. data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
  204. data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
  205. data/plugins/guests/solaris/cap/halt.rb +21 -0
  206. data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
  207. data/plugins/guests/solaris/config.rb +18 -0
  208. data/plugins/guests/solaris/guest.rb +14 -0
  209. data/plugins/guests/solaris/plugin.rb +40 -0
  210. data/plugins/guests/suse/cap/change_host_name.rb +18 -0
  211. data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
  212. data/plugins/guests/suse/guest.rb +11 -0
  213. data/plugins/guests/suse/plugin.rb +25 -0
  214. data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
  215. data/plugins/guests/ubuntu/guest.rb +32 -0
  216. data/plugins/guests/ubuntu/plugin.rb +20 -0
  217. data/plugins/hosts/arch/host.rb +68 -0
  218. data/plugins/hosts/arch/plugin.rb +15 -0
  219. data/plugins/hosts/bsd/host.rb +102 -0
  220. data/plugins/hosts/bsd/plugin.rb +15 -0
  221. data/plugins/hosts/fedora/host.rb +51 -0
  222. data/plugins/hosts/fedora/plugin.rb +15 -0
  223. data/plugins/hosts/freebsd/host.rb +43 -0
  224. data/plugins/hosts/freebsd/plugin.rb +15 -0
  225. data/plugins/hosts/gentoo/host.rb +24 -0
  226. data/plugins/hosts/gentoo/plugin.rb +15 -0
  227. data/plugins/hosts/linux/host.rb +95 -0
  228. data/plugins/hosts/linux/plugin.rb +15 -0
  229. data/plugins/hosts/opensuse/host.rb +34 -0
  230. data/plugins/hosts/opensuse/plugin.rb +15 -0
  231. data/plugins/hosts/windows/host.rb +17 -0
  232. data/plugins/hosts/windows/plugin.rb +15 -0
  233. data/plugins/kernel_v1/config/nfs.rb +20 -0
  234. data/plugins/kernel_v1/config/package.rb +17 -0
  235. data/plugins/kernel_v1/config/ssh.rb +46 -0
  236. data/plugins/kernel_v1/config/vagrant.rb +31 -0
  237. data/plugins/kernel_v1/config/vm.rb +184 -0
  238. data/plugins/kernel_v1/plugin.rb +44 -0
  239. data/plugins/kernel_v2/config/nfs.rb +14 -0
  240. data/plugins/kernel_v2/config/package.rb +13 -0
  241. data/plugins/kernel_v2/config/ssh.rb +76 -0
  242. data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
  243. data/plugins/kernel_v2/config/vagrant.rb +13 -0
  244. data/plugins/kernel_v2/config/vm.rb +416 -0
  245. data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
  246. data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
  247. data/plugins/kernel_v2/plugin.rb +44 -0
  248. data/plugins/providers/virtualbox/action/boot.rb +49 -0
  249. data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
  250. data/plugins/providers/virtualbox/action/check_created.rb +21 -0
  251. data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
  252. data/plugins/providers/virtualbox/action/check_running.rb +21 -0
  253. data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
  254. data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
  255. data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
  256. data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
  257. data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
  258. data/plugins/providers/virtualbox/action/created.rb +20 -0
  259. data/plugins/providers/virtualbox/action/customize.rb +36 -0
  260. data/plugins/providers/virtualbox/action/destroy.rb +19 -0
  261. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
  262. data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
  263. data/plugins/providers/virtualbox/action/export.rb +57 -0
  264. data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
  265. data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
  266. data/plugins/providers/virtualbox/action/import.rb +51 -0
  267. data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
  268. data/plugins/providers/virtualbox/action/is_running.rb +20 -0
  269. data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
  270. data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
  271. data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
  272. data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
  273. data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
  274. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
  275. data/plugins/providers/virtualbox/action/network.rb +410 -0
  276. data/plugins/providers/virtualbox/action/package.rb +20 -0
  277. data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
  278. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
  279. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
  280. data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
  281. data/plugins/providers/virtualbox/action/resume.rb +25 -0
  282. data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
  283. data/plugins/providers/virtualbox/action/set_name.rb +40 -0
  284. data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
  285. data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
  286. data/plugins/providers/virtualbox/action/suspend.rb +20 -0
  287. data/plugins/providers/virtualbox/action.rb +311 -0
  288. data/plugins/providers/virtualbox/config.rb +86 -0
  289. data/plugins/providers/virtualbox/driver/base.rb +360 -0
  290. data/plugins/providers/virtualbox/driver/meta.rb +142 -0
  291. data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
  292. data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
  293. data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
  294. data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
  295. data/plugins/providers/virtualbox/plugin.rb +42 -0
  296. data/plugins/providers/virtualbox/provider.rb +92 -0
  297. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
  298. data/plugins/provisioners/ansible/config.rb +72 -0
  299. data/plugins/provisioners/ansible/plugin.rb +23 -0
  300. data/plugins/provisioners/ansible/provisioner.rb +45 -0
  301. data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
  302. data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
  303. data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
  304. data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
  305. data/plugins/provisioners/cfengine/config.rb +120 -0
  306. data/plugins/provisioners/cfengine/plugin.rb +42 -0
  307. data/plugins/provisioners/cfengine/provisioner.rb +136 -0
  308. data/plugins/provisioners/chef/config/base.rb +85 -0
  309. data/plugins/provisioners/chef/config/chef_client.rb +57 -0
  310. data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
  311. data/plugins/provisioners/chef/plugin.rb +33 -0
  312. data/plugins/provisioners/chef/provisioner/base.rb +93 -0
  313. data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
  314. data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
  315. data/plugins/provisioners/puppet/config/puppet.rb +70 -0
  316. data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
  317. data/plugins/provisioners/puppet/plugin.rb +33 -0
  318. data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
  319. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
  320. data/plugins/provisioners/shell/config.rb +56 -0
  321. data/plugins/provisioners/shell/plugin.rb +23 -0
  322. data/plugins/provisioners/shell/provisioner.rb +86 -0
  323. data/tasks/acceptance.rake +113 -0
  324. data/tasks/bundler.rake +3 -0
  325. data/tasks/test.rake +20 -0
  326. data/templates/commands/init/Vagrantfile.erb +111 -0
  327. data/templates/commands/ssh_config/config.erb +16 -0
  328. data/templates/config/messages.erb +14 -0
  329. data/templates/config/validation_failed.erb +7 -0
  330. data/templates/guests/arch/network_dhcp.erb +4 -0
  331. data/templates/guests/arch/network_static.erb +6 -0
  332. data/templates/guests/debian/network_dhcp.erb +11 -0
  333. data/templates/guests/debian/network_static.erb +7 -0
  334. data/templates/guests/fedora/network_dhcp.erb +6 -0
  335. data/templates/guests/fedora/network_static.erb +13 -0
  336. data/templates/guests/freebsd/network_dhcp.erb +3 -0
  337. data/templates/guests/freebsd/network_static.erb +3 -0
  338. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  339. data/templates/guests/gentoo/network_static.erb +4 -0
  340. data/templates/guests/redhat/network_dhcp.erb +6 -0
  341. data/templates/guests/redhat/network_static.erb +8 -0
  342. data/templates/locales/en.yml +1126 -0
  343. data/templates/nfs/exports.erb +5 -0
  344. data/templates/nfs/exports_freebsd.erb +5 -0
  345. data/templates/nfs/exports_linux.erb +5 -0
  346. data/templates/package_Vagrantfile.erb +11 -0
  347. data/templates/provisioners/chef_client/client.erb +32 -0
  348. data/templates/provisioners/chef_solo/solo.erb +25 -0
  349. data/templates/rgloader.rb +9 -0
  350. data/test/acceptance/base.rb +48 -0
  351. data/test/acceptance/box_test.rb +99 -0
  352. data/test/acceptance/destroy_test.rb +37 -0
  353. data/test/acceptance/halt_test.rb +72 -0
  354. data/test/acceptance/init_test.rb +33 -0
  355. data/test/acceptance/networking/host_only_test.rb +37 -0
  356. data/test/acceptance/networking/port_forward_test.rb +125 -0
  357. data/test/acceptance/package_test.rb +46 -0
  358. data/test/acceptance/provisioning/basic_test.rb +61 -0
  359. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  360. data/test/acceptance/provisioning/shell_test.rb +53 -0
  361. data/test/acceptance/resume_test.rb +17 -0
  362. data/test/acceptance/shared_folders_test.rb +84 -0
  363. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  364. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  365. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  366. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  367. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  368. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  369. data/test/acceptance/ssh_test.rb +46 -0
  370. data/test/acceptance/support/config.rb +42 -0
  371. data/test/acceptance/support/isolated_environment.rb +118 -0
  372. data/test/acceptance/support/matchers/have_color.rb +9 -0
  373. data/test/acceptance/support/matchers/match_output.rb +14 -0
  374. data/test/acceptance/support/matchers/succeed.rb +14 -0
  375. data/test/acceptance/support/network_tests.rb +29 -0
  376. data/test/acceptance/support/output.rb +95 -0
  377. data/test/acceptance/support/shared/base_context.rb +72 -0
  378. data/test/acceptance/support/shared/command_examples.rb +33 -0
  379. data/test/acceptance/support/virtualbox.rb +36 -0
  380. data/test/acceptance/suspend_test.rb +56 -0
  381. data/test/acceptance/up_basic_test.rb +33 -0
  382. data/test/acceptance/up_with_box_url.rb +40 -0
  383. data/test/acceptance/vagrant_test.rb +47 -0
  384. data/test/acceptance/version_test.rb +15 -0
  385. data/test/config/acceptance_boxes.yml +7 -0
  386. data/test/support/isolated_environment.rb +46 -0
  387. data/test/support/tempdir.rb +43 -0
  388. data/test/unit/base.rb +27 -0
  389. data/test/unit/support/dummy_provider.rb +16 -0
  390. data/test/unit/support/isolated_environment.rb +179 -0
  391. data/test/unit/support/shared/base_context.rb +104 -0
  392. data/test/unit/vagrant/action/builder_test.rb +242 -0
  393. data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
  394. data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
  395. data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
  396. data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
  397. data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
  398. data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
  399. data/test/unit/vagrant/action/hook_test.rb +120 -0
  400. data/test/unit/vagrant/action/runner_test.rb +71 -0
  401. data/test/unit/vagrant/action/warden_test.rb +92 -0
  402. data/test/unit/vagrant/batch_action_test.rb +36 -0
  403. data/test/unit/vagrant/box_collection_test.rb +237 -0
  404. data/test/unit/vagrant/box_test.rb +122 -0
  405. data/test/unit/vagrant/cli_test.rb +27 -0
  406. data/test/unit/vagrant/config/loader_test.rb +184 -0
  407. data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
  408. data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
  409. data/test/unit/vagrant/config/v1/root_test.rb +40 -0
  410. data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
  411. data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
  412. data/test/unit/vagrant/config/v2/root_test.rb +97 -0
  413. data/test/unit/vagrant/config/v2/util_test.rb +21 -0
  414. data/test/unit/vagrant/config_test.rb +66 -0
  415. data/test/unit/vagrant/environment_test.rb +721 -0
  416. data/test/unit/vagrant/guest_test.rb +166 -0
  417. data/test/unit/vagrant/hosts_test.rb +37 -0
  418. data/test/unit/vagrant/machine_state_test.rb +26 -0
  419. data/test/unit/vagrant/machine_test.rb +384 -0
  420. data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
  421. data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
  422. data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
  423. data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
  424. data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
  425. data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
  426. data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
  427. data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
  428. data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
  429. data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
  430. data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
  431. data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
  432. data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
  433. data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
  434. data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
  435. data/test/unit/vagrant/registry_test.rb +128 -0
  436. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
  437. data/test/unit/vagrant/util/downloader_test.rb +57 -0
  438. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  439. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
  440. data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
  441. data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
  442. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  443. data/test/unit/vagrant/util/retryable_test.rb +106 -0
  444. data/test/unit/vagrant/util/safe_chdir_test.rb +43 -0
  445. data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
  446. data/test/unit/vagrant/util/ssh_test.rb +30 -0
  447. data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
  448. data/test/unit/vagrant/util/which_test.rb +43 -0
  449. data/test/unit/vagrant_test.rb +56 -0
  450. data/tnargav.gemspec +69 -0
  451. data/vagrant.gemspec +69 -0
  452. metadata +730 -0
@@ -0,0 +1,117 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module Puppet
5
+ module Provisioner
6
+ class PuppetError < Vagrant::Errors::VagrantError
7
+ error_namespace("vagrant.provisioners.puppet")
8
+ end
9
+
10
+ class Puppet < Vagrant.plugin("2", :provisioner)
11
+ def initialize(machine, config)
12
+ super
13
+
14
+ @logger = Log4r::Logger.new("vagrant::provisioners::puppet")
15
+ end
16
+
17
+ def configure(root_config)
18
+ # Calculate the paths we're going to use based on the environment
19
+ root_path = @machine.env.root_path
20
+ @expanded_manifests_path = @config.expanded_manifests_path(root_path)
21
+ @expanded_module_paths = @config.expanded_module_paths(root_path)
22
+ @manifest_file = @config.manifest_file
23
+
24
+ # Setup the module paths
25
+ @module_paths = []
26
+ @expanded_module_paths.each_with_index do |path, i|
27
+ @module_paths << [path, File.join(config.pp_path, "modules-#{i}")]
28
+ end
29
+
30
+ # Share the manifests directory with the guest
31
+ root_config.vm.synced_folder(
32
+ @expanded_manifests_path, manifests_guest_path)
33
+
34
+ # Share the module paths
35
+ count = 0
36
+ @module_paths.each do |from, to|
37
+ # Sorry for the cryptic key here, but VirtualBox has a strange limit on
38
+ # maximum size for it and its something small (around 10)
39
+ root_config.vm.synced_folder(from, to)
40
+ count += 1
41
+ end
42
+ end
43
+
44
+ def provision
45
+ # Check that the shared folders are properly shared
46
+ check = [manifests_guest_path]
47
+ @module_paths.each do |host_path, guest_path|
48
+ check << guest_path
49
+ end
50
+
51
+ verify_shared_folders(check)
52
+
53
+ # Verify Puppet is installed and run it
54
+ verify_binary("puppet")
55
+ run_puppet_apply
56
+ end
57
+
58
+ def manifests_guest_path
59
+ File.join(config.pp_path, "manifests")
60
+ end
61
+
62
+ def verify_binary(binary)
63
+ @machine.communicate.sudo(
64
+ "which #{binary}",
65
+ :error_class => PuppetError,
66
+ :error_key => :not_detected,
67
+ :binary => binary)
68
+ end
69
+
70
+ def run_puppet_apply
71
+ options = [config.options].flatten
72
+ module_paths = @module_paths.map { |_, to| to }
73
+ if !@module_paths.empty?
74
+ # Prepend the default module path
75
+ module_paths.unshift("/etc/puppet/modules")
76
+
77
+ # Add the command line switch to add the module path
78
+ options << "--modulepath '#{module_paths.join(':')}'"
79
+ end
80
+
81
+ options << @manifest_file
82
+ options = options.join(" ")
83
+
84
+ # Build up the custom facts if we have any
85
+ facter = ""
86
+ if !config.facter.empty?
87
+ facts = []
88
+ config.facter.each do |key, value|
89
+ facts << "FACTER_#{key}='#{value}'"
90
+ end
91
+
92
+ facter = "#{facts.join(" ")} "
93
+ end
94
+
95
+ command = "cd #{manifests_guest_path} && #{facter}puppet apply #{options} --detailed-exitcodes || [ $? -eq 2 ]"
96
+
97
+ @machine.env.ui.info I18n.t("vagrant.provisioners.puppet.running_puppet",
98
+ :manifest => @manifest_file)
99
+
100
+ @machine.communicate.sudo(command) do |type, data|
101
+ data.chomp!
102
+ @machine.env.ui.info(data, :prefix => false) if !data.empty?
103
+ end
104
+ end
105
+
106
+ def verify_shared_folders(folders)
107
+ folders.each do |folder|
108
+ @logger.debug("Checking for shared folder: #{folder}")
109
+ if !@machine.communicate.test("test -d #{folder}")
110
+ raise PuppetError, :missing_shared_folders
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,67 @@
1
+ module VagrantPlugins
2
+ module Puppet
3
+ module Provisioner
4
+ class PuppetServerError < Vagrant::Errors::VagrantError
5
+ error_namespace("vagrant.provisioners.puppet_server")
6
+ end
7
+
8
+ class PuppetServer < Vagrant.plugin("2", :provisioner)
9
+ def provision
10
+ verify_binary("puppet")
11
+ run_puppet_agent
12
+ end
13
+
14
+ def verify_binary(binary)
15
+ @machine.communicate.sudo(
16
+ "which #{binary}",
17
+ :error_class => PuppetServerError,
18
+ :error_key => :not_detected,
19
+ :binary => binary)
20
+ end
21
+
22
+ def run_puppet_agent
23
+ options = config.options
24
+ options = [options] if !options.is_a?(Array)
25
+
26
+ # Intelligently set the puppet node cert name based on certain
27
+ # external parameters.
28
+ cn = nil
29
+ if config.puppet_node
30
+ # If a node name is given, we use that directly for the certname
31
+ cn = config.puppet_node
32
+ elsif @machine.config.vm.hostname
33
+ # If a host name is given, we explicitly set the certname to
34
+ # nil so that the hostname becomes the cert name.
35
+ cn = nil
36
+ else
37
+ # Otherwise, we default to the name of the box.
38
+ cn = @machine.config.vm.box
39
+ end
40
+
41
+ # Add the certname option if there is one
42
+ options += ["--certname", cn] if cn
43
+ options = options.join(" ")
44
+
45
+ # Build up the custom facts if we have any
46
+ facter = ""
47
+ if !config.facter.empty?
48
+ facts = []
49
+ config.facter.each do |key, value|
50
+ facts << "FACTER_#{key}='#{value}'"
51
+ end
52
+
53
+ facter = "#{facts.join(" ")} "
54
+ end
55
+
56
+ command = "#{facter}puppet agent #{options} --server #{config.puppet_server} --detailed-exitcodes || [ $? -eq 2 ]"
57
+
58
+ @machine.env.ui.info I18n.t("vagrant.provisioners.puppet_server.running_puppetd")
59
+ @machine.communicate.sudo(command) do |type, data|
60
+ data.chomp!
61
+ @machine.env.ui.info(data, :prefix => false) if !data.empty?
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,56 @@
1
+ module VagrantPlugins
2
+ module Shell
3
+ class Config < Vagrant.plugin("2", :config)
4
+ attr_accessor :inline
5
+ attr_accessor :path
6
+ attr_accessor :upload_path
7
+ attr_accessor :args
8
+
9
+ def initialize
10
+ @args = UNSET_VALUE
11
+ @inline = UNSET_VALUE
12
+ @path = UNSET_VALUE
13
+ @upload_path = UNSET_VALUE
14
+ end
15
+
16
+ def finalize!
17
+ @args = nil if @args == UNSET_VALUE
18
+ @inline = nil if @inline == UNSET_VALUE
19
+ @path = nil if @path == UNSET_VALUE
20
+ @upload_path = "/tmp/vagrant-shell" if @upload_path == UNSET_VALUE
21
+ end
22
+
23
+ def validate(machine)
24
+ errors = _detected_errors
25
+
26
+ # Validate that the parameters are properly set
27
+ if path && inline
28
+ errors << I18n.t("vagrant.provisioners.shell.path_and_inline_set")
29
+ elsif !path && !inline
30
+ errors << I18n.t("vagrant.provisioners.shell.no_path_or_inline")
31
+ end
32
+
33
+ # Validate the existence of a script to upload
34
+ if path
35
+ expanded_path = Pathname.new(path).expand_path(machine.env.root_path)
36
+ if !expanded_path.file?
37
+ errors << I18n.t("vagrant.provisioners.shell.path_invalid",
38
+ :path => expanded_path)
39
+ end
40
+ end
41
+
42
+ # There needs to be a path to upload the script to
43
+ if !upload_path
44
+ errors << I18n.t("vagrant.provisioners.shell.upload_path_not_set")
45
+ end
46
+
47
+ # If there are args and its not a string, that is a problem
48
+ if args && !args.is_a?(String)
49
+ errors << I18n.t("vagrant.provisioners.shell.args_not_string")
50
+ end
51
+
52
+ { "shell provisioner" => errors }
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,23 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Shell
5
+ class Plugin < Vagrant.plugin("2")
6
+ name "shell"
7
+ description <<-DESC
8
+ Provides support for provisioning your virtual machines with
9
+ shell scripts.
10
+ DESC
11
+
12
+ config(:shell, :provisioner) do
13
+ require File.expand_path("../config", __FILE__)
14
+ Config
15
+ end
16
+
17
+ provisioner(:shell) do
18
+ require File.expand_path("../provisioner", __FILE__)
19
+ Provisioner
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,86 @@
1
+ require "pathname"
2
+ require "tempfile"
3
+
4
+ module VagrantPlugins
5
+ module Shell
6
+ class Provisioner < Vagrant.plugin("2", :provisioner)
7
+ def provision
8
+ args = ""
9
+ args = " #{config.args}" if config.args
10
+ command = "chmod +x #{config.upload_path} && #{config.upload_path}#{args}"
11
+
12
+ with_script_file do |path|
13
+ # Upload the script to the machine
14
+ @machine.communicate.tap do |comm|
15
+ # Reset upload path permissions for the current ssh user
16
+ user = @machine.ssh_info[:username]
17
+ comm.sudo("chown -R #{user} #{config.upload_path}",
18
+ :error_check => false)
19
+
20
+ comm.upload(path.to_s, config.upload_path)
21
+
22
+ if config.path
23
+ @machine.ui.info(I18n.t("vagrant.provisioners.shell.running",
24
+ script: path.to_s))
25
+ else
26
+ @machine.ui.info(I18n.t("vagrant.provisioners.shell.running",
27
+ script: "inline script"))
28
+ end
29
+
30
+ # Execute it with sudo
31
+ comm.sudo(command) do |type, data|
32
+ if [:stderr, :stdout].include?(type)
33
+ # Output the data with the proper color based on the stream.
34
+ color = type == :stdout ? :green : :red
35
+
36
+ # Note: Be sure to chomp the data to avoid the newlines that the
37
+ # Chef outputs.
38
+ @machine.env.ui.info(data.chomp, :color => color, :prefix => false)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ protected
46
+
47
+ # This method yields the path to a script to upload and execute
48
+ # on the remote server. This method will properly clean up the
49
+ # script file if needed.
50
+ def with_script_file
51
+ script = nil
52
+
53
+ if config.path
54
+ # Just yield the path to that file...
55
+ root_path = @machine.env.root_path
56
+ script = Pathname.new(config.path).expand_path(root_path).read
57
+ else
58
+ # The script is just the inline code...
59
+ script = config.inline
60
+ end
61
+
62
+ # Replace Windows line endings with Unix ones
63
+ script.gsub!(/\r\n?$/, "\n")
64
+
65
+ # Otherwise we have an inline script, we need to Tempfile it,
66
+ # and handle it specially...
67
+ file = Tempfile.new('vagrant-shell')
68
+
69
+ # Unless you set binmode, on a Windows host the shell script will
70
+ # have CRLF line endings instead of LF line endings, causing havoc
71
+ # when the guest executes it. This fixes [GH-1181].
72
+ file.binmode
73
+
74
+ begin
75
+ file.write(script)
76
+ file.fsync
77
+ file.close
78
+ yield file.path
79
+ ensure
80
+ file.close
81
+ file.unlink
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,113 @@
1
+ require 'digest/sha1'
2
+ require 'net/http'
3
+ require 'pathname'
4
+ require 'uri'
5
+ require 'yaml'
6
+
7
+ require 'childprocess'
8
+
9
+ require 'vagrant/util/file_checksum'
10
+
11
+ namespace :acceptance do
12
+ desc "Downloads the boxes required for running the acceptance tests."
13
+ task :boxes, :directory do |t, args|
14
+ # Create the directory where the boxes will be downloaded
15
+ box_dir = Pathname.new(args[:directory] || File.expand_path("../../boxes", __FILE__))
16
+ box_dir.mkpath
17
+ puts "Boxes will be placed in: #{box_dir}"
18
+
19
+ # Load the required boxes
20
+ boxes = YAML.load_file(File.expand_path("../../test/config/acceptance_boxes.yml", __FILE__))
21
+
22
+ boxes.each do |box|
23
+ puts "Box: #{box["name"]}"
24
+ box_file = box_dir.join("#{box["name"]}.box")
25
+ checksum = FileChecksum.new(box_file, Digest::SHA1)
26
+
27
+ # If the box exists, we need to check the checksum and determine if we need
28
+ # to redownload the file.
29
+ if box_file.exist?
30
+ print "Box exists, checking SHA1 sum... "
31
+ if checksum.checksum == box["checksum"]
32
+ print "OK\n"
33
+ next
34
+ else
35
+ print "FAIL\n"
36
+ end
37
+ end
38
+
39
+ # Download the file. Note that this has no error checking and just uses
40
+ # pure net/http. There could be a better way.
41
+ puts "Downloading: #{box["url"]}"
42
+ destination = box_file.open("wb")
43
+ uri = URI.parse(box["url"])
44
+ Net::HTTP.new(uri.host, uri.port).start do |http|
45
+ http.request_get(uri.request_uri) do |response|
46
+ total = response.content_length
47
+ progress = 0
48
+ count = 0
49
+
50
+ response.read_body do |segment|
51
+ # Really elementary progress meter
52
+ progress += segment.length
53
+ count += 1
54
+ puts "Progress: #{(progress.to_f / total.to_f) * 100}%" if count % 300 == 0
55
+
56
+ # Write out to the destination file
57
+ destination.write(segment)
58
+ end
59
+ end
60
+ end
61
+
62
+ destination.close
63
+
64
+ # Check the checksum of the new file to verify that it
65
+ # downloaded properly. This shouldn't happen, but it can!
66
+ if checksum.checksum != box["checksum"]
67
+ puts "Checksum didn't match! Download was corrupt!"
68
+ abort
69
+ end
70
+ end
71
+ end
72
+
73
+ desc "Generates the configuration for acceptance tests from current source."
74
+ task :config, :box_dir do |t, args|
75
+ require File.expand_path("../../lib/vagrant/version", __FILE__)
76
+ require File.expand_path('../../test/support/tempdir', __FILE__)
77
+
78
+ # Get the directory for the boxes
79
+ box_dir = Pathname.new(args[:box_dir] || File.expand_path("../../boxes", __FILE__))
80
+
81
+ # Generate the binstubs for the Vagrant binary
82
+ tempdir = Tempdir.new
83
+ process = ChildProcess.build("bundle", "install", "--binstubs", tempdir.path)
84
+ process.io.inherit!
85
+ process.start
86
+ process.poll_for_exit(64000)
87
+ if process.exit_code != 0
88
+ # Bundle install failed...
89
+ puts "Bundle install failed!"
90
+ abort
91
+ end
92
+
93
+ # Generate the actual configuration
94
+ config = {
95
+ "vagrant_path" => File.join(tempdir.path, "vagrant"),
96
+ "vagrant_version" => Vagrant::VERSION,
97
+ "env" => {
98
+ "BUNDLE_GEMFILE" => File.expand_path("../../Gemfile", __FILE__)
99
+ },
100
+ "box_directory" => box_dir.to_s
101
+ }
102
+
103
+ File.open("acceptance_config.yml", "w+") do |f|
104
+ f.write(YAML.dump(config))
105
+ end
106
+
107
+ puts <<-OUTPUT
108
+ Acceptance test configuration is now in this directory in
109
+ "acceptance_config.yml." Set your ACCEPTANCE_CONFIG environmental
110
+ variable to this file and run any of the acceptance tests now.
111
+ OUTPUT
112
+ end
113
+ end
@@ -0,0 +1,3 @@
1
+ # This installs the tasks that help with gem creation and
2
+ # publishing.
3
+ Bundler::GemHelper.install_tasks
data/tasks/test.rake ADDED
@@ -0,0 +1,20 @@
1
+ require 'rake/testtask'
2
+ require 'rspec/core/rake_task'
3
+
4
+ namespace :test do
5
+ RSpec::Core::RakeTask.new do |t|
6
+ t.name = "unit"
7
+ t.pattern = "test/unit/**/*_test.rb"
8
+ end
9
+
10
+ Rake::TestTask.new do |t|
11
+ t.name = "unit_old"
12
+ t.libs << "test/unit_legacy"
13
+ t.pattern = "test/unit_legacy/**/*_test.rb"
14
+ end
15
+
16
+ RSpec::Core::RakeTask.new do |t|
17
+ t.name = "acceptance"
18
+ t.pattern = "test/acceptance/**/*_test.rb"
19
+ end
20
+ end
@@ -0,0 +1,111 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant.configure("2") do |config|
5
+ # All Vagrant configuration is done here. The most common configuration
6
+ # options are documented and commented below. For a complete reference,
7
+ # please see the online documentation at vagrantup.com.
8
+
9
+ # Every Vagrant virtual environment requires a box to build off of.
10
+ config.vm.box = "<%= box_name %>"
11
+
12
+ # The url from where the 'config.vm.box' box will be fetched if it
13
+ # doesn't already exist on the user's system.
14
+ <% if box_url.nil? %># <% end %>config.vm.box_url = "<%= box_url || "http://domain.com/path/to/above.box" %>"
15
+
16
+ # Create a forwarded port mapping which allows access to a specific port
17
+ # within the machine from a port on the host machine. In the example below,
18
+ # accessing "localhost:8080" will access port 80 on the guest machine.
19
+ # config.vm.network :forwarded_port, guest: 80, host: 8080
20
+
21
+ # Create a private network, which allows host-only access to the machine
22
+ # using a specific IP.
23
+ # config.vm.network :private_network, ip: "192.168.33.10"
24
+
25
+ # Create a public network, which generally matched to bridged network.
26
+ # Bridged networks make the machine appear as another physical device on
27
+ # your network.
28
+ # config.vm.network :public_network
29
+
30
+ # Share an additional folder to the guest VM. The first argument is
31
+ # the path on the host to the actual folder. The second argument is
32
+ # the path on the guest to mount the folder. And the optional third
33
+ # argument is a set of non-required options.
34
+ # config.vm.synced_folder "../data", "/vagrant_data"
35
+
36
+ # Provider-specific configuration so you can fine-tune various
37
+ # backing providers for Vagrant. These expose provider-specific options.
38
+ # Example for VirtualBox:
39
+ #
40
+ # config.vm.provider :virtualbox do |vb|
41
+ # # Don't boot with headless mode
42
+ # vb.gui = true
43
+ #
44
+ # # Use VBoxManage to customize the VM. For example to change memory:
45
+ # vb.customize ["modifyvm", :id, "--memory", "1024"]
46
+ # end
47
+ #
48
+ # View the documentation for the provider you're using for more
49
+ # information on available options.
50
+
51
+ # Enable provisioning with Puppet stand alone. Puppet manifests
52
+ # are contained in a directory path relative to this Vagrantfile.
53
+ # You will need to create the manifests directory and a manifest in
54
+ # the file <%= box_name %>.pp in the manifests_path directory.
55
+ #
56
+ # An example Puppet manifest to provision the message of the day:
57
+ #
58
+ # # group { "puppet":
59
+ # # ensure => "present",
60
+ # # }
61
+ # #
62
+ # # File { owner => 0, group => 0, mode => 0644 }
63
+ # #
64
+ # # file { '/etc/motd':
65
+ # # content => "Welcome to your Vagrant-built virtual machine!
66
+ # # Managed by Puppet.\n"
67
+ # # }
68
+ #
69
+ # config.vm.provision :puppet do |puppet|
70
+ # puppet.manifests_path = "manifests"
71
+ # puppet.manifest_file = "init.pp"
72
+ # end
73
+
74
+ # Enable provisioning with chef solo, specifying a cookbooks path, roles
75
+ # path, and data_bags path (all relative to this Vagrantfile), and adding
76
+ # some recipes and/or roles.
77
+ #
78
+ # config.vm.provision :chef_solo do |chef|
79
+ # chef.cookbooks_path = "../my-recipes/cookbooks"
80
+ # chef.roles_path = "../my-recipes/roles"
81
+ # chef.data_bags_path = "../my-recipes/data_bags"
82
+ # chef.add_recipe "mysql"
83
+ # chef.add_role "web"
84
+ #
85
+ # # You may also specify custom JSON attributes:
86
+ # chef.json = { :mysql_password => "foo" }
87
+ # end
88
+
89
+ # Enable provisioning with chef server, specifying the chef server URL,
90
+ # and the path to the validation key (relative to this Vagrantfile).
91
+ #
92
+ # The Opscode Platform uses HTTPS. Substitute your organization for
93
+ # ORGNAME in the URL and validation key.
94
+ #
95
+ # If you have your own Chef Server, use the appropriate URL, which may be
96
+ # HTTP instead of HTTPS depending on your configuration. Also change the
97
+ # validation key to validation.pem.
98
+ #
99
+ # config.vm.provision :chef_client do |chef|
100
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
101
+ # chef.validation_key_path = "ORGNAME-validator.pem"
102
+ # end
103
+ #
104
+ # If you're using the Opscode platform, your validator client is
105
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
106
+ #
107
+ # If you have your own Chef Server, the default validation client name is
108
+ # chef-validator, unless you changed the configuration.
109
+ #
110
+ # chef.validation_client_name = "ORGNAME-validator"
111
+ end
@@ -0,0 +1,16 @@
1
+ Host <%= host_key %>
2
+ HostName <%= ssh_host %>
3
+ User <%= ssh_user %>
4
+ Port <%= ssh_port %>
5
+ UserKnownHostsFile /dev/null
6
+ StrictHostKeyChecking no
7
+ PasswordAuthentication no
8
+ IdentityFile "<%= private_key_path %>"
9
+ IdentitiesOnly yes
10
+ LogLevel FATAL
11
+ <% if forward_agent -%>
12
+ ForwardAgent yes
13
+ <% end -%>
14
+ <% if forward_x11 -%>
15
+ ForwardX11 yes
16
+ <% end -%>
@@ -0,0 +1,14 @@
1
+ <% if !warnings.empty? -%>
2
+ Warnings:
3
+ <% warnings.each do |warning| -%>
4
+ * <%= warning %>
5
+ <% end -%>
6
+
7
+ <% end -%>
8
+ <% if !errors.empty? -%>
9
+ Errors:
10
+ <% errors.each do |error| -%>
11
+ * <%= error %>
12
+ <% end -%>
13
+
14
+ <% end -%>
@@ -0,0 +1,7 @@
1
+ <% errors.each do |section, list| -%>
2
+ <%= section %>:
3
+ <% list.each do |error| -%>
4
+ * <%= error %>
5
+ <% end -%>
6
+
7
+ <% end -%>
@@ -0,0 +1,4 @@
1
+ CONNECTION='ethernet'
2
+ DESCRIPTION='A basic dhcp ethernet connection'
3
+ INTERFACE='eth<%= options[:interface] %>'
4
+ IP='dhcp'
@@ -0,0 +1,6 @@
1
+ CONNECTION='ethernet'
2
+ DESCRIPTION='A basic static ethernet connection'
3
+ INTERFACE='eth<%= options[:interface] %>'
4
+ IP='static'
5
+ ADDR='<%= options[:ip]%>'
6
+ NETMASK='<%= options[:netmask] %>'
@@ -0,0 +1,11 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ auto eth<%= options[:interface] %>
4
+ iface eth<%= options[:interface] %> inet dhcp
5
+ <% if !options[:use_dhcp_assigned_default_route] %>
6
+ post-up route del default dev $IFACE
7
+ <% else %>
8
+ # needed as some newer distribution do not properly load routes, ubuntu 12.04
9
+ post-up dhclient $IFACE
10
+ <% end %>
11
+ #VAGRANT-END
@@ -0,0 +1,7 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ auto eth<%= options[:interface] %>
4
+ iface eth<%= options[:interface] %> inet static
5
+ address <%= options[:ip] %>
6
+ netmask <%= options[:netmask] %>
7
+ #VAGRANT-END
@@ -0,0 +1,6 @@
1
+ #VAGRANT-BEGIN
2
+ # The contents below are automatically generated by Vagrant. Do not modify.
3
+ BOOTPROTO=dhcp
4
+ ONBOOT=yes
5
+ DEVICE=p7p<%= options[:interface] %>
6
+ #VAGRANT-END