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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -8
- data/README.md +33 -30
- data/bebox.gemspec +1 -2
- data/bin/bebox +1 -2
- data/lib/bebox/cli.rb +0 -5
- data/lib/bebox/commands/commands_helper.rb +3 -1
- data/lib/bebox/commands/environment_commands.rb +26 -29
- data/lib/bebox/commands/general_commands.rb +0 -1
- data/lib/bebox/commands/node_commands.rb +44 -48
- data/lib/bebox/commands/prepare_commands.rb +25 -32
- data/lib/bebox/commands/profile_commands.rb +56 -0
- data/lib/bebox/commands/project_commands.rb +23 -29
- data/lib/bebox/commands/provision_commands.rb +18 -120
- data/lib/bebox/commands/role_commands.rb +83 -0
- data/lib/bebox/environment.rb +4 -10
- data/lib/bebox/files_helper.rb +37 -0
- data/lib/bebox/logger.rb +0 -1
- data/lib/bebox/node.rb +9 -122
- data/lib/bebox/profile.rb +5 -16
- data/lib/bebox/project.rb +14 -38
- data/lib/bebox/provision.rb +21 -36
- data/lib/bebox/role.rb +2 -12
- data/lib/bebox/vagrant_helper.rb +96 -0
- data/lib/bebox/version.rb +1 -1
- data/lib/bebox/wizards/environment_wizard.rb +4 -20
- data/lib/bebox/wizards/node_wizard.rb +17 -47
- data/lib/bebox/wizards/profile_wizard.rb +8 -26
- data/lib/bebox/wizards/project_wizard.rb +42 -72
- data/lib/bebox/wizards/provision_wizard.rb +35 -51
- data/lib/bebox/wizards/role_wizard.rb +9 -29
- data/lib/bebox/wizards/wizards_helper.rb +41 -0
- data/lib/bebox.rb +30 -2
- data/lib/templates/project/config/deploy/steps/step-0.erb +13 -0
- data/lib/templates/project/config/deploy/steps/step-1.erb +0 -0
- data/lib/templates/project/config/deploy/steps/step-2.erb +0 -0
- data/lib/templates/project/config/deploy/steps/step-3.erb +0 -0
- data/lib/templates/project/config/deploy.erb +3 -0
- data/spec/fixtures/config/deploy/steps/step-0.test +13 -0
- data/spec/fixtures/config/deploy/steps/step-1.test +0 -0
- data/spec/fixtures/config/deploy/steps/step-2.test +0 -0
- data/spec/fixtures/config/deploy/steps/step-3.test +0 -0
- data/spec/fixtures/config/deploy.test +3 -0
- data/spec/ordered_phases_spec.rb +6 -4
- data/spec/pre_prepare_spec.rb +8 -6
- data/spec/profile_spec.rb +9 -5
- data/spec/project_spec.rb +9 -2
- data/spec/puppet_spec_helper.rb +1 -1
- data/spec/role_spec.rb +9 -5
- data/spec/spec_helper.rb +5 -0
- metadata +17 -212
- data/lib/templates/puppet/step-0/modules/rbenv/AUTHORS +0 -11
- data/lib/templates/puppet/step-0/modules/rbenv/CHANGELOG.md +0 -70
- data/lib/templates/puppet/step-0/modules/rbenv/Gemfile +0 -8
- data/lib/templates/puppet/step-0/modules/rbenv/Gemfile.lock +0 -28
- data/lib/templates/puppet/step-0/modules/rbenv/Modulefile +0 -7
- data/lib/templates/puppet/step-0/modules/rbenv/README.md +0 -173
- data/lib/templates/puppet/step-0/modules/rbenv/Rakefile +0 -22
- data/lib/templates/puppet/step-0/modules/rbenv/TODO +0 -10
- data/lib/templates/puppet/step-0/modules/rbenv/bin/autospec +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/facter +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/filebucket +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/hiera +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/htmldiff +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/ldiff +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/pi +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-lint +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-module +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetca +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetd +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetdoc +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetmasterd +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetqd +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetrun +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/rake +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/ralsh +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec-puppet-init +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/provider/rbenvgem/default.rb +0 -50
- data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/type/rbenvgem.rb +0 -62
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/bundle.pp +0 -36
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/client.pp +0 -48
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/compile.pp +0 -102
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/definition.pp +0 -31
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/centos.pp +0 -25
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/suse.pp +0 -28
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/ubuntu.pp +0 -17
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies.pp +0 -8
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/gem.pp +0 -29
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/install.pp +0 -55
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rbenvvars.pp +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rubybuild.pp +0 -16
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin.pp +0 -40
- data/lib/templates/puppet/step-0/modules/rbenv/metadata.json +0 -109
- data/lib/templates/puppet/step-0/modules/rbenv/templates/Gemfile.erb +0 -5
- data/lib/templates/puppet/step-0/modules/rbenv/templates/dot.rbenvrc.erb +0 -8
- data/lib/templates/puppet/step-0/modules/stdlib/CHANGELOG.md +0 -418
- data/lib/templates/puppet/step-0/modules/stdlib/CONTRIBUTING.md +0 -65
- data/lib/templates/puppet/step-0/modules/stdlib/Gemfile +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/Gemfile.lock +0 -166
- data/lib/templates/puppet/step-0/modules/stdlib/LICENSE +0 -19
- data/lib/templates/puppet/step-0/modules/stdlib/Modulefile +0 -11
- data/lib/templates/puppet/step-0/modules/stdlib/README.markdown +0 -1304
- data/lib/templates/puppet/step-0/modules/stdlib/README_DEVELOPER.markdown +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/README_SPECS.markdown +0 -7
- data/lib/templates/puppet/step-0/modules/stdlib/RELEASE_PROCESS.markdown +0 -24
- data/lib/templates/puppet/step-0/modules/stdlib/Rakefile +0 -18
- data/lib/templates/puppet/step-0/modules/stdlib/checksums.json +0 -349
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/facter_dot_d.rb +0 -202
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/pe_version.rb +0 -53
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/puppet_vardir.rb +0 -26
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/root_home.rb +0 -32
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/util/puppet_settings.rb +0 -21
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/abs.rb +0 -36
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/any2array.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/base64.rb +0 -37
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/bool2num.rb +0 -49
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/capitalize.rb +0 -34
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chomp.rb +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chop.rb +0 -37
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/concat.rb +0 -41
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/count.rb +0 -22
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/deep_merge.rb +0 -44
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete.rb +0 -46
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +0 -49
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_undef_values.rb +0 -34
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_values.rb +0 -26
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/difference.rb +0 -36
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/dirname.rb +0 -15
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/downcase.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/empty.rb +0 -28
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb +0 -45
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/flatten.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/floor.rb +0 -25
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/fqdn_rotate.rb +0 -46
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/get_module_path.rb +0 -17
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getparam.rb +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getvar.rb +0 -26
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/grep.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_interface_with.rb +0 -52
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_address.rb +0 -25
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_network.rb +0 -25
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_key.rb +0 -28
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/hash.rb +0 -41
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/intersection.rb +0 -34
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_array.rb +0 -22
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_bool.rb +0 -22
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_domain_name.rb +0 -50
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_float.rb +0 -30
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb +0 -26
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_hash.rb +0 -22
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_integer.rb +0 -45
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_ip_address.rb +0 -32
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_mac_address.rb +0 -27
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_numeric.rb +0 -75
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_string.rb +0 -26
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join.rb +0 -41
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +0 -47
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/keys.rb +0 -26
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/loadyaml.rb +0 -20
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/lstrip.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/max.rb +0 -21
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/member.rb +0 -44
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/merge.rb +0 -34
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/min.rb +0 -21
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/num2bool.rb +0 -43
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +0 -24
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parseyaml.rb +0 -24
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick.rb +0 -29
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick_default.rb +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/prefix.rb +0 -45
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/range.rb +0 -88
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reject.rb +0 -31
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reverse.rb +0 -28
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/rstrip.rb +0 -32
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/shuffle.rb +0 -46
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/size.rb +0 -48
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/sort.rb +0 -27
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/squeeze.rb +0 -36
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2bool.rb +0 -46
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2saltedsha512.rb +0 -32
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strftime.rb +0 -107
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strip.rb +0 -39
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/suffix.rb +0 -45
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/swapcase.rb +0 -39
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/time.rb +0 -49
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/to_bytes.rb +0 -28
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/type.rb +0 -50
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/union.rb +0 -34
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/unique.rb +0 -51
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/upcase.rb +0 -41
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/uriescape.rb +0 -35
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +0 -56
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_array.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_augeas.rb +0 -81
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_bool.rb +0 -34
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_cmd.rb +0 -48
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_hash.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv4_address.rb +0 -48
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv6_address.rb +0 -49
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_re.rb +0 -40
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb +0 -71
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_string.rb +0 -33
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values.rb +0 -39
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values_at.rb +0 -98
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/zip.rb +0 -65
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/provider/file_line/ruby.rb +0 -83
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/anchor.rb +0 -46
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/file_line.rb +0 -79
- data/lib/templates/puppet/step-0/modules/stdlib/manifests/init.pp +0 -20
- data/lib/templates/puppet/step-0/modules/stdlib/manifests/stages.pp +0 -43
- data/lib/templates/puppet/step-0/modules/stdlib/metadata.json +0 -111
- data/lib/templates/puppet/step-0/modules/sudo/.fixtures.yml +0 -5
- data/lib/templates/puppet/step-0/modules/sudo/.gemfile +0 -14
- data/lib/templates/puppet/step-0/modules/sudo/.gemfile.lock +0 -43
- data/lib/templates/puppet/step-0/modules/sudo/.travis.yml +0 -34
- data/lib/templates/puppet/step-0/modules/sudo/LICENSE +0 -13
- data/lib/templates/puppet/step-0/modules/sudo/Modulefile +0 -9
- data/lib/templates/puppet/step-0/modules/sudo/README.md +0 -171
- data/lib/templates/puppet/step-0/modules/sudo/Rakefile +0 -1
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.aix +0 -90
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.archlinux +0 -90
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.deb +0 -90
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.freebsd +0 -98
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.omnios +0 -90
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel5 +0 -97
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel6 +0 -115
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.solaris +0 -90
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.suse +0 -81
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.ubuntu +0 -30
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.wheezy +0 -17
- data/lib/templates/puppet/step-0/modules/sudo/lib/augeas/lenses/fixedsudoers.aug +0 -520
- data/lib/templates/puppet/step-0/modules/sudo/manifests/allow.pp +0 -76
- data/lib/templates/puppet/step-0/modules/sudo/manifests/conf.pp +0 -105
- data/lib/templates/puppet/step-0/modules/sudo/manifests/configs.pp +0 -24
- data/lib/templates/puppet/step-0/modules/sudo/manifests/init.pp +0 -151
- data/lib/templates/puppet/step-0/modules/sudo/manifests/package/aix.pp +0 -46
- data/lib/templates/puppet/step-0/modules/sudo/manifests/package/solaris.pp +0 -60
- data/lib/templates/puppet/step-0/modules/sudo/manifests/package.pp +0 -61
- data/lib/templates/puppet/step-0/modules/sudo/manifests/params.pp +0 -127
- data/lib/templates/puppet/step-0/modules/sudo/metadata.json +0 -59
- 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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
response =
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
-
|
|
132
|
-
|
|
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(
|
|
156
|
-
|
|
124
|
+
expanded_directory = File.expand_path(BEBOX_BOXES_PATH)
|
|
157
125
|
# Download file to bebox boxes tmp
|
|
158
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
47
|
-
|
|
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 =
|
|
62
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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
|
|
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'
|
|
@@ -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'
|
data/spec/ordered_phases_spec.rb
CHANGED
|
@@ -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::
|
|
37
|
-
expect(
|
|
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
|
|
40
|
-
expect(
|
|
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)
|
data/spec/pre_prepare_spec.rb
CHANGED
|
@@ -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::
|
|
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
|
|
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|
|
|
59
|
+
nodes.each{|node| add_vagrant_node(project_name, vagrant_box_base, node)}
|
|
58
60
|
node = nodes.first
|
|
59
|
-
expect(node
|
|
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::
|
|
64
|
-
nodes.each{|node| expect(
|
|
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(
|
|
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(
|
|
24
|
+
expect(valid_puppet_class_name?('_profile_0')).to be (false)
|
|
21
25
|
# Test not valid contain Upper letter
|
|
22
|
-
expect(
|
|
26
|
+
expect(valid_puppet_class_name?('Profile_0')).to be (false)
|
|
23
27
|
# Test not valid contain dash character
|
|
24
|
-
expect(
|
|
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(
|
|
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
|
|
65
|
-
subject.
|
|
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
|