bebox 0.0.1
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 +7 -0
- data/.gitignore +78 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +163 -0
- data/LICENSE +21 -0
- data/README.md +372 -0
- data/Rakefile +8 -0
- data/bebox.gemspec +40 -0
- data/bin/bebox +5 -0
- data/lib/bebox/cli.rb +42 -0
- data/lib/bebox/commands/commands_helper.rb +33 -0
- data/lib/bebox/commands/environment_commands.rb +46 -0
- data/lib/bebox/commands/general_commands.rb +24 -0
- data/lib/bebox/commands/node_commands.rb +68 -0
- data/lib/bebox/commands/prepare_commands.rb +59 -0
- data/lib/bebox/commands/project_commands.rb +44 -0
- data/lib/bebox/commands/provision_commands.rb +145 -0
- data/lib/bebox/environment.rb +114 -0
- data/lib/bebox/logger.rb +51 -0
- data/lib/bebox/node.rb +308 -0
- data/lib/bebox/profile.rb +102 -0
- data/lib/bebox/project.rb +259 -0
- data/lib/bebox/provision.rb +257 -0
- data/lib/bebox/role.rb +103 -0
- data/lib/bebox/version.rb +3 -0
- data/lib/bebox/wizards/environment_wizard.rb +45 -0
- data/lib/bebox/wizards/node_wizard.rb +163 -0
- data/lib/bebox/wizards/profile_wizard.rb +91 -0
- data/lib/bebox/wizards/project_wizard.rb +175 -0
- data/lib/bebox/wizards/provision_wizard.rb +80 -0
- data/lib/bebox/wizards/role_wizard.rb +97 -0
- data/lib/bebox.rb +2 -0
- data/lib/deb/puppet_3.6.0/augeas-lenses_0.10.0-0ubuntu4_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/debconf-utils_1.5.42ubuntu1_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/facter_2.0.1-1puppetlabs1_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/hiera_1.3.2-1puppetlabs1_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/libaugeas-ruby1.8_0.3.0-1.1ubuntu4_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/libaugeas-ruby_0.3.0-1.1ubuntu4_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/libaugeas0_0.10.0-0ubuntu4_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/libjson-ruby_1.6.3-1_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/libruby1.8_1.8.7.352-2ubuntu1.4_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/libruby_4.8_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/libshadow-ruby1.8_1.4.1-8build1_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/puppet-common_3.6.0-1puppetlabs1_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/puppet_3.6.0-1puppetlabs1_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/ruby-json_1.6.3-1_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/ruby-rgen_0.6.5-1puppetlabs1_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/ruby1.8_1.8.7.352-2ubuntu1.4_amd64.deb +0 -0
- data/lib/deb/puppet_3.6.0/ruby_4.8_all.deb +0 -0
- data/lib/deb/puppet_3.6.0/virt-what_1.11-1_amd64.deb +0 -0
- data/lib/templates/node/Vagrantfile.erb +18 -0
- data/lib/templates/node/deploy_vagrant_node.erb +3 -0
- data/lib/templates/node/node.yml.erb +3 -0
- data/lib/templates/node/prepared_node.yml.erb +4 -0
- data/lib/templates/node/provisioned_node.yml.erb +4 -0
- data/lib/templates/project/Capfile.erb +2 -0
- data/lib/templates/project/Gemfile.erb +5 -0
- data/lib/templates/project/config/deploy/environment.erb +40 -0
- data/lib/templates/project/config/deploy/vagrant.erb +42 -0
- data/lib/templates/project/config/deploy.erb +120 -0
- data/lib/templates/project/dot_bebox.erb +4 -0
- data/lib/templates/project/gitignore.erb +7 -0
- data/lib/templates/project/ubuntu_dependencies +10 -0
- data/lib/templates/puppet/default_profiles/base/fundamental/ruby/Puppetfile +0 -0
- data/lib/templates/puppet/default_profiles/base/fundamental/ruby/manifests/init.pp +24 -0
- data/lib/templates/puppet/default_profiles/base/fundamental/sudo/Puppetfile +0 -0
- data/lib/templates/puppet/default_profiles/base/fundamental/sudo/manifests/init.pp +22 -0
- data/lib/templates/puppet/default_profiles/base/fundamental/users/Puppetfile +0 -0
- data/lib/templates/puppet/default_profiles/base/fundamental/users/manifests/init.pp +18 -0
- data/lib/templates/puppet/default_profiles/base/security/fail2ban/Puppetfile +2 -0
- data/lib/templates/puppet/default_profiles/base/security/fail2ban/manifests/init.pp +28 -0
- data/lib/templates/puppet/default_profiles/base/security/iptables/Puppetfile +2 -0
- data/lib/templates/puppet/default_profiles/base/security/iptables/manifests/init.pp +27 -0
- data/lib/templates/puppet/default_profiles/base/security/ssh/Puppetfile +2 -0
- data/lib/templates/puppet/default_profiles/base/security/ssh/manifests/init.pp +30 -0
- data/lib/templates/puppet/default_profiles/base/security/sysctl/Puppetfile +2 -0
- data/lib/templates/puppet/default_profiles/base/security/sysctl/manifests/init.pp +20 -0
- data/lib/templates/puppet/default_profiles/base/users/ssh/Puppetfile +2 -0
- data/lib/templates/puppet/default_profiles/base/users/ssh/manifests/init.pp +47 -0
- data/lib/templates/puppet/default_profiles/base/users/users/Puppetfile +0 -0
- data/lib/templates/puppet/default_profiles/base/users/users/manifests/init.pp +18 -0
- data/lib/templates/puppet/default_roles/fundamental/manifests/init.pp +16 -0
- data/lib/templates/puppet/default_roles/security/manifests/init.pp +17 -0
- data/lib/templates/puppet/default_roles/users/manifests/init.pp +15 -0
- data/lib/templates/puppet/profiles/Puppetfile.erb +24 -0
- data/lib/templates/puppet/profiles/manifests/init.pp.erb +17 -0
- data/lib/templates/puppet/roles/manifests/init.pp.erb +14 -0
- data/lib/templates/puppet/step-0/Puppetfile.erb +5 -0
- data/lib/templates/puppet/step-0/hiera/data/common.yaml.erb +26 -0
- data/lib/templates/puppet/step-0/hiera/data/environment.yaml.erb +26 -0
- data/lib/templates/puppet/step-0/hiera/data/node.yaml.erb +26 -0
- data/lib/templates/puppet/step-0/hiera/hiera.yaml.erb +11 -0
- data/lib/templates/puppet/step-0/manifests/node.erb +5 -0
- data/lib/templates/puppet/step-0/manifests/site.pp.erb +15 -0
- data/lib/templates/puppet/step-0/modules/rbenv/AUTHORS +11 -0
- data/lib/templates/puppet/step-0/modules/rbenv/CHANGELOG.md +70 -0
- data/lib/templates/puppet/step-0/modules/rbenv/Gemfile +8 -0
- data/lib/templates/puppet/step-0/modules/rbenv/Gemfile.lock +28 -0
- data/lib/templates/puppet/step-0/modules/rbenv/Modulefile +7 -0
- data/lib/templates/puppet/step-0/modules/rbenv/README.md +173 -0
- data/lib/templates/puppet/step-0/modules/rbenv/Rakefile +22 -0
- data/lib/templates/puppet/step-0/modules/rbenv/TODO +10 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/autospec +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/facter +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/filebucket +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/hiera +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/htmldiff +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/ldiff +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/pi +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-lint +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-module +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetca +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetd +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetdoc +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetmasterd +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetqd +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetrun +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/rake +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/ralsh +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec-puppet-init +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/provider/rbenvgem/default.rb +50 -0
- data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/type/rbenvgem.rb +62 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/bundle.pp +36 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/client.pp +48 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/compile.pp +102 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/definition.pp +31 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/centos.pp +25 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/suse.pp +28 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/ubuntu.pp +17 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies.pp +8 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/gem.pp +29 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/install.pp +55 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rbenvvars.pp +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rubybuild.pp +16 -0
- data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin.pp +40 -0
- data/lib/templates/puppet/step-0/modules/rbenv/metadata.json +109 -0
- data/lib/templates/puppet/step-0/modules/rbenv/templates/Gemfile.erb +5 -0
- data/lib/templates/puppet/step-0/modules/rbenv/templates/dot.rbenvrc.erb +8 -0
- data/lib/templates/puppet/step-0/modules/stdlib/CHANGELOG.md +418 -0
- data/lib/templates/puppet/step-0/modules/stdlib/CONTRIBUTING.md +65 -0
- data/lib/templates/puppet/step-0/modules/stdlib/Gemfile +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/Gemfile.lock +166 -0
- data/lib/templates/puppet/step-0/modules/stdlib/LICENSE +19 -0
- data/lib/templates/puppet/step-0/modules/stdlib/Modulefile +11 -0
- data/lib/templates/puppet/step-0/modules/stdlib/README.markdown +1304 -0
- data/lib/templates/puppet/step-0/modules/stdlib/README_DEVELOPER.markdown +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/README_SPECS.markdown +7 -0
- data/lib/templates/puppet/step-0/modules/stdlib/RELEASE_PROCESS.markdown +24 -0
- data/lib/templates/puppet/step-0/modules/stdlib/Rakefile +18 -0
- data/lib/templates/puppet/step-0/modules/stdlib/checksums.json +349 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/facter_dot_d.rb +202 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/pe_version.rb +53 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/puppet_vardir.rb +26 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/root_home.rb +32 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/util/puppet_settings.rb +21 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/abs.rb +36 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/any2array.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/base64.rb +37 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/bool2num.rb +49 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/capitalize.rb +34 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chomp.rb +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chop.rb +37 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/concat.rb +41 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/count.rb +22 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/deep_merge.rb +44 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete.rb +46 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +49 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_undef_values.rb +34 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_values.rb +26 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/difference.rb +36 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/dirname.rb +15 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/downcase.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/empty.rb +28 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb +45 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/flatten.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/floor.rb +25 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/get_module_path.rb +17 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getparam.rb +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getvar.rb +26 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/grep.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_interface_with.rb +52 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_address.rb +25 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_network.rb +25 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_key.rb +28 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/hash.rb +41 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/intersection.rb +34 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_array.rb +22 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_bool.rb +22 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_domain_name.rb +50 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_float.rb +30 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb +26 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_hash.rb +22 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_integer.rb +45 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_ip_address.rb +32 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_mac_address.rb +27 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_numeric.rb +75 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_string.rb +26 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join.rb +41 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/keys.rb +26 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/loadyaml.rb +20 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/lstrip.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/max.rb +21 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/member.rb +44 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/merge.rb +34 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/min.rb +21 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/num2bool.rb +43 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +24 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parseyaml.rb +24 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick.rb +29 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick_default.rb +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/prefix.rb +45 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/range.rb +88 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reject.rb +31 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reverse.rb +28 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/rstrip.rb +32 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/shuffle.rb +46 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/size.rb +48 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/sort.rb +27 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/squeeze.rb +36 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2bool.rb +46 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strftime.rb +107 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strip.rb +39 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/suffix.rb +45 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/swapcase.rb +39 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/time.rb +49 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/to_bytes.rb +28 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/type.rb +50 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/union.rb +34 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/unique.rb +51 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/upcase.rb +41 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/uriescape.rb +35 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_array.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_augeas.rb +81 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_bool.rb +34 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_cmd.rb +48 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_hash.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv4_address.rb +48 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv6_address.rb +49 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_re.rb +40 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb +71 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_string.rb +33 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values.rb +39 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values_at.rb +98 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/zip.rb +65 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/provider/file_line/ruby.rb +83 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/anchor.rb +46 -0
- data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/file_line.rb +79 -0
- data/lib/templates/puppet/step-0/modules/stdlib/manifests/init.pp +20 -0
- data/lib/templates/puppet/step-0/modules/stdlib/manifests/stages.pp +43 -0
- data/lib/templates/puppet/step-0/modules/stdlib/metadata.json +111 -0
- data/lib/templates/puppet/step-0/modules/sudo/.fixtures.yml +5 -0
- data/lib/templates/puppet/step-0/modules/sudo/.gemfile +14 -0
- data/lib/templates/puppet/step-0/modules/sudo/.gemfile.lock +43 -0
- data/lib/templates/puppet/step-0/modules/sudo/.travis.yml +34 -0
- data/lib/templates/puppet/step-0/modules/sudo/LICENSE +13 -0
- data/lib/templates/puppet/step-0/modules/sudo/Modulefile +9 -0
- data/lib/templates/puppet/step-0/modules/sudo/README.md +171 -0
- data/lib/templates/puppet/step-0/modules/sudo/Rakefile +1 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.aix +90 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.archlinux +90 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.deb +90 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.freebsd +98 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.omnios +90 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel5 +97 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel6 +115 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.solaris +90 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.suse +81 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.ubuntu +30 -0
- data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.wheezy +17 -0
- data/lib/templates/puppet/step-0/modules/sudo/lib/augeas/lenses/fixedsudoers.aug +520 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/allow.pp +76 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/conf.pp +105 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/configs.pp +24 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/init.pp +151 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/package/aix.pp +46 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/package/solaris.pp +60 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/package.pp +61 -0
- data/lib/templates/puppet/step-0/modules/sudo/manifests/params.pp +127 -0
- data/lib/templates/puppet/step-0/modules/sudo/metadata.json +59 -0
- data/lib/templates/puppet/step-0/modules/sudo/templates/users_groups.erb +9 -0
- data/lib/templates/puppet/step-0/modules/users/manifests/init.pp +15 -0
- data/lib/templates/puppet/step-0/modules/users/manifests/user.pp +50 -0
- data/lib/templates/puppet/step-1/Puppetfile.erb +5 -0
- data/lib/templates/puppet/step-1/hiera/data/common.yaml.erb +11 -0
- data/lib/templates/puppet/step-1/hiera/data/environment.yaml.erb +11 -0
- data/lib/templates/puppet/step-1/hiera/data/node.yaml.erb +11 -0
- data/lib/templates/puppet/step-1/hiera/hiera.yaml.erb +11 -0
- data/lib/templates/puppet/step-1/manifests/node.erb +5 -0
- data/lib/templates/puppet/step-1/manifests/site.pp.erb +15 -0
- data/lib/templates/puppet/step-1/modules/users/manifests/init.pp +15 -0
- data/lib/templates/puppet/step-1/modules/users/manifests/user.pp +49 -0
- data/lib/templates/puppet/step-2/Puppetfile.erb +5 -0
- data/lib/templates/puppet/step-2/hiera/data/common.yaml.erb +1 -0
- data/lib/templates/puppet/step-2/hiera/data/environment.yaml.erb +1 -0
- data/lib/templates/puppet/step-2/hiera/data/node.yaml.erb +1 -0
- data/lib/templates/puppet/step-2/hiera/hiera.yaml.erb +11 -0
- data/lib/templates/puppet/step-2/manifests/node.erb +3 -0
- data/lib/templates/puppet/step-2/manifests/site.pp.erb +10 -0
- data/lib/templates/puppet/step-3/Puppetfile.erb +5 -0
- data/lib/templates/puppet/step-3/hiera/data/common.yaml.erb +99 -0
- data/lib/templates/puppet/step-3/hiera/data/environment.yaml.erb +99 -0
- data/lib/templates/puppet/step-3/hiera/data/node.yaml.erb +99 -0
- data/lib/templates/puppet/step-3/hiera/hiera.yaml.erb +11 -0
- data/lib/templates/puppet/step-3/manifests/node.erb +5 -0
- data/lib/templates/puppet/step-3/manifests/site.pp.erb +15 -0
- data/spec/environment_spec.rb +82 -0
- data/spec/factories/environment.rb +20 -0
- data/spec/factories/node.rb +22 -0
- data/spec/factories/profile.rb +10 -0
- data/spec/factories/project.rb +17 -0
- data/spec/factories/provision.rb +13 -0
- data/spec/factories/role.rb +9 -0
- data/spec/fixtures/Capfile.test +2 -0
- data/spec/fixtures/Gemfile.test +5 -0
- data/spec/fixtures/config/deploy/environment.test +35 -0
- data/spec/fixtures/config/deploy/production.test +35 -0
- data/spec/fixtures/config/deploy/staging.test +35 -0
- data/spec/fixtures/config/deploy/vagrant.test +37 -0
- data/spec/fixtures/config/deploy.test +120 -0
- data/spec/fixtures/dot_bebox.test.erb +4 -0
- data/spec/fixtures/dot_gitignore.test +8 -0
- data/spec/fixtures/node/Vagrantfile.test.erb +18 -0
- data/spec/fixtures/node/node_0.test.erb +3 -0
- data/spec/fixtures/node/prepared_node_0.test.erb +4 -0
- data/spec/fixtures/node/provisioned_node_0.test.erb +4 -0
- data/spec/fixtures/node/vagrant_deploy.test +38 -0
- data/spec/fixtures/puppet/hiera/data/node0.server1.test.yaml.test +4 -0
- data/spec/fixtures/puppet/profiles/test/profile_0/Puppetfile.test +24 -0
- data/spec/fixtures/puppet/profiles/test/profile_0/Puppetfile_with_modules.test +20 -0
- data/spec/fixtures/puppet/profiles/test/profile_0/manifests/init.pp.test +17 -0
- data/spec/fixtures/puppet/profiles/test/profile_0/manifests/init_with_content.pp.test +22 -0
- data/spec/fixtures/puppet/roles/manifests/init.pp.test +14 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/data/common.yaml.test +26 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/data/node0.server1.test.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/data/pname_env.yaml.test +26 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/data/production.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/data/staging.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/data/vagrant.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-0/hiera/hiera.yaml.test +11 -0
- data/spec/fixtures/puppet/steps/step-0/manifests/site.pp.test +10 -0
- data/spec/fixtures/puppet/steps/step-0/manifests/site_with_node.pp.test +15 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/data/common.yaml.test +11 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/data/node0.server1.test.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/data/pname_env.yaml.test +11 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/data/production.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/data/staging.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/data/vagrant.yaml.test +0 -0
- data/spec/fixtures/puppet/steps/step-1/hiera/hiera.yaml.test +11 -0
- data/spec/fixtures/puppet/steps/step-1/manifests/site.pp.test +10 -0
- data/spec/fixtures/puppet/steps/step-1/manifests/site_with_node.pp.test +15 -0
- data/spec/fixtures/puppet/steps/step-2/Puppetfile.test +6 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/data/common.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/data/node0.server1.test.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/data/pname_env.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/data/production.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/data/staging.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/data/vagrant.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-2/hiera/hiera.yaml.test +11 -0
- data/spec/fixtures/puppet/steps/step-2/manifests/site.pp.test +10 -0
- data/spec/fixtures/puppet/steps/step-2/manifests/site_with_node.pp.test +13 -0
- data/spec/fixtures/puppet/steps/step-2/manifests/site_with_node_role_association.pp.test +16 -0
- data/spec/fixtures/puppet/steps/step-2/modules/profiles/manifests/test/profile_0.pp.test +17 -0
- data/spec/fixtures/puppet/steps/step-2/modules/roles/manifests/role_0.pp.test +16 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/data/common.yaml.test +99 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/data/node0.server1.test.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/data/pname_env.yaml.test +99 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/data/production.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/data/staging.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/data/vagrant.yaml.test +1 -0
- data/spec/fixtures/puppet/steps/step-3/hiera/hiera.yaml.test +11 -0
- data/spec/fixtures/puppet/steps/step-3/manifests/site.pp.test +10 -0
- data/spec/fixtures/puppet/steps/step-3/manifests/site_with_node.pp.test +15 -0
- data/spec/fixtures/puppet/ubuntu_dependencies.test +10 -0
- data/spec/node0.server1.test/prepare_phase_spec.rb +53 -0
- data/spec/node0.server1.test/provision_step_0_spec.rb +46 -0
- data/spec/node0.server1.test/provision_step_1_spec.rb +41 -0
- data/spec/node0.server1.test/provision_step_2_spec.rb +79 -0
- data/spec/node0.server1.test/provision_step_3_spec.rb +76 -0
- data/spec/node_role_spec.rb +20 -0
- data/spec/node_spec.rb +71 -0
- data/spec/node_wizard_spec.rb +22 -0
- data/spec/ordered_phases_spec.rb +55 -0
- data/spec/pre_prepare_spec.rb +78 -0
- data/spec/pre_provision_steps_spec.rb +40 -0
- data/spec/profile_spec.rb +70 -0
- data/spec/project_spec.rb +195 -0
- data/spec/project_wizard_spec.rb +51 -0
- data/spec/puppet_spec_helper.rb +15 -0
- data/spec/role_profiles_spec.rb +40 -0
- data/spec/role_spec.rb +56 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/support/config_specs.yaml.example +2 -0
- data/spec/vagrant_spec_helper.rb +15 -0
- metadata +625 -0
data/lib/bebox/node.rb
ADDED
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
require 'tilt'
|
|
2
|
+
require 'bebox/logger'
|
|
3
|
+
|
|
4
|
+
module Bebox
|
|
5
|
+
class Node
|
|
6
|
+
|
|
7
|
+
include Bebox::Logger
|
|
8
|
+
|
|
9
|
+
attr_accessor :environment, :project_root, :hostname, :ip, :created_at, :started_at, :finished_at
|
|
10
|
+
|
|
11
|
+
def initialize(environment, project_root, hostname, ip)
|
|
12
|
+
self.environment = environment
|
|
13
|
+
self.project_root = project_root
|
|
14
|
+
self.hostname = hostname
|
|
15
|
+
self.ip = ip
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Create all files and directories related to an node
|
|
19
|
+
def create
|
|
20
|
+
create_hiera_template
|
|
21
|
+
create_manifests_node
|
|
22
|
+
create_node_checkpoint
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Delete all files and directories related to an node
|
|
26
|
+
def remove
|
|
27
|
+
remove_vagrant_box if self.environment == 'vagrant' && prepared_nodes_count > 0
|
|
28
|
+
remove_checkpoints
|
|
29
|
+
remove_hiera_template
|
|
30
|
+
remove_manifests_node
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# List existing nodes for environment and type (nodes, prepared_nodes)
|
|
34
|
+
def self.list(project_root, environment, node_type)
|
|
35
|
+
Dir["#{environments_path(project_root)}/#{environment}/#{node_type}/*"].map { |f| File.basename(f, ".*") }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Get node checkpoint parameter from the yml file
|
|
39
|
+
def checkpoint_parameter_from_file(node_type, parameter)
|
|
40
|
+
Bebox::Node.checkpoint_parameter_from_file(self.project_root, self.environment, self.hostname, node_type, parameter)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Get node checkpoint parameter from the yml file
|
|
44
|
+
def self.checkpoint_parameter_from_file(project_root, environment, hostname, node_type, parameter)
|
|
45
|
+
node_config = YAML.load_file("#{environments_path(project_root)}/#{environment}/#{node_type}/#{hostname}.yml")
|
|
46
|
+
node_config[parameter]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Prepare the configured nodes
|
|
50
|
+
def prepare
|
|
51
|
+
started_at = DateTime.now.to_s
|
|
52
|
+
prepare_deploy
|
|
53
|
+
prepare_common_installation
|
|
54
|
+
puppet_installation
|
|
55
|
+
create_prepare_checkpoint(started_at)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Deploy the puppet prepare directory
|
|
59
|
+
def prepare_deploy
|
|
60
|
+
`cd #{self.project_root} && BUNDLE_GEMFILE=Gemfile bundle exec cap #{self.environment} deploy:setup -S phase=node_prepare HOSTS=#{self.hostname}`
|
|
61
|
+
`cd #{self.project_root} && BUNDLE_GEMFILE=Gemfile bundle exec cap #{self.environment} deploy -S phase=node_prepare HOSTS=#{self.hostname}`
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Execute through capistrano the common development installation packages
|
|
65
|
+
def prepare_common_installation
|
|
66
|
+
`cd #{self.project_root} && BUNDLE_GEMFILE=Gemfile bundle exec cap #{self.environment} deploy:prepare_installation:common -S phase=node_prepare HOSTS=#{self.hostname}`
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Execute through capistrano the puppet installation
|
|
70
|
+
def puppet_installation
|
|
71
|
+
`cd #{self.project_root} && BUNDLE_GEMFILE=Gemfile bundle exec cap #{self.environment} deploy:prepare_installation:puppet -S phase=node_prepare HOSTS=#{self.hostname}`
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Create the checkpoints for the prepared nodes
|
|
75
|
+
def create_prepare_checkpoint(started_at)
|
|
76
|
+
self.started_at = started_at
|
|
77
|
+
self.finished_at = DateTime.now.to_s
|
|
78
|
+
node_template = Tilt::ERBTemplate.new("#{Bebox::Node::templates_path}/node/prepared_node.yml.erb")
|
|
79
|
+
File.open("#{self.project_root}/.checkpoints/environments/#{self.environment}/prepared_nodes/#{self.hostname}.yml", 'w') do |f|
|
|
80
|
+
f.write node_template.render(nil, :node => self)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Create the puppet hiera template file
|
|
85
|
+
def create_hiera_template
|
|
86
|
+
options = {}
|
|
87
|
+
options[:ssh_key] = Bebox::Project.public_ssh_key_from_file(self.project_root, self.environment)
|
|
88
|
+
options[:project_name] = Bebox::Project.shortname_from_file(self.project_root)
|
|
89
|
+
Bebox::Provision.generate_hiera_for_steps(self.project_root, "node.yaml.erb", self.hostname, options)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Create the node in the puppet manifests file
|
|
93
|
+
def create_manifests_node
|
|
94
|
+
Bebox::Provision.add_node_to_step_manifests(self.project_root, self)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Prepare the vagrant nodes
|
|
98
|
+
def prepare_vagrant
|
|
99
|
+
project_name = Bebox::Project.name_from_file(self.project_root)
|
|
100
|
+
vagrant_box_base = Bebox::Project.vagrant_box_base_from_file(self.project_root)
|
|
101
|
+
configure_local_hosts(project_name)
|
|
102
|
+
add_vagrant_node(project_name, vagrant_box_base)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Add the boxes to vagrant for each node
|
|
106
|
+
def add_vagrant_node(project_name, vagrant_box_base)
|
|
107
|
+
already_installed_boxes = installed_vagrant_box_names
|
|
108
|
+
box_name = "#{project_name}-#{self.hostname}"
|
|
109
|
+
info "Adding server to vagrant: #{self.hostname}..."
|
|
110
|
+
`cd #{self.project_root} && vagrant box add #{box_name} #{vagrant_box_base}` unless already_installed_boxes.include? box_name
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Up the vagrant boxes in Vagrantfile
|
|
114
|
+
def self.up_vagrant_nodes(project_root)
|
|
115
|
+
`cd #{project_root} && vagrant up --provision`
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Halt the vagrant boxes running
|
|
119
|
+
def self.halt_vagrant_nodes(project_root)
|
|
120
|
+
`cd #{project_root} && vagrant halt`
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# return an Array with the names of the currently installed vagrant boxes
|
|
124
|
+
# @returns Array
|
|
125
|
+
def installed_vagrant_box_names
|
|
126
|
+
(`cd #{self.project_root} && vagrant box list`).split("\n").map{|vagrant_box| vagrant_box.split(' ').first}
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# returns an Array of the Node objects for an environment
|
|
130
|
+
# @returns Array
|
|
131
|
+
def self.nodes_in_environment(project_root, environment, node_type)
|
|
132
|
+
node_objects = []
|
|
133
|
+
nodes = Bebox::Node.list(project_root, environment, node_type)
|
|
134
|
+
nodes.each do |hostname|
|
|
135
|
+
ip = Bebox::Node.checkpoint_parameter_from_file(project_root, environment, hostname, node_type, 'ip')
|
|
136
|
+
node_objects << Bebox::Node.new(environment, project_root, hostname, ip)
|
|
137
|
+
end
|
|
138
|
+
node_objects
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Generate the Vagrantfile
|
|
142
|
+
def self.generate_vagrantfile(project_root, nodes)
|
|
143
|
+
template = Tilt::ERBTemplate.new("#{templates_path}/node/Vagrantfile.erb")
|
|
144
|
+
network_interface = RUBY_PLATFORM =~ /darwin/ ? 'en0' : 'eth0'
|
|
145
|
+
project_name = Bebox::Project.name_from_file(project_root)
|
|
146
|
+
vagrant_box_provider = Bebox::Project.vagrant_box_provider_from_file(project_root)
|
|
147
|
+
File.open("#{project_root}/Vagrantfile", 'w') do |f|
|
|
148
|
+
f.write template.render(nil, :nodes => nodes, :project_name => project_name,
|
|
149
|
+
:vagrant_box_provider => vagrant_box_provider, :network_interface => network_interface)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Backup and add the vagrant hosts to local hosts file
|
|
154
|
+
def configure_local_hosts(project_name)
|
|
155
|
+
info "\nPlease provide your account password, if ask you, to configure the local hosts file."
|
|
156
|
+
backup_local_hosts(project_name)
|
|
157
|
+
add_to_local_hosts
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Add the vagrant hosts to the local hosts file
|
|
161
|
+
def add_to_local_hosts
|
|
162
|
+
# Get the content of the hosts file
|
|
163
|
+
hosts_content = File.read("#{local_hosts_path}/hosts").gsub(/\s+/, ' ').strip
|
|
164
|
+
# Put the node lines in hosts file if not exist
|
|
165
|
+
line = "#{self.ip} #{self.hostname}"
|
|
166
|
+
node_present = (hosts_content =~ /#{self.ip}\s+#{self.hostname}/) ? true : false
|
|
167
|
+
`echo '#{line} # Added by bebox' >> #{local_hosts_path}/hosts` unless node_present
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Backup the local hosts file
|
|
171
|
+
def backup_local_hosts(project_name)
|
|
172
|
+
# Make a backup of hosts file
|
|
173
|
+
hosts_backup_file = "#{local_hosts_path}/hosts_before_#{project_name}"
|
|
174
|
+
`sudo cp #{local_hosts_path}/hosts #{hosts_backup_file}` unless File.exist?(hosts_backup_file)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Obtain the local hosts file for the OS
|
|
178
|
+
def local_hosts_path
|
|
179
|
+
RUBY_PLATFORM =~ /darwin/ ? '/private/etc' : '/etc'
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# Create checkpoint for node
|
|
183
|
+
def create_node_checkpoint
|
|
184
|
+
# Set the creation time for the node
|
|
185
|
+
self.created_at = DateTime.now.to_s
|
|
186
|
+
# Create the checkpoint file from template
|
|
187
|
+
node_template = Tilt::ERBTemplate.new("#{Bebox::Node::templates_path}/node/node.yml.erb")
|
|
188
|
+
File.open("#{self.project_root}/.checkpoints/environments/#{self.environment}/nodes/#{self.hostname}.yml", 'w') do |f|
|
|
189
|
+
f.write node_template.render(nil, :node => self)
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
# Remove checkpoints for node
|
|
194
|
+
def remove_checkpoints
|
|
195
|
+
`cd #{self.project_root} && rm -rf .checkpoints/environments/#{self.environment}/{nodes,prepared_nodes,steps/step-{0..3}}/#{self.hostname}.yml`
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Remove puppet hiera template file
|
|
199
|
+
def remove_hiera_template
|
|
200
|
+
Bebox::Provision.remove_hiera_for_steps(self.project_root, self.hostname)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# Remove node from puppet manifests
|
|
204
|
+
def remove_manifests_node
|
|
205
|
+
Bebox::Provision.remove_node_for_steps(self.project_root, self.hostname)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# Remove the specified boxes from vagrant
|
|
209
|
+
def remove_vagrant_box
|
|
210
|
+
project_name = Bebox::Project.name_from_file(self.project_root)
|
|
211
|
+
vagrant_box_provider = Bebox::Project.vagrant_box_provider_from_file(self.project_root)
|
|
212
|
+
`cd #{self.project_root} && vagrant destroy -f #{self.hostname}`
|
|
213
|
+
`cd #{self.project_root} && vagrant box remove #{project_name}-#{self.hostname} --provider #{vagrant_box_provider}`
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Get the templates path inside the gem
|
|
217
|
+
def self.templates_path
|
|
218
|
+
File.join((File.expand_path '..', File.dirname(__FILE__)), 'templates')
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# Get the environments path for project
|
|
222
|
+
def self.environments_path(project_root)
|
|
223
|
+
"#{project_root}/.checkpoints/environments"
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# Regenerate the deploy file for the environment
|
|
227
|
+
def self.regenerate_deploy_file(project_root, environment, nodes)
|
|
228
|
+
template_name = (environment == 'vagrant') ? 'vagrant' : "environment"
|
|
229
|
+
config_deploy_template = Tilt::ERBTemplate.new("#{templates_path}/project/config/deploy/#{template_name}.erb")
|
|
230
|
+
File.open("#{project_root}/config/deploy/#{environment}.rb", 'w') do |f|
|
|
231
|
+
f.write config_deploy_template.render(nil, :nodes => nodes, :environment => environment)
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# Return the running status of vagrant node
|
|
236
|
+
def vagrant_box_running?
|
|
237
|
+
status = `cd #{self.project_root} && vagrant status`
|
|
238
|
+
(status =~ /#{self.hostname}\s+running/) ? true : false
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
# Return the existence status of vagrant node
|
|
242
|
+
def vagrant_box_exist?
|
|
243
|
+
vagrant_boxes = `cd #{project_root} && vagrant box list`
|
|
244
|
+
project_name = Bebox::Project.name_from_file(self.project_root)
|
|
245
|
+
vagrant_box_provider = Bebox::Project.vagrant_box_provider_from_file(self.project_root)
|
|
246
|
+
(vagrant_boxes =~ /#{project_name}-#{self.hostname}\s+\(#{vagrant_box_provider}/) ? true : false
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
# Count the number of prepared nodes
|
|
250
|
+
def prepared_nodes_count
|
|
251
|
+
Bebox::Node.list(self.project_root, self.environment, 'prepared_nodes').count
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Return a description string for the node provision state
|
|
255
|
+
def self.node_provision_state(project_root, environment, node)
|
|
256
|
+
provision_state = ''
|
|
257
|
+
checkpoint_directories = %w{nodes prepared_nodes steps/step-0 steps/step-1 steps/step-2 steps/step-3}
|
|
258
|
+
checkpoint_directories.each do |checkpoint_directory|
|
|
259
|
+
checkpoint_directory_path = "#{project_root}/.checkpoints/environments/#{environment}/#{checkpoint_directory}/#{node}.yml"
|
|
260
|
+
if File.exist?(checkpoint_directory_path)
|
|
261
|
+
creation_date = Bebox::Node.node_creation_date(project_root, environment, checkpoint_directory, node)
|
|
262
|
+
provision_state = "#{state_from_checkpoint(checkpoint_directory)} at #{creation_date}"
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
provision_state
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# Get the corresponding state from checkpoint directory
|
|
269
|
+
def self.state_from_checkpoint(checkpoint)
|
|
270
|
+
case checkpoint
|
|
271
|
+
when 'nodes'
|
|
272
|
+
'Allocated'
|
|
273
|
+
when 'prepared_nodes'
|
|
274
|
+
'Prepared'
|
|
275
|
+
when 'steps/step-0'
|
|
276
|
+
'Provisioned Fundamental step-0'
|
|
277
|
+
when 'steps/step-1'
|
|
278
|
+
'Provisioned Users layer step-1'
|
|
279
|
+
when 'steps/step-2'
|
|
280
|
+
'Provisioned Services layer step-2'
|
|
281
|
+
when 'steps/step-3'
|
|
282
|
+
'Provisioned Security layer step-3'
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
# Obtain the node creation_at of finished_at parameter of a node
|
|
287
|
+
def self.node_creation_date(project_root, environment, node_type, node)
|
|
288
|
+
node_config = YAML.load_file("#{project_root}/.checkpoints/environments/#{environment}/#{node_type}/#{node}.yml")
|
|
289
|
+
(node_type == 'nodes') ? node_config['created_at'] : node_config['finished_at']
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
# Count the number of nodes in all environments
|
|
293
|
+
def self.count_all_nodes_by_type(project_root, node_type)
|
|
294
|
+
nodes_count = 0
|
|
295
|
+
environments = Bebox::Environment.list(project_root)
|
|
296
|
+
environments.each do |environment|
|
|
297
|
+
nodes_count += Bebox::Node.list(project_root, environment, node_type).count
|
|
298
|
+
end
|
|
299
|
+
nodes_count
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
# Restore the previous local hosts file
|
|
303
|
+
def restore_local_hosts(project_name)
|
|
304
|
+
`sudo cp #{local_hosts_path}/hosts_before_#{project_name} #{local_hosts_path}/hosts`
|
|
305
|
+
`sudo rm #{local_hosts_path}/hosts_before_#{project_name}`
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'tilt'
|
|
2
|
+
|
|
3
|
+
module Bebox
|
|
4
|
+
class Profile
|
|
5
|
+
|
|
6
|
+
attr_accessor :project_root, :name, :path
|
|
7
|
+
|
|
8
|
+
def initialize(name, project_root, path)
|
|
9
|
+
self.project_root = project_root
|
|
10
|
+
self.name = name
|
|
11
|
+
self.path = path
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Create all files and directories related to a profile
|
|
15
|
+
def create
|
|
16
|
+
create_profile_directory
|
|
17
|
+
generate_manifests_file
|
|
18
|
+
generate_puppetfile
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Delete all files and directories related to a profile
|
|
22
|
+
def remove
|
|
23
|
+
`cd #{self.project_root} && rm -r puppet/profiles/#{relative_path}`
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Lists existing profiles
|
|
27
|
+
def self.list(project_root)
|
|
28
|
+
Dir.chdir("#{project_root}/puppet/profiles") { Dir.glob("**/manifests").map{ |f| File.dirname(f) } }
|
|
29
|
+
# Dir["#{project_root}/puppet/profiles/*"].map { |f| File.basename(f) }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Create the directories for the profile
|
|
33
|
+
def create_profile_directory
|
|
34
|
+
`cd #{self.project_root} && mkdir -p puppet/profiles/#{relative_path}/manifests`
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Generate the manifests init.pp file
|
|
38
|
+
def generate_manifests_file
|
|
39
|
+
manifests_template = Tilt::ERBTemplate.new("#{templates_path}/puppet/profiles/manifests/init.pp.erb")
|
|
40
|
+
File.open("#{absolute_path}/manifests/init.pp", 'w') do |f|
|
|
41
|
+
f.write manifests_template.render(nil, :profile => self)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Generate the Puppetfile
|
|
46
|
+
def generate_puppetfile
|
|
47
|
+
puppetfile_template = Tilt::ERBTemplate.new("#{templates_path}/puppet/profiles/Puppetfile.erb")
|
|
48
|
+
File.open("#{absolute_path}/Puppetfile", 'w') do |f|
|
|
49
|
+
f.write puppetfile_template.render(nil)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Path to the templates directory in the gem
|
|
54
|
+
def templates_path
|
|
55
|
+
File.join((File.expand_path '..', File.dirname(__FILE__)), 'templates')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Path to the profile directory in the project
|
|
59
|
+
def absolute_path
|
|
60
|
+
"#{self.project_root}/puppet/profiles/#{relative_path}"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Counts existing profiles
|
|
64
|
+
def self.profiles_count(project_root)
|
|
65
|
+
Bebox::Profile.list(project_root).count
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Check if the profile has a valid name
|
|
69
|
+
def self.valid_name?(name)
|
|
70
|
+
valid_name = (name =~ /\A[a-z][a-z0-9_]*\Z/).nil? ? false : true
|
|
71
|
+
valid_name && !Bebox::RESERVED_WORDS.include?(name)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Check if the profile has a valid path name
|
|
75
|
+
def self.valid_pathname?(pathname)
|
|
76
|
+
#Split the name and validate each path part
|
|
77
|
+
pathname.split('/').each do |path_child|
|
|
78
|
+
valid_name = (path_child =~ /\A[a-z][a-z0-9_]*\Z/).nil? ? false : true
|
|
79
|
+
valid_name && !Bebox::RESERVED_WORDS.include?(path_child)
|
|
80
|
+
return false unless valid_name
|
|
81
|
+
end
|
|
82
|
+
# Return true if all parts are valid
|
|
83
|
+
true
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Clean a path to make it valid
|
|
87
|
+
def self.cleanpath(path_name)
|
|
88
|
+
valid_path = Pathname.new(path_name).cleanpath.to_path.split('/').reject{|c| c.empty? }
|
|
89
|
+
return valid_path.nil? ? '' : valid_path.join('/')
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Create the profile path relative to the project
|
|
93
|
+
def relative_path
|
|
94
|
+
File.join("#{self.path}", "#{self.name}")
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Generate the namespace name from the profile relative path
|
|
98
|
+
def namespace_name
|
|
99
|
+
relative_path.gsub('/','::')
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
require 'tilt'
|
|
2
|
+
require 'bebox/environment'
|
|
3
|
+
require 'bebox/provision'
|
|
4
|
+
require 'bebox/logger'
|
|
5
|
+
|
|
6
|
+
module Bebox
|
|
7
|
+
class Project
|
|
8
|
+
|
|
9
|
+
include Bebox::Logger
|
|
10
|
+
|
|
11
|
+
attr_accessor :name, :vagrant_box_base, :parent_path, :vagrant_box_provider, :environments, :path, :created_at
|
|
12
|
+
|
|
13
|
+
def initialize(name, vagrant_box_base, parent_path, vagrant_box_provider, default_environments = [])
|
|
14
|
+
self.name = name
|
|
15
|
+
self.vagrant_box_base = vagrant_box_base
|
|
16
|
+
self.parent_path = parent_path
|
|
17
|
+
self.vagrant_box_provider = vagrant_box_provider
|
|
18
|
+
self.environments = []
|
|
19
|
+
self.path = "#{self.parent_path}/#{self.name}"
|
|
20
|
+
default_environments.each do |env|
|
|
21
|
+
self.environments << Bebox::Environment.new(env, self.path)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Project creation phase
|
|
26
|
+
def create
|
|
27
|
+
create_project_directory
|
|
28
|
+
create_puppet_base
|
|
29
|
+
create_project_config
|
|
30
|
+
create_checkpoints
|
|
31
|
+
info "Bundle project ..."
|
|
32
|
+
bundle_project
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Obtain the project name without 'bebox-' prefix
|
|
36
|
+
def shortname
|
|
37
|
+
self.name.gsub("bebox-", "")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Create project directory
|
|
41
|
+
def create_project_directory
|
|
42
|
+
`mkdir -p #{self.parent_path}/#{self.name}`
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Generate project config files
|
|
46
|
+
def create_project_config
|
|
47
|
+
# Create deploy directories
|
|
48
|
+
create_config_deploy_directories
|
|
49
|
+
# Generate dot files
|
|
50
|
+
generate_dot_bebox_file
|
|
51
|
+
generate_gitignore_file
|
|
52
|
+
# Generate ruby version file
|
|
53
|
+
generate_ruby_version
|
|
54
|
+
# Generate Capfile and deploy files
|
|
55
|
+
create_capfile
|
|
56
|
+
generate_deploy_file
|
|
57
|
+
# Generate Gemfile
|
|
58
|
+
create_gemfile
|
|
59
|
+
# Create the default environments
|
|
60
|
+
create_default_environments
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Get Project vagrant box provider from the .bebox file
|
|
64
|
+
def self.vagrant_box_provider_from_file(project_root)
|
|
65
|
+
project_config = YAML.load_file("#{project_root}/.bebox")
|
|
66
|
+
project_config['vagrant_box_provider']
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Get Project vagrant box base from the .bebox file
|
|
70
|
+
def self.vagrant_box_base_from_file(project_root)
|
|
71
|
+
project_config = YAML.load_file("#{project_root}/.bebox")
|
|
72
|
+
project_config['vagrant_box_base']
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Get short project name from the .bebox file
|
|
76
|
+
def self.shortname_from_file(project_root)
|
|
77
|
+
project_name = self.name_from_file(project_root)
|
|
78
|
+
project_name.gsub("bebox-", "")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Get Project name from the .bebox file
|
|
82
|
+
def self.name_from_file(project_root)
|
|
83
|
+
project_config = YAML.load_file("#{project_root}/.bebox")
|
|
84
|
+
project_config['project']
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Create rbenv local
|
|
88
|
+
def generate_ruby_version
|
|
89
|
+
File.open("#{self.path}/.ruby-version", 'w') do |f|
|
|
90
|
+
f.write RUBY_VERSION
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Generate .bebox file
|
|
95
|
+
def generate_dot_bebox_file
|
|
96
|
+
# Set the creation time for the project
|
|
97
|
+
self.created_at = DateTime.now.to_s
|
|
98
|
+
# Create the .bebox file from template
|
|
99
|
+
dotbebox_template = Tilt::ERBTemplate.new("#{Bebox::Project.templates_path}/project/dot_bebox.erb")
|
|
100
|
+
File.open("#{self.path}/.bebox", 'w') do |f|
|
|
101
|
+
f.write dotbebox_template.render(nil, project: self)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Generate .gitignore file
|
|
106
|
+
def generate_gitignore_file
|
|
107
|
+
gitignore_template = Tilt::ERBTemplate.new("#{Bebox::Project.templates_path}/project/gitignore.erb")
|
|
108
|
+
File.open("#{self.path}/.gitignore", 'w') do |f|
|
|
109
|
+
f.write gitignore_template.render(nil, steps: Bebox::PROVISION_STEP_NAMES)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Create templates directories
|
|
114
|
+
def create_templates_directories
|
|
115
|
+
`cd #{self.path} && mkdir -p templates/{roles,profiles}`
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Create the default base roles and profiles in the project
|
|
119
|
+
def copy_default_roles_profiles
|
|
120
|
+
# Copy default roles and profiles to project templates directory
|
|
121
|
+
`cp -R #{Bebox::Project.templates_path}/puppet/default_roles/* #{self.path}/templates/roles/`
|
|
122
|
+
`cp -R #{Bebox::Project.templates_path}/puppet/default_profiles/* #{self.path}/templates/profiles/`
|
|
123
|
+
# Copy default roles and profiles to project roles and profiles available
|
|
124
|
+
`cp -R #{Bebox::Project.templates_path}/puppet/default_roles/* #{self.path}/puppet/roles/`
|
|
125
|
+
`cp -R #{Bebox::Project.templates_path}/puppet/default_profiles/* #{self.path}/puppet/profiles/`
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Create config deploy and keys directories
|
|
129
|
+
def create_config_deploy_directories
|
|
130
|
+
`cd #{self.path} && mkdir -p config/{deploy,keys/environments}`
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Create the default environments
|
|
134
|
+
def create_default_environments
|
|
135
|
+
self.environments.map{|environment| environment.create}
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Create Capfile for the project
|
|
139
|
+
def create_capfile
|
|
140
|
+
capfile_content = File.read("#{Bebox::Project.templates_path}/project/Capfile.erb")
|
|
141
|
+
File::open("#{self.path}/Capfile", "w")do |f|
|
|
142
|
+
f.write(capfile_content)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Create Gemfile for the project
|
|
147
|
+
def create_gemfile
|
|
148
|
+
gemfile_content = File.read("#{Bebox::Project.templates_path}/project/Gemfile.erb")
|
|
149
|
+
File::open("#{self.path}/Gemfile", "w")do |f|
|
|
150
|
+
f.write(gemfile_content)
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Create puppet base directories and files
|
|
155
|
+
def create_puppet_base
|
|
156
|
+
# Create templates directories
|
|
157
|
+
create_templates_directories
|
|
158
|
+
# Generate SO dependencies files
|
|
159
|
+
generate_so_dependencies_files
|
|
160
|
+
# Copy puppet install files
|
|
161
|
+
copy_puppet_install_files
|
|
162
|
+
# Generate steps directories
|
|
163
|
+
generate_steps_directories
|
|
164
|
+
# Generate steps templates
|
|
165
|
+
generate_steps_templates
|
|
166
|
+
# Copy the default_roles and default_profiles to project
|
|
167
|
+
copy_default_roles_profiles
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Generate steps directories
|
|
171
|
+
def generate_steps_directories
|
|
172
|
+
Bebox::PROVISION_STEP_NAMES.each{|step| `cd #{self.path} && mkdir -p puppet/steps/#{step}/{hiera/data,manifests,modules}`}
|
|
173
|
+
`cd #{self.path} && mkdir -p puppet/{roles,profiles}`
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Generate steps templates for hiera and manifests files
|
|
177
|
+
def generate_steps_templates
|
|
178
|
+
Bebox::PROVISION_STEPS.each do |step|
|
|
179
|
+
ssh_key = ''
|
|
180
|
+
step_dir = Bebox::Provision.step_name(step)
|
|
181
|
+
templates_path = Bebox::Project::templates_path
|
|
182
|
+
# Generate site.pp template
|
|
183
|
+
manifest_template = Tilt::ERBTemplate.new("#{templates_path}/puppet/#{step}/manifests/site.pp.erb")
|
|
184
|
+
File.open("#{self.path}/puppet/steps/#{step_dir}/manifests/site.pp", 'w') do |f|
|
|
185
|
+
f.write manifest_template.render(nil, :nodes => [])
|
|
186
|
+
end
|
|
187
|
+
# Generate hiera.yaml template
|
|
188
|
+
hiera_template = Tilt::ERBTemplate.new("#{templates_path}/puppet/#{step}/hiera/hiera.yaml.erb")
|
|
189
|
+
File.open("#{self.path}/puppet/steps/#{step_dir}/hiera/hiera.yaml", 'w') do |f|
|
|
190
|
+
f.write hiera_template.render(nil, :step_dir => step_dir)
|
|
191
|
+
end
|
|
192
|
+
# Generate common.yaml template
|
|
193
|
+
hiera_template = Tilt::ERBTemplate.new("#{templates_path}/puppet/#{step}/hiera/data/common.yaml.erb")
|
|
194
|
+
File.open("#{self.path}/puppet/steps/#{step_dir}/hiera/data/common.yaml", 'w') do |f|
|
|
195
|
+
f.write hiera_template.render(nil, :step_dir => step_dir, :ssh_key => ssh_key, :project_name => self.shortname)
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# Copy puppet install files
|
|
201
|
+
def copy_puppet_install_files
|
|
202
|
+
`cd #{self.path} && mkdir -p puppet/lib/deb`
|
|
203
|
+
`cp -R #{lib_path}/deb/* #{self.path}/puppet/lib/deb/`
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# Generate SO dependencies files
|
|
207
|
+
def generate_so_dependencies_files
|
|
208
|
+
`cd #{self.path} && mkdir -p puppet/prepare/dependencies/ubuntu`
|
|
209
|
+
ubuntu_dependencies_content = File.read("#{Bebox::Project.templates_path}/project/ubuntu_dependencies")
|
|
210
|
+
File::open("#{self.path}/puppet/prepare/dependencies/ubuntu/packages", "w")do |f|
|
|
211
|
+
f.write(ubuntu_dependencies_content)
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def self.so_dependencies
|
|
216
|
+
File.read("#{Bebox::Project.templates_path}/project/ubuntu_dependencies").gsub(/\s+/, ' ')
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Create checkpoints base directories
|
|
220
|
+
def create_checkpoints
|
|
221
|
+
`cd #{self.path} && mkdir -p .checkpoints/environments`
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
# Bundle install packages for project
|
|
225
|
+
def bundle_project
|
|
226
|
+
system("cd #{self.path} && BUNDLE_GEMFILE=Gemfile bundle install")
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
# Generate the deploy file for the project
|
|
230
|
+
def generate_deploy_file
|
|
231
|
+
config_deploy_template = Tilt::ERBTemplate.new("#{Bebox::Project.templates_path}/project/config/deploy.erb")
|
|
232
|
+
File.open("#{self.path}/config/deploy.rb", 'w') do |f|
|
|
233
|
+
f.write config_deploy_template.render(nil, project: self)
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# Path to the lib directory in the gem
|
|
238
|
+
def lib_path
|
|
239
|
+
File.expand_path '..', File.dirname(__FILE__)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Path to the templates directory in the gem
|
|
243
|
+
def self.templates_path
|
|
244
|
+
# File.expand_path(File.join(File.dirname(__FILE__), "..", "gems/bundler/lib/templates"))
|
|
245
|
+
File.join((File.expand_path '..', File.dirname(__FILE__)), 'templates')
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
# Obtain the ssh public key from file in environment
|
|
249
|
+
def self.public_ssh_key_from_file(project_root, environment)
|
|
250
|
+
ssh_key_path = "#{project_root}/config/keys/environments/#{environment}/id_rsa.pub"
|
|
251
|
+
return (File.exist?(ssh_key_path)) ? File.read(ssh_key_path).strip : ''
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Delete all files referent to a project
|
|
255
|
+
def destroy
|
|
256
|
+
`cd #{self.parent_path} && rm -rf #{self.name}`
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
end
|