bebox 0.0.1 → 0.1.0

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 (245) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -8
  3. data/README.md +33 -30
  4. data/bebox.gemspec +1 -2
  5. data/bin/bebox +1 -2
  6. data/lib/bebox/cli.rb +0 -5
  7. data/lib/bebox/commands/commands_helper.rb +3 -1
  8. data/lib/bebox/commands/environment_commands.rb +26 -29
  9. data/lib/bebox/commands/general_commands.rb +0 -1
  10. data/lib/bebox/commands/node_commands.rb +44 -48
  11. data/lib/bebox/commands/prepare_commands.rb +25 -32
  12. data/lib/bebox/commands/profile_commands.rb +56 -0
  13. data/lib/bebox/commands/project_commands.rb +23 -29
  14. data/lib/bebox/commands/provision_commands.rb +18 -120
  15. data/lib/bebox/commands/role_commands.rb +83 -0
  16. data/lib/bebox/environment.rb +4 -10
  17. data/lib/bebox/files_helper.rb +37 -0
  18. data/lib/bebox/logger.rb +0 -1
  19. data/lib/bebox/node.rb +9 -122
  20. data/lib/bebox/profile.rb +5 -16
  21. data/lib/bebox/project.rb +14 -38
  22. data/lib/bebox/provision.rb +21 -36
  23. data/lib/bebox/role.rb +2 -12
  24. data/lib/bebox/vagrant_helper.rb +96 -0
  25. data/lib/bebox/version.rb +1 -1
  26. data/lib/bebox/wizards/environment_wizard.rb +4 -20
  27. data/lib/bebox/wizards/node_wizard.rb +17 -47
  28. data/lib/bebox/wizards/profile_wizard.rb +8 -26
  29. data/lib/bebox/wizards/project_wizard.rb +42 -72
  30. data/lib/bebox/wizards/provision_wizard.rb +35 -51
  31. data/lib/bebox/wizards/role_wizard.rb +9 -29
  32. data/lib/bebox/wizards/wizards_helper.rb +41 -0
  33. data/lib/bebox.rb +30 -2
  34. data/lib/templates/project/config/deploy/steps/step-0.erb +13 -0
  35. data/lib/templates/project/config/deploy/steps/step-1.erb +0 -0
  36. data/lib/templates/project/config/deploy/steps/step-2.erb +0 -0
  37. data/lib/templates/project/config/deploy/steps/step-3.erb +0 -0
  38. data/lib/templates/project/config/deploy.erb +3 -0
  39. data/spec/fixtures/config/deploy/steps/step-0.test +13 -0
  40. data/spec/fixtures/config/deploy/steps/step-1.test +0 -0
  41. data/spec/fixtures/config/deploy/steps/step-2.test +0 -0
  42. data/spec/fixtures/config/deploy/steps/step-3.test +0 -0
  43. data/spec/fixtures/config/deploy.test +3 -0
  44. data/spec/ordered_phases_spec.rb +6 -4
  45. data/spec/pre_prepare_spec.rb +8 -6
  46. data/spec/profile_spec.rb +9 -5
  47. data/spec/project_spec.rb +9 -2
  48. data/spec/puppet_spec_helper.rb +1 -1
  49. data/spec/role_spec.rb +9 -5
  50. data/spec/spec_helper.rb +5 -0
  51. metadata +17 -212
  52. data/lib/templates/puppet/step-0/modules/rbenv/AUTHORS +0 -11
  53. data/lib/templates/puppet/step-0/modules/rbenv/CHANGELOG.md +0 -70
  54. data/lib/templates/puppet/step-0/modules/rbenv/Gemfile +0 -8
  55. data/lib/templates/puppet/step-0/modules/rbenv/Gemfile.lock +0 -28
  56. data/lib/templates/puppet/step-0/modules/rbenv/Modulefile +0 -7
  57. data/lib/templates/puppet/step-0/modules/rbenv/README.md +0 -173
  58. data/lib/templates/puppet/step-0/modules/rbenv/Rakefile +0 -22
  59. data/lib/templates/puppet/step-0/modules/rbenv/TODO +0 -10
  60. data/lib/templates/puppet/step-0/modules/rbenv/bin/autospec +0 -16
  61. data/lib/templates/puppet/step-0/modules/rbenv/bin/facter +0 -16
  62. data/lib/templates/puppet/step-0/modules/rbenv/bin/filebucket +0 -16
  63. data/lib/templates/puppet/step-0/modules/rbenv/bin/hiera +0 -16
  64. data/lib/templates/puppet/step-0/modules/rbenv/bin/htmldiff +0 -16
  65. data/lib/templates/puppet/step-0/modules/rbenv/bin/ldiff +0 -16
  66. data/lib/templates/puppet/step-0/modules/rbenv/bin/pi +0 -16
  67. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet +0 -16
  68. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-lint +0 -16
  69. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-module +0 -16
  70. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetca +0 -16
  71. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetd +0 -16
  72. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetdoc +0 -16
  73. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetmasterd +0 -16
  74. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetqd +0 -16
  75. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetrun +0 -16
  76. data/lib/templates/puppet/step-0/modules/rbenv/bin/rake +0 -16
  77. data/lib/templates/puppet/step-0/modules/rbenv/bin/ralsh +0 -16
  78. data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec +0 -16
  79. data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec-puppet-init +0 -16
  80. data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/provider/rbenvgem/default.rb +0 -50
  81. data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/type/rbenvgem.rb +0 -62
  82. data/lib/templates/puppet/step-0/modules/rbenv/manifests/bundle.pp +0 -36
  83. data/lib/templates/puppet/step-0/modules/rbenv/manifests/client.pp +0 -48
  84. data/lib/templates/puppet/step-0/modules/rbenv/manifests/compile.pp +0 -102
  85. data/lib/templates/puppet/step-0/modules/rbenv/manifests/definition.pp +0 -31
  86. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/centos.pp +0 -25
  87. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/suse.pp +0 -28
  88. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/ubuntu.pp +0 -17
  89. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies.pp +0 -8
  90. data/lib/templates/puppet/step-0/modules/rbenv/manifests/gem.pp +0 -29
  91. data/lib/templates/puppet/step-0/modules/rbenv/manifests/install.pp +0 -55
  92. data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rbenvvars.pp +0 -16
  93. data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rubybuild.pp +0 -16
  94. data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin.pp +0 -40
  95. data/lib/templates/puppet/step-0/modules/rbenv/metadata.json +0 -109
  96. data/lib/templates/puppet/step-0/modules/rbenv/templates/Gemfile.erb +0 -5
  97. data/lib/templates/puppet/step-0/modules/rbenv/templates/dot.rbenvrc.erb +0 -8
  98. data/lib/templates/puppet/step-0/modules/stdlib/CHANGELOG.md +0 -418
  99. data/lib/templates/puppet/step-0/modules/stdlib/CONTRIBUTING.md +0 -65
  100. data/lib/templates/puppet/step-0/modules/stdlib/Gemfile +0 -33
  101. data/lib/templates/puppet/step-0/modules/stdlib/Gemfile.lock +0 -166
  102. data/lib/templates/puppet/step-0/modules/stdlib/LICENSE +0 -19
  103. data/lib/templates/puppet/step-0/modules/stdlib/Modulefile +0 -11
  104. data/lib/templates/puppet/step-0/modules/stdlib/README.markdown +0 -1304
  105. data/lib/templates/puppet/step-0/modules/stdlib/README_DEVELOPER.markdown +0 -35
  106. data/lib/templates/puppet/step-0/modules/stdlib/README_SPECS.markdown +0 -7
  107. data/lib/templates/puppet/step-0/modules/stdlib/RELEASE_PROCESS.markdown +0 -24
  108. data/lib/templates/puppet/step-0/modules/stdlib/Rakefile +0 -18
  109. data/lib/templates/puppet/step-0/modules/stdlib/checksums.json +0 -349
  110. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/facter_dot_d.rb +0 -202
  111. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/pe_version.rb +0 -53
  112. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/puppet_vardir.rb +0 -26
  113. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/root_home.rb +0 -32
  114. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/util/puppet_settings.rb +0 -21
  115. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/abs.rb +0 -36
  116. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/any2array.rb +0 -33
  117. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/base64.rb +0 -37
  118. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/bool2num.rb +0 -49
  119. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/capitalize.rb +0 -34
  120. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chomp.rb +0 -35
  121. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chop.rb +0 -37
  122. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/concat.rb +0 -41
  123. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/count.rb +0 -22
  124. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/deep_merge.rb +0 -44
  125. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb +0 -35
  126. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete.rb +0 -46
  127. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +0 -49
  128. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_undef_values.rb +0 -34
  129. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_values.rb +0 -26
  130. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/difference.rb +0 -36
  131. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/dirname.rb +0 -15
  132. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/downcase.rb +0 -33
  133. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/empty.rb +0 -28
  134. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb +0 -35
  135. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb +0 -45
  136. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/flatten.rb +0 -33
  137. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/floor.rb +0 -25
  138. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/fqdn_rotate.rb +0 -46
  139. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/get_module_path.rb +0 -17
  140. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getparam.rb +0 -35
  141. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getvar.rb +0 -26
  142. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/grep.rb +0 -33
  143. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_interface_with.rb +0 -52
  144. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_address.rb +0 -25
  145. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_network.rb +0 -25
  146. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_key.rb +0 -28
  147. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/hash.rb +0 -41
  148. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/intersection.rb +0 -34
  149. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_array.rb +0 -22
  150. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_bool.rb +0 -22
  151. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_domain_name.rb +0 -50
  152. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_float.rb +0 -30
  153. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb +0 -26
  154. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_hash.rb +0 -22
  155. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_integer.rb +0 -45
  156. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_ip_address.rb +0 -32
  157. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_mac_address.rb +0 -27
  158. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_numeric.rb +0 -75
  159. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_string.rb +0 -26
  160. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join.rb +0 -41
  161. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +0 -47
  162. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/keys.rb +0 -26
  163. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/loadyaml.rb +0 -20
  164. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/lstrip.rb +0 -33
  165. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/max.rb +0 -21
  166. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/member.rb +0 -44
  167. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/merge.rb +0 -34
  168. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/min.rb +0 -21
  169. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/num2bool.rb +0 -43
  170. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +0 -24
  171. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parseyaml.rb +0 -24
  172. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick.rb +0 -29
  173. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick_default.rb +0 -35
  174. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/prefix.rb +0 -45
  175. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/range.rb +0 -88
  176. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reject.rb +0 -31
  177. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reverse.rb +0 -28
  178. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/rstrip.rb +0 -32
  179. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/shuffle.rb +0 -46
  180. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/size.rb +0 -48
  181. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/sort.rb +0 -27
  182. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/squeeze.rb +0 -36
  183. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2bool.rb +0 -46
  184. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2saltedsha512.rb +0 -32
  185. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strftime.rb +0 -107
  186. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strip.rb +0 -39
  187. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/suffix.rb +0 -45
  188. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/swapcase.rb +0 -39
  189. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/time.rb +0 -49
  190. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/to_bytes.rb +0 -28
  191. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/type.rb +0 -50
  192. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/union.rb +0 -34
  193. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/unique.rb +0 -51
  194. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/upcase.rb +0 -41
  195. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/uriescape.rb +0 -35
  196. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +0 -56
  197. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_array.rb +0 -33
  198. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_augeas.rb +0 -81
  199. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_bool.rb +0 -34
  200. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_cmd.rb +0 -48
  201. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_hash.rb +0 -33
  202. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv4_address.rb +0 -48
  203. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv6_address.rb +0 -49
  204. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_re.rb +0 -40
  205. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb +0 -71
  206. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_string.rb +0 -33
  207. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values.rb +0 -39
  208. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values_at.rb +0 -98
  209. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/zip.rb +0 -65
  210. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/provider/file_line/ruby.rb +0 -83
  211. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/anchor.rb +0 -46
  212. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/file_line.rb +0 -79
  213. data/lib/templates/puppet/step-0/modules/stdlib/manifests/init.pp +0 -20
  214. data/lib/templates/puppet/step-0/modules/stdlib/manifests/stages.pp +0 -43
  215. data/lib/templates/puppet/step-0/modules/stdlib/metadata.json +0 -111
  216. data/lib/templates/puppet/step-0/modules/sudo/.fixtures.yml +0 -5
  217. data/lib/templates/puppet/step-0/modules/sudo/.gemfile +0 -14
  218. data/lib/templates/puppet/step-0/modules/sudo/.gemfile.lock +0 -43
  219. data/lib/templates/puppet/step-0/modules/sudo/.travis.yml +0 -34
  220. data/lib/templates/puppet/step-0/modules/sudo/LICENSE +0 -13
  221. data/lib/templates/puppet/step-0/modules/sudo/Modulefile +0 -9
  222. data/lib/templates/puppet/step-0/modules/sudo/README.md +0 -171
  223. data/lib/templates/puppet/step-0/modules/sudo/Rakefile +0 -1
  224. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.aix +0 -90
  225. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.archlinux +0 -90
  226. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.deb +0 -90
  227. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.freebsd +0 -98
  228. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.omnios +0 -90
  229. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel5 +0 -97
  230. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel6 +0 -115
  231. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.solaris +0 -90
  232. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.suse +0 -81
  233. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.ubuntu +0 -30
  234. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.wheezy +0 -17
  235. data/lib/templates/puppet/step-0/modules/sudo/lib/augeas/lenses/fixedsudoers.aug +0 -520
  236. data/lib/templates/puppet/step-0/modules/sudo/manifests/allow.pp +0 -76
  237. data/lib/templates/puppet/step-0/modules/sudo/manifests/conf.pp +0 -105
  238. data/lib/templates/puppet/step-0/modules/sudo/manifests/configs.pp +0 -24
  239. data/lib/templates/puppet/step-0/modules/sudo/manifests/init.pp +0 -151
  240. data/lib/templates/puppet/step-0/modules/sudo/manifests/package/aix.pp +0 -46
  241. data/lib/templates/puppet/step-0/modules/sudo/manifests/package/solaris.pp +0 -60
  242. data/lib/templates/puppet/step-0/modules/sudo/manifests/package.pp +0 -61
  243. data/lib/templates/puppet/step-0/modules/sudo/manifests/params.pp +0 -127
  244. data/lib/templates/puppet/step-0/modules/sudo/metadata.json +0 -59
  245. data/lib/templates/puppet/step-0/modules/sudo/templates/users_groups.erb +0 -9
@@ -1,10 +1,8 @@
1
- require 'bebox/project'
2
- require 'net/http'
3
- require 'uri'
4
1
 
5
2
  module Bebox
6
3
  class ProjectWizard
7
4
  include Bebox::Logger
5
+ include Bebox::WizardsHelper
8
6
  # Bebox boxes directory
9
7
  BEBOX_BOXES_PATH = '~/.bebox/boxes'
10
8
 
@@ -16,24 +14,9 @@ module Bebox
16
14
  bebox_boxes_setup
17
15
  # Asks to choose an existing box
18
16
  current_box = choose_box(get_existing_boxes)
19
- # If choose to download/select new box
20
- if current_box.nil?
21
- # Keep asking for valid uri or overwriting until confirmation
22
- confirm = false
23
- begin
24
- # Asks vagrant box location to user if not choose an existing box
25
- valid_box_uri = ask_uri
26
- # Confirm if the box already exist
27
- confirm = box_exists?(valid_box_uri) ? confirm_overwrite? : true
28
- end while !confirm
29
- # Setup the box with the valid uri
30
- set_box(valid_box_uri)
31
- else
32
- valid_box_uri = current_box
33
- end
34
- vagrant_box_base = "#{BEBOX_BOXES_PATH}/#{valid_box_uri}"
17
+ vagrant_box_base = "#{BEBOX_BOXES_PATH}/#{get_valid_box_uri(current_box)}"
35
18
  # Asks user to choose vagrant box provider
36
- vagrant_box_provider = ask_box_provider
19
+ vagrant_box_provider = choose_option(%w{virtualbox vmware}, 'Choose the vagrant box provider')
37
20
  # Set default environments
38
21
  default_environments = %w{vagrant staging production}
39
22
  # Project creation
@@ -42,19 +25,26 @@ module Bebox
42
25
  ok "Project '#{project_name}' created!.\nMake: cd #{project_name}\nNow you can add new environments or new nodes to your project.\nSee bebox help."
43
26
  end
44
27
 
28
+ # If choose to download/select new box get a valid uri
29
+ def get_valid_box_uri(current_box)
30
+ return (valid_box_uri = current_box) unless current_box.nil?
31
+ # Keep asking for valid uri or overwriting until confirmation
32
+ confirm = false
33
+ begin
34
+ # Asks vagrant box location to user if not choose an existing box
35
+ valid_box_uri = ask_uri
36
+ # Confirm if the box already exist
37
+ confirm = box_exists?(valid_box_uri) ? confirm_action?('There is already a box with that name, do you want to overwrite it?') : true
38
+ end while !confirm
39
+ # Setup the box with the valid uri
40
+ set_box(valid_box_uri)
41
+ end
42
+
45
43
  # Check if there's an existing project in that dir
46
44
  def project_exists?(parent_path, project_name)
47
45
  Dir.exists?("#{parent_path}/#{project_name}")
48
46
  end
49
47
 
50
- # Menu to choose vagrant box provider
51
- def ask_box_provider
52
- choose do |menu|
53
- menu.header = title('Choose the vagrant box provider')
54
- menu.choices('virtualbox', 'vmware')
55
- end
56
- end
57
-
58
48
  # Setup the bebox boxes directory
59
49
  def bebox_boxes_setup
60
50
  # Create user project directories
@@ -65,48 +55,40 @@ module Bebox
65
55
 
66
56
  # Asks vagrant box location to user until is valid
67
57
  def ask_uri
68
- vbox_uri = ask(highline_quest('Write the URI (http, local_path) for the vagrant box to be used in the project:')) do |q|
69
- q.default = 'http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box'
70
- end
58
+ vbox_uri = write_input('Write the URI (http, local_path) for the vagrant box to be used in the project:', 'http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box')
71
59
  # If valid return uri if not keep asking for uri
72
60
  uri_valid?(vbox_uri) ? (return vbox_uri) : ask_uri
73
61
  end
74
62
 
75
63
  # Setup the box in the bebox boxes directory
76
64
  def set_box(box_uri)
65
+ require 'uri'
77
66
  uri = URI.parse(box_uri)
78
67
  if uri.scheme == ('http' || 'https')
68
+ info 'Downloading box ...'
79
69
  download_box(uri)
80
70
  else
81
- file_name = uri.path.split('/').last
82
- `ln -fs #{uri.path} #{BEBOX_BOXES_PATH}/#{file_name}`
71
+ `ln -fs #{uri.path} #{BEBOX_BOXES_PATH}/#{uri.path.split('/').last}`
83
72
  end
84
73
  end
85
74
 
86
75
  # Validate uri download or local box existence
87
76
  def uri_valid?(vbox_uri)
77
+ require 'uri'
88
78
  uri = URI.parse(vbox_uri)
89
- if uri.scheme == ('http' || 'https')
90
- request = Net::HTTP.new uri.host
91
- response = request.request_head uri.path
92
- if response.code.to_i == 302
93
- uri = URI.parse(response['location'])
94
- request = Net::HTTP.new uri.host
95
- response = request.request_head uri.path
96
- end
97
- ( response.code.to_i == 200) ? (return true) : error('Download link not valid!.')
98
- else
99
- File.file?(uri.path) ? (return true) : error('File path not exist!.')
100
- end
79
+ %w{http https}.include?(uri.scheme) ? http_uri_valid?(uri) : file_uri_valid?(uri)
101
80
  end
102
81
 
103
- # Ask for confirmation of overwrite a box
104
- def confirm_overwrite?
105
- quest 'There is already a box with that name, do you want to overwrite it?'
106
- response = ask(highline_quest('(y/n)')) do |q|
107
- q.default = 'n'
108
- end
109
- return response == 'y' ? true : false
82
+ def http_uri_valid?(uri)
83
+ require 'net/http'
84
+ request = Net::HTTP.new uri.host
85
+ response = request.request_head uri.path
86
+ error('Redirections not supported.') if response.code.to_i == 302
87
+ ( response.code.to_i == 200) ? (return true) : error('Download link not valid!.')
88
+ end
89
+
90
+ def file_uri_valid?(uri)
91
+ File.file?(uri.path) ? (return true) : error('File path not exist!.')
110
92
  end
111
93
 
112
94
  # Check if a box with the same name already exist
@@ -121,41 +103,29 @@ module Bebox
121
103
  # Converts the bebox boxes directory to an absolute pathname
122
104
  expanded_directory = File.expand_path("#{BEBOX_BOXES_PATH}")
123
105
  # Get an array of bebox boxes paths
124
- Dir["#{expanded_directory}/*"].reject {|f| File.directory? f}
106
+ boxes = Dir["#{expanded_directory}/*"].reject {|f| File.directory? f}
107
+ boxes.map{|box| box.split('/').last}
125
108
  end
126
109
 
127
110
  # Asks to choose an existing box in the bebox boxes directory
128
111
  def choose_box(boxes)
129
112
  # Menu to choose vagrant box provider
130
113
  other_box_message = 'Download/Select a new box'
131
- current_box = choose do |menu|
132
- menu.header = title('Choose an existing box or download/select a new box')
133
- boxes.each do |box|
134
- menu.choice(box.split('/').last)
135
- end
136
- menu.choice(other_box_message)
137
- end
114
+ boxes << other_box_message
115
+ current_box = choose_option(boxes, 'Choose an existing box or download/select a new box')
138
116
  current_box = (current_box == other_box_message) ? nil : current_box
139
117
  end
140
118
 
141
119
  # Download a box by the specified uri
142
120
  def download_box(uri)
143
- require 'progressbar'
144
- info 'Downloading box ...'
145
121
  @counter = 0
146
- # Manage redirections
147
- request = Net::HTTP.new uri.host
148
- response = request.request_head uri.path
149
- uri = URI.parse(response['location']) if response.code.to_i == 302
150
-
151
- # Set url variables
152
122
  url = uri.path
153
- url_base = uri.host
154
123
  file_name = uri.path.split('/').last
155
- expanded_directory = File.expand_path("#{BEBOX_BOXES_PATH}")
156
-
124
+ expanded_directory = File.expand_path(BEBOX_BOXES_PATH)
157
125
  # Download file to bebox boxes tmp
158
- Net::HTTP.start(url_base) do |http|
126
+ require 'net/http'
127
+ require 'uri'
128
+ Net::HTTP.start(uri.host) do |http|
159
129
  response = http.request_head(URI.escape(url))
160
130
  ProgressBar
161
131
  pbar = ProgressBar.new('file name:', response['content-length'].to_i)
@@ -1,53 +1,48 @@
1
- require 'bebox/provision'
2
- require 'bebox/node'
3
1
 
4
2
  module Bebox
5
3
  class ProvisionWizard
6
4
  include Bebox::Logger
5
+ include Bebox::WizardsHelper
7
6
  # Apply a step for the nodes in a environment
8
7
  def apply_step(project_root, environment, step)
9
8
  # Check if environment has configured the ssh keys
10
- if Bebox::Environment.check_environment_access(project_root, environment)
11
- # Check already in step nodes
12
- nodes_to_step = check_nodes_to_step(project_root, environment, step)
13
- # Output the nodes that are ready for provisioning step-N
14
- if nodes_to_step.count > 0
15
- title "Provisioning #{step} in nodes:"
16
- nodes_to_step.each{|node| msg(node.hostname)}
17
- linebreak
18
- # Apply the nodes provisioning for step-N
19
- nodes_to_step.each do |node|
20
- title "Applying #{step} in node #{node.hostname}:"
21
- role = Bebox::Provision.role_from_node(project_root, step, node.hostname)
22
- profiles = Bebox::Provision.profiles_from_role(project_root, role) unless role.nil?
23
- # Before apply generate the Puppetfile with modules from all associated profiles
24
- Bebox::Provision.generate_puppetfile(project_root, step, profiles) unless profiles.nil?
25
- # Before apply generate the roles and profiles modules structure for puppet step
26
- Bebox::Provision.generate_roles_and_profiles(project_root, step, role, profiles)
27
- provision = Bebox::Provision.new(project_root, environment, node, step)
28
- provision.apply.success? ? (ok "Node '#{node.hostname}' provisioned to #{step}.") : (error "An error ocurred in the provision of #{step} for node '#{node.hostname}'")
29
- end
30
- else
31
- warn "There are no nodes for provision in #{step}. No changes were made."
32
- end
33
- else
34
- warn "Please add a ssh key pair (id_rsa, id_rsa.pub) in config/keys/environments/#{environment} to do this step."
9
+ (return warn "Please add a ssh key pair (id_rsa, id_rsa.pub) in config/keys/environments/#{environment} to do this step.") unless Bebox::Environment.check_environment_access(project_root, environment)
10
+ nodes_to_step = Bebox::Node.nodes_in_environment(project_root, environment, previous_checkpoint(step))
11
+ # Check if there are nodes for provisioning step-N
12
+ (return warn "There are no nodes for provision in #{step}. No changes were made.") unless nodes_to_step.count > 0
13
+ nodes_for_provisioning(nodes_to_step, step)
14
+ # Apply the nodes provisioning for step-N
15
+ in_step_nodes = Bebox::Node.list(project_root, environment, "steps/#{step}")
16
+ nodes_to_step.each do |node|
17
+ next unless check_node_to_step(node, in_step_nodes, step)
18
+ provision_step_in_node(project_root, environment, step, in_step_nodes, node)
35
19
  end
36
20
  end
37
21
 
38
- # Check the nodes already in step and ask confirmation to re-do-it
39
- def check_nodes_to_step(project_root, environment, step)
40
- nodes_to_step = []
41
- nodes = Bebox::Node.nodes_in_environment(project_root, environment, previous_checkpoint(step))
42
- in_step_nodes = Bebox::Node.list(project_root, environment, "steps/#{step}")
43
- nodes.each do |node|
44
- if in_step_nodes.include?(node.hostname)
45
- nodes_to_step << node if confirm_node_step?(node, step)
46
- else
47
- nodes_to_step << node
48
- end
49
- end
50
- nodes_to_step
22
+ def provision_step_in_node(project_root, environment, step, in_step_nodes, node)
23
+ title "Provisioning #{step} in node #{node.hostname}:"
24
+ role = Bebox::Provision.role_from_node(project_root, step, node.hostname)
25
+ profiles = Bebox::Provision.profiles_from_role(project_root, role) unless role.nil?
26
+ # Before apply generate the Puppetfile with modules from all associated profiles
27
+ Bebox::Provision.generate_puppetfile(project_root, step, profiles) unless profiles.nil?
28
+ # Before apply generate the roles and profiles modules structure for puppet step
29
+ Bebox::Provision.generate_roles_and_profiles(project_root, step, role, profiles)
30
+ provision = Bebox::Provision.new(project_root, environment, node, step)
31
+ provision.apply.success? ? (ok "Node '#{node.hostname}' provisioned to #{step}.") : (error "An error ocurred in the provision of #{step} for node '#{node.hostname}'")
32
+ end
33
+
34
+ def check_node_to_step(node, in_step_nodes, step)
35
+ return true unless in_step_nodes.include?(node.hostname)
36
+ message = "The node '#{node.hostname}' was already provisioned in #{step}"
37
+ message += " (start: #{node.checkpoint_parameter_from_file('steps/' + step, 'started_at')} - end: #{node.checkpoint_parameter_from_file('steps/' + step, 'finished_at')})."
38
+ message += "\nDo you want to re-provision it?"
39
+ confirm_action?(message)
40
+ end
41
+
42
+ def nodes_for_provisioning(nodes, step)
43
+ title "Nodes for provisioning #{step}:"
44
+ nodes.each{|node| msg(node.hostname)}
45
+ linebreak
51
46
  end
52
47
 
53
48
  # Obtain the previous checkpoint (step/phase) for a node
@@ -65,16 +60,5 @@ module Bebox
65
60
  'steps/step-2'
66
61
  end
67
62
  end
68
-
69
- # Ask for confirmation of node step
70
- def confirm_node_step?(node, step)
71
- node_type = "steps/#{step}"
72
- checkpoint_status = "(start: #{node.checkpoint_parameter_from_file(node_type, 'started_at')} - end: #{node.checkpoint_parameter_from_file(node_type, 'finished_at')})"
73
- quest "The node '#{node.hostname}' was already provisioned in #{step} #{checkpoint_status}.\nDo you want to re-provision it?"
74
- response = ask(highline_quest('(y/n)')) do |q|
75
- q.default = "n"
76
- end
77
- return response == 'y' ? true : false
78
- end
79
63
  end
80
64
  end
@@ -1,8 +1,9 @@
1
- require 'bebox/role'
2
1
 
3
2
  module Bebox
4
3
  class RoleWizard
5
4
  include Bebox::Logger
5
+ include Bebox::WizardsHelper
6
+
6
7
  # Create a new role
7
8
  def create_new_role(project_root, role_name)
8
9
  # Check if the role name is valid
@@ -12,7 +13,7 @@ module Bebox
12
13
  \n* Underscores
13
14
  \n* Must begin with an Lowercase letter
14
15
  \n* Can not be any of: #{Bebox::RESERVED_WORDS.join(', ')}
15
- \n\nNo changes were made." unless Bebox::Role.valid_name?(role_name)
16
+ \n\nNo changes were made." unless valid_puppet_class_name?(role_name)
16
17
  # Check if the role exist
17
18
  return error("The '#{role_name}' role already exist. No changes were made.") if role_exists?(project_root, role_name)
18
19
  # Role creation
@@ -27,12 +28,12 @@ module Bebox
27
28
  roles = Bebox::Role.list(project_root)
28
29
  # Get a role if exist.
29
30
  if roles.count > 0
30
- role_name = choose_role(roles, 'Choose the role to remove:')
31
+ role_name = choose_option(roles, 'Choose the role to remove:')
31
32
  else
32
33
  return error "There are no roles to remove. No changes were made."
33
34
  end
34
35
  # Ask for deletion confirmation
35
- return warn('No changes were made.') unless confirm_role_deletion?
36
+ return warn('No changes were made.') unless confirm_action?('Are you sure that you want to delete the role?')
36
37
  # Role deletion
37
38
  role = Bebox::Role.new(role_name, project_root)
38
39
  role.remove
@@ -43,9 +44,8 @@ module Bebox
43
44
  def add_profile(project_root)
44
45
  roles = Bebox::Role.list(project_root)
45
46
  profiles = Bebox::Profile.list(project_root)
46
- role = choose_role(roles, 'Choose an existing role:')
47
- require 'bebox/wizards/profile_wizard'
48
- profile = Bebox::ProfileWizard.new.choose_profile(profiles, 'Choose the profile to add:')
47
+ role = choose_option(roles, 'Choose an existing role:')
48
+ profile = choose_option(profiles, 'Choose the profile to add:')
49
49
  if Bebox::Role.profile_in_role?(project_root, role, profile)
50
50
  return warn("Profile '#{profile}' already in the Role '#{role}'. No changes were made.")
51
51
  else
@@ -58,9 +58,8 @@ module Bebox
58
58
  def remove_profile(project_root)
59
59
  roles = Bebox::Role.list(project_root)
60
60
  profiles = Bebox::Profile.list(project_root)
61
- role = choose_role(roles, 'Choose an existing role:')
62
- require 'bebox/wizards/profile_wizard'
63
- profile = Bebox::ProfileWizard.new.choose_profile(profiles, 'Choose the profile to remove:')
61
+ role = choose_option(roles, 'Choose an existing role:')
62
+ profile = choose_option(profiles, 'Choose the profile to remove:')
64
63
  if Bebox::Role.profile_in_role?(project_root, role, profile)
65
64
  Bebox::Role.remove_profile(project_root, role, profile)
66
65
  return ok("Profile '#{profile}' removed from Role '#{role}'.")
@@ -70,28 +69,9 @@ module Bebox
70
69
 
71
70
  end
72
71
 
73
- # Asks to choose an existing role
74
- def choose_role(roles, question)
75
- choose do |menu|
76
- menu.header = title(question)
77
- roles.each do |box|
78
- menu.choice(box.split('/').last)
79
- end
80
- end
81
- end
82
-
83
72
  # Check if there's an existing role in the project
84
73
  def role_exists?(project_root, role_name)
85
74
  Dir.exists?("#{project_root}/puppet/roles/#{role_name}")
86
75
  end
87
-
88
- # Ask for confirmation of role deletion
89
- def confirm_role_deletion?
90
- quest 'Are you sure that you want to delete the role?'
91
- response = ask(highline_quest('(y/n)')) do |q|
92
- q.default = "n"
93
- end
94
- return response == 'y' ? true : false
95
- end
96
76
  end
97
77
  end
@@ -0,0 +1,41 @@
1
+ module Bebox
2
+ module WizardsHelper
3
+ # Ask for confirmation of any action
4
+ def confirm_action?(message)
5
+ require 'highline/import'
6
+ quest message
7
+ response = ask(highline_quest('(y/n)')) do |q|
8
+ q.default = "n"
9
+ end
10
+ return response == 'y' ? true : false
11
+ end
12
+
13
+ # Ask to write some input with validation
14
+ def write_input(message, default=nil, validator=nil, not_valid_message=nil)
15
+ require 'highline/import'
16
+ response = ask(highline_quest(message)) do |q|
17
+ q.default = default if default
18
+ q.validate = /\.(.*)/ if validator
19
+ q.responses[:not_valid] = highline_warn(not_valid_message) if not_valid_message
20
+ end
21
+ return response
22
+ end
23
+
24
+ # Asks to choose an option
25
+ def choose_option(options, question)
26
+ require 'highline/import'
27
+ choose do |menu|
28
+ menu.header = title(question)
29
+ options.each do |option|
30
+ menu.choice(option)
31
+ end
32
+ end
33
+ end
34
+
35
+ # Check if the puppet resource has a valid name
36
+ def valid_puppet_class_name?(name)
37
+ valid_name = (name =~ /\A[a-z][a-z0-9_]*\Z/).nil? ? false : true
38
+ valid_name && !Bebox::RESERVED_WORDS.include?(name)
39
+ end
40
+ end
41
+ end
data/lib/bebox.rb CHANGED
@@ -1,2 +1,30 @@
1
- # Add requires for other files you add to your project here, so
2
- # you just need to require this one file in your bin file
1
+ require 'progressbar'
2
+ require 'colorize'
3
+ require 'gli'
4
+ require 'bebox/logger'
5
+ require 'bebox/files_helper'
6
+ require 'bebox/vagrant_helper'
7
+ require 'bebox/wizards/wizards_helper'
8
+ require 'bebox/commands/commands_helper'
9
+ require 'bebox/commands/general_commands'
10
+ require 'bebox/commands/project_commands'
11
+ require 'bebox/commands/environment_commands'
12
+ require 'bebox/commands/node_commands'
13
+ require 'bebox/commands/prepare_commands'
14
+ require 'bebox/commands/role_commands'
15
+ require 'bebox/commands/profile_commands'
16
+ require 'bebox/commands/provision_commands'
17
+ require 'bebox/wizards/project_wizard'
18
+ require 'bebox/wizards/environment_wizard'
19
+ require 'bebox/wizards/node_wizard'
20
+ require 'bebox/wizards/role_wizard'
21
+ require 'bebox/wizards/profile_wizard'
22
+ require 'bebox/wizards/provision_wizard'
23
+ require 'bebox/cli'
24
+ require 'bebox/version'
25
+ require 'bebox/project'
26
+ require 'bebox/environment'
27
+ require 'bebox/node'
28
+ require 'bebox/role'
29
+ require 'bebox/profile'
30
+ require 'bebox/provision'
@@ -0,0 +1,13 @@
1
+ before 'puppet:bundle_modules', 'puppet:download_modules'
2
+
3
+ namespace :puppet do
4
+ task :download_modules do
5
+ modules_path = "#{current_path}/steps/#{step_dir}/modules"
6
+ # Download stdlib module
7
+ run "cd #{modules_path} && wget -qO- https://forgeapi.puppetlabs.com/v3/files/puppetlabs-stdlib-4.2.2.tar.gz | tar xvz && mv puppetlabs-stdlib-4.2.2 stdlib"
8
+ # Download rbenv module
9
+ run "cd #{modules_path} && wget -qO- https://forgeapi.puppetlabs.com/v3/files/alup-rbenv-1.2.0.tar.gz | tar xvz && mv alup-rbenv-1.2.0 rbenv"
10
+ # Download sudo module
11
+ run "cd #{modules_path} && wget -qO- https://forgeapi.puppetlabs.com/v3/files/saz-sudo-3.0.6.tar.gz | tar xvz && mv saz-sudo-3.0.6 sudo"
12
+ end
13
+ end
@@ -24,6 +24,9 @@ def custom_facter_variables
24
24
  facter_variables.map{|facter_key, facter_value| "FACTER_#{facter_key}=#{facter_value}"}.join(' ')
25
25
  end
26
26
 
27
+ # load specific task from each step
28
+ load "config/deploy/steps/#{phase}" if phase =~ /step/
29
+
27
30
  namespace :deploy do
28
31
 
29
32
  desc 'Installs tools and required dependencies in the remote machine'
@@ -0,0 +1,13 @@
1
+ before 'puppet:bundle_modules', 'puppet:download_modules'
2
+
3
+ namespace :puppet do
4
+ task :download_modules do
5
+ modules_path = "#{current_path}/steps/#{step_dir}/modules"
6
+ # Download stdlib module
7
+ run "cd #{modules_path} && wget -qO- https://forgeapi.puppetlabs.com/v3/files/puppetlabs-stdlib-4.2.2.tar.gz | tar xvz && mv puppetlabs-stdlib-4.2.2 stdlib"
8
+ # Download rbenv module
9
+ run "cd #{modules_path} && wget -qO- https://forgeapi.puppetlabs.com/v3/files/alup-rbenv-1.2.0.tar.gz | tar xvz && mv alup-rbenv-1.2.0 rbenv"
10
+ # Download sudo module
11
+ run "cd #{modules_path} && wget -qO- https://forgeapi.puppetlabs.com/v3/files/saz-sudo-3.0.6.tar.gz | tar xvz && mv saz-sudo-3.0.6 sudo"
12
+ end
13
+ end
File without changes
File without changes
File without changes
@@ -24,6 +24,9 @@ def custom_facter_variables
24
24
  facter_variables.map{|facter_key, facter_value| "FACTER_#{facter_key}=#{facter_value}"}.join(' ')
25
25
  end
26
26
 
27
+ # load specific task from each step
28
+ load "config/deploy/steps/#{phase}" if phase =~ /step/
29
+
27
30
  namespace :deploy do
28
31
 
29
32
  desc 'Installs tools and required dependencies in the remote machine'
@@ -28,16 +28,18 @@ describe 'Test 99: ordered specs' do
28
28
 
29
29
  context '99: project destroy' do
30
30
 
31
+ include Bebox::VagrantHelper
32
+
31
33
  let(:project) { build(:project) }
32
34
  let(:node) { build(:node) }
33
35
 
34
36
  it 'should clean spec files' do
35
37
  # Test if the vagrant was halt
36
- Bebox::Node.halt_vagrant_nodes(node.project_root)
37
- expect(node.vagrant_box_running?).to be(false)
38
+ Bebox::VagrantHelper.halt_vagrant_nodes(node.project_root)
39
+ expect(vagrant_box_running?(node)).to be(false)
38
40
  # Test if the vagrant box was destroyed
39
- node.remove_vagrant_box
40
- expect(node.vagrant_box_exist?).to be(false)
41
+ remove_vagrant_box(node)
42
+ expect(vagrant_box_exist?(node)).to be(false)
41
43
  # Test if the project directory was destroyed
42
44
  project.destroy
43
45
  expect(Dir.exist?("#{project.path}")).to be(false)
@@ -5,6 +5,8 @@ require_relative '../spec/factories/node.rb'
5
5
 
6
6
  describe 'Test 05: Bebox::Node' do
7
7
 
8
+ include Bebox::VagrantHelper
9
+
8
10
  describe 'Pre-prepare nodes' do
9
11
 
10
12
  let(:nodes) { 1.times.map{|index| build(:node, :created, hostname: "node#{index}.server1.test")} }
@@ -15,7 +17,7 @@ describe 'Test 05: Bebox::Node' do
15
17
 
16
18
  context 'pre vagrant prepare' do
17
19
  it 'should generate the Vagrantfile' do
18
- Bebox::Node.generate_vagrantfile(project_root, nodes)
20
+ Bebox::VagrantHelper.generate_vagrantfile(nodes)
19
21
  vagrantfile_content = File.read("#{project_root}/Vagrantfile").gsub(/\s+/, ' ').strip
20
22
  ouput_template = Tilt::ERBTemplate.new('spec/fixtures/node/Vagrantfile.test.erb')
21
23
  vagrantfile_output_content = ouput_template.render(nil, ip_address: nodes.first.ip).gsub(/\s+/, ' ').strip
@@ -44,7 +46,7 @@ describe 'Test 05: Bebox::Node' do
44
46
  end
45
47
 
46
48
  it 'should add the hosts config to hosts file' do
47
- nodes.each{|node| node.add_to_local_hosts}
49
+ nodes.each{|node| add_to_local_hosts(node)}
48
50
  node = nodes.first
49
51
  hosts_content = File.read("#{node.local_hosts_path}/hosts").gsub(/\s+/, ' ').strip
50
52
  expect(hosts_content).to include(*nodes.map{|node| "#{node.ip} #{node.hostname}"})
@@ -54,14 +56,14 @@ describe 'Test 05: Bebox::Node' do
54
56
  describe 'vagrant setup' do
55
57
  it 'should add the node to vagrant' do
56
58
  vagrant_box_names_expected = nodes.map{|node| "#{project_name}-#{node.hostname}"}
57
- nodes.each{|node| node.add_vagrant_node(project_name, vagrant_box_base)}
59
+ nodes.each{|node| add_vagrant_node(project_name, vagrant_box_base, node)}
58
60
  node = nodes.first
59
- expect(node.installed_vagrant_box_names).to include(*vagrant_box_names_expected)
61
+ expect(installed_vagrant_box_names(node)).to include(*vagrant_box_names_expected)
60
62
  end
61
63
 
62
64
  it 'should up the vagrant boxes' do
63
- Bebox::Node.up_vagrant_nodes(project_root)
64
- nodes.each{|node| expect(node.vagrant_box_running?).to eq(true)}
65
+ Bebox::VagrantHelper.up_vagrant_nodes(project_root)
66
+ nodes.each{|node| expect(vagrant_box_running?(node)).to eq(true)}
65
67
  end
66
68
 
67
69
  it 'should connect to vagrant box through ssh' do
data/spec/profile_spec.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  require 'spec_helper'
2
2
  require_relative '../spec/factories/profile.rb'
3
+ require_relative '../lib/bebox/wizards/wizards_helper'
3
4
 
4
5
  describe 'Test 08: Bebox::Profile' do
5
6
 
7
+ # include Wizard helper methods
8
+ include Bebox::WizardsHelper
9
+
6
10
  describe 'Manage profiles' do
7
11
 
8
12
  subject { build(:profile) }
@@ -15,15 +19,15 @@ describe 'Test 08: Bebox::Profile' do
15
19
 
16
20
  it 'should validate the profile name' do
17
21
  # Test not valid reserved words
18
- Bebox::RESERVED_WORDS.each{|reserved_word| expect(Bebox::Profile.valid_name?(reserved_word)).to be (false)}
22
+ Bebox::RESERVED_WORDS.each{|reserved_word| expect(valid_puppet_class_name?(reserved_word)).to be (false)}
19
23
  # Test not valid start by undescore
20
- expect(Bebox::Profile.valid_name?('_profile_0')).to be (false)
24
+ expect(valid_puppet_class_name?('_profile_0')).to be (false)
21
25
  # Test not valid contain Upper letter
22
- expect(Bebox::Profile.valid_name?('Profile_0')).to be (false)
26
+ expect(valid_puppet_class_name?('Profile_0')).to be (false)
23
27
  # Test not valid contain dash character
24
- expect(Bebox::Profile.valid_name?('profile-0')).to be (false)
28
+ expect(valid_puppet_class_name?('profile-0')).to be (false)
25
29
  # Test valid name not contains reserved words, start with letter, contains only downcase letters, numbers and undescores
26
- expect(Bebox::Profile.valid_name?(subject.name)).to be (true)
30
+ expect(valid_puppet_class_name?(subject.name)).to be (true)
27
31
  end
28
32
 
29
33
  it 'should clean the profile path' do
data/spec/project_spec.rb CHANGED
@@ -61,11 +61,18 @@ describe 'Test 01: Bebox::Project' do
61
61
  expect(output_file).to eq(expected_content)
62
62
  end
63
63
 
64
- it 'should generate deploy file' do
65
- subject.generate_deploy_file
64
+ it 'should generate deploy files' do
65
+ subject.generate_deploy_files
66
+ # Generate deploy.rb file
66
67
  config_deploy_content = File.read("#{subject.path}/config/deploy.rb").gsub(/\s+/, ' ').strip
67
68
  config_deploy_output_content = File.read("spec/fixtures/config/deploy.test").gsub(/\s+/, ' ').strip
68
69
  expect(config_deploy_content).to eq(config_deploy_output_content)
70
+ # Generate steps/step-N.rb files
71
+ Bebox::PROVISION_STEPS.each do |step|
72
+ content = File.read("spec/fixtures/config/deploy/steps/#{step}.test")
73
+ output = File.read("#{subject.path}/config/deploy/steps/#{step}.rb")
74
+ expect(output).to eq(content)
75
+ end
69
76
  end
70
77
 
71
78
  it 'should create Gemfile' do