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/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_augeas.rb
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
newfunction(:validate_augeas, :doc => <<-'ENDHEREDOC') do |args|
|
|
3
|
+
Perform validation of a string using an Augeas lens
|
|
4
|
+
The first argument of this function should be a string to
|
|
5
|
+
test, and the second argument should be the name of the Augeas lens to use.
|
|
6
|
+
If Augeas fails to parse the string with the lens, the compilation will
|
|
7
|
+
abort with a parse error.
|
|
8
|
+
|
|
9
|
+
A third argument can be specified, listing paths which should
|
|
10
|
+
not be found in the file. The `$file` variable points to the location
|
|
11
|
+
of the temporary file being tested in the Augeas tree.
|
|
12
|
+
|
|
13
|
+
For example, if you want to make sure your passwd content never contains
|
|
14
|
+
a user `foo`, you could write:
|
|
15
|
+
|
|
16
|
+
validate_augeas($passwdcontent, 'Passwd.lns', ['$file/foo'])
|
|
17
|
+
|
|
18
|
+
Or if you wanted to ensure that no users used the '/bin/barsh' shell,
|
|
19
|
+
you could use:
|
|
20
|
+
|
|
21
|
+
validate_augeas($passwdcontent, 'Passwd.lns', ['$file/*[shell="/bin/barsh"]']
|
|
22
|
+
|
|
23
|
+
If a fourth argument is specified, this will be the error message raised and
|
|
24
|
+
seen by the user.
|
|
25
|
+
|
|
26
|
+
A helpful error message can be returned like this:
|
|
27
|
+
|
|
28
|
+
validate_augeas($sudoerscontent, 'Sudoers.lns', [], 'Failed to validate sudoers content with Augeas')
|
|
29
|
+
|
|
30
|
+
ENDHEREDOC
|
|
31
|
+
unless Puppet.features.augeas?
|
|
32
|
+
raise Puppet::ParseError, ("validate_augeas(): this function requires the augeas feature. See http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Augeas#Pre-requisites for how to activate it.")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
if (args.length < 2) or (args.length > 4) then
|
|
36
|
+
raise Puppet::ParseError, ("validate_augeas(): wrong number of arguments (#{args.length}; must be 2, 3, or 4)")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
msg = args[3] || "validate_augeas(): Failed to validate content against #{args[1].inspect}"
|
|
40
|
+
|
|
41
|
+
require 'augeas'
|
|
42
|
+
aug = Augeas::open(nil, nil, Augeas::NO_MODL_AUTOLOAD)
|
|
43
|
+
begin
|
|
44
|
+
content = args[0]
|
|
45
|
+
|
|
46
|
+
# Test content in a temporary file
|
|
47
|
+
tmpfile = Tempfile.new("validate_augeas")
|
|
48
|
+
begin
|
|
49
|
+
tmpfile.write(content)
|
|
50
|
+
ensure
|
|
51
|
+
tmpfile.close
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Check for syntax
|
|
55
|
+
lens = args[1]
|
|
56
|
+
aug.transform(
|
|
57
|
+
:lens => lens,
|
|
58
|
+
:name => 'Validate_augeas',
|
|
59
|
+
:incl => tmpfile.path
|
|
60
|
+
)
|
|
61
|
+
aug.load!
|
|
62
|
+
|
|
63
|
+
unless aug.match("/augeas/files#{tmpfile.path}//error").empty?
|
|
64
|
+
error = aug.get("/augeas/files#{tmpfile.path}//error/message")
|
|
65
|
+
msg += " with error: #{error}"
|
|
66
|
+
raise Puppet::ParseError, (msg)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Launch unit tests
|
|
70
|
+
tests = args[2] || []
|
|
71
|
+
aug.defvar('file', "/files#{tmpfile.path}")
|
|
72
|
+
tests.each do |t|
|
|
73
|
+
msg += " testing path #{t}"
|
|
74
|
+
raise Puppet::ParseError, (msg) unless aug.match(t).empty?
|
|
75
|
+
end
|
|
76
|
+
ensure
|
|
77
|
+
aug.close
|
|
78
|
+
tmpfile.unlink
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:validate_bool, :doc => <<-'ENDHEREDOC') do |args|
|
|
4
|
+
Validate that all passed values are either true or false. Abort catalog
|
|
5
|
+
compilation if any value fails this check.
|
|
6
|
+
|
|
7
|
+
The following values will pass:
|
|
8
|
+
|
|
9
|
+
$iamtrue = true
|
|
10
|
+
validate_bool(true)
|
|
11
|
+
validate_bool(true, true, false, $iamtrue)
|
|
12
|
+
|
|
13
|
+
The following values will fail, causing compilation to abort:
|
|
14
|
+
|
|
15
|
+
$some_array = [ true ]
|
|
16
|
+
validate_bool("false")
|
|
17
|
+
validate_bool("true")
|
|
18
|
+
validate_bool($some_array)
|
|
19
|
+
|
|
20
|
+
ENDHEREDOC
|
|
21
|
+
|
|
22
|
+
unless args.length > 0 then
|
|
23
|
+
raise Puppet::ParseError, ("validate_bool(): wrong number of arguments (#{args.length}; must be > 0)")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
args.each do |arg|
|
|
27
|
+
unless function_is_bool([arg])
|
|
28
|
+
raise Puppet::ParseError, ("#{arg.inspect} is not a boolean. It looks to be a #{arg.class}")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'puppet/util/execution'
|
|
2
|
+
|
|
3
|
+
module Puppet::Parser::Functions
|
|
4
|
+
newfunction(:validate_cmd, :doc => <<-'ENDHEREDOC') do |args|
|
|
5
|
+
Perform validation of a string with an external command.
|
|
6
|
+
The first argument of this function should be a string to
|
|
7
|
+
test, and the second argument should be a path to a test command
|
|
8
|
+
taking a file as last argument. If the command, launched against
|
|
9
|
+
a tempfile containing the passed string, returns a non-null value,
|
|
10
|
+
compilation will abort with a parse error.
|
|
11
|
+
|
|
12
|
+
If a third argument is specified, this will be the error message raised and
|
|
13
|
+
seen by the user.
|
|
14
|
+
|
|
15
|
+
A helpful error message can be returned like this:
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
|
|
19
|
+
validate_cmd($sudoerscontent, '/usr/sbin/visudo -c -f', 'Visudo failed to validate sudoers content')
|
|
20
|
+
|
|
21
|
+
ENDHEREDOC
|
|
22
|
+
if (args.length < 2) or (args.length > 3) then
|
|
23
|
+
raise Puppet::ParseError, ("validate_cmd(): wrong number of arguments (#{args.length}; must be 2 or 3)")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
msg = args[2] || "validate_cmd(): failed to validate content with command #{args[1].inspect}"
|
|
27
|
+
|
|
28
|
+
content = args[0]
|
|
29
|
+
checkscript = args[1]
|
|
30
|
+
|
|
31
|
+
# Test content in a temporary file
|
|
32
|
+
tmpfile = Tempfile.new("validate_cmd")
|
|
33
|
+
begin
|
|
34
|
+
tmpfile.write(content)
|
|
35
|
+
tmpfile.close
|
|
36
|
+
if Puppet::Util::Execution.respond_to?('execute')
|
|
37
|
+
Puppet::Util::Execution.execute("#{checkscript} #{tmpfile.path}")
|
|
38
|
+
else
|
|
39
|
+
Puppet::Util.execute("#{checkscript} #{tmpfile.path}")
|
|
40
|
+
end
|
|
41
|
+
rescue Puppet::ExecutionFailure => detail
|
|
42
|
+
msg += "\n#{detail}"
|
|
43
|
+
raise Puppet::ParseError, msg
|
|
44
|
+
ensure
|
|
45
|
+
tmpfile.unlink
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:validate_hash, :doc => <<-'ENDHEREDOC') do |args|
|
|
4
|
+
Validate that all passed values are hash data structures. Abort catalog
|
|
5
|
+
compilation if any value fails this check.
|
|
6
|
+
|
|
7
|
+
The following values will pass:
|
|
8
|
+
|
|
9
|
+
$my_hash = { 'one' => 'two' }
|
|
10
|
+
validate_hash($my_hash)
|
|
11
|
+
|
|
12
|
+
The following values will fail, causing compilation to abort:
|
|
13
|
+
|
|
14
|
+
validate_hash(true)
|
|
15
|
+
validate_hash('some_string')
|
|
16
|
+
$undefined = undef
|
|
17
|
+
validate_hash($undefined)
|
|
18
|
+
|
|
19
|
+
ENDHEREDOC
|
|
20
|
+
|
|
21
|
+
unless args.length > 0 then
|
|
22
|
+
raise Puppet::ParseError, ("validate_hash(): wrong number of arguments (#{args.length}; must be > 0)")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
args.each do |arg|
|
|
26
|
+
unless arg.is_a?(Hash)
|
|
27
|
+
raise Puppet::ParseError, ("#{arg.inspect} is not a Hash. It looks to be a #{arg.class}")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv4_address.rb
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:validate_ipv4_address, :doc => <<-ENDHEREDOC
|
|
4
|
+
Validate that all values passed are valid IPv4 addresses.
|
|
5
|
+
Fail compilation if any value fails this check.
|
|
6
|
+
|
|
7
|
+
The following values will pass:
|
|
8
|
+
|
|
9
|
+
$my_ip = "1.2.3.4"
|
|
10
|
+
validate_ipv4_address($my_ip)
|
|
11
|
+
validate_bool("8.8.8.8", "172.16.0.1", $my_ip)
|
|
12
|
+
|
|
13
|
+
The following values will fail, causing compilation to abort:
|
|
14
|
+
|
|
15
|
+
$some_array = [ 1, true, false, "garbage string", "3ffe:505:2" ]
|
|
16
|
+
validate_ipv4_address($some_array)
|
|
17
|
+
|
|
18
|
+
ENDHEREDOC
|
|
19
|
+
) do |args|
|
|
20
|
+
|
|
21
|
+
require "ipaddr"
|
|
22
|
+
rescuable_exceptions = [ ArgumentError ]
|
|
23
|
+
|
|
24
|
+
if defined?(IPAddr::InvalidAddressError)
|
|
25
|
+
rescuable_exceptions << IPAddr::InvalidAddressError
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
unless args.length > 0 then
|
|
29
|
+
raise Puppet::ParseError, ("validate_ipv4_address(): wrong number of arguments (#{args.length}; must be > 0)")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
args.each do |arg|
|
|
33
|
+
unless arg.is_a?(String)
|
|
34
|
+
raise Puppet::ParseError, "#{arg.inspect} is not a string."
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
begin
|
|
38
|
+
unless IPAddr.new(arg).ipv4?
|
|
39
|
+
raise Puppet::ParseError, "#{arg.inspect} is not a valid IPv4 address."
|
|
40
|
+
end
|
|
41
|
+
rescue *rescuable_exceptions
|
|
42
|
+
raise Puppet::ParseError, "#{arg.inspect} is not a valid IPv4 address."
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv6_address.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:validate_ipv6_address, :doc => <<-ENDHEREDOC
|
|
4
|
+
Validate that all values passed are valid IPv6 addresses.
|
|
5
|
+
Fail compilation if any value fails this check.
|
|
6
|
+
|
|
7
|
+
The following values will pass:
|
|
8
|
+
|
|
9
|
+
$my_ip = "3ffe:505:2"
|
|
10
|
+
validate_ipv6_address(1)
|
|
11
|
+
validate_ipv6_address($my_ip)
|
|
12
|
+
validate_bool("fe80::baf6:b1ff:fe19:7507", $my_ip)
|
|
13
|
+
|
|
14
|
+
The following values will fail, causing compilation to abort:
|
|
15
|
+
|
|
16
|
+
$some_array = [ true, false, "garbage string", "1.2.3.4" ]
|
|
17
|
+
validate_ipv6_address($some_array)
|
|
18
|
+
|
|
19
|
+
ENDHEREDOC
|
|
20
|
+
) do |args|
|
|
21
|
+
|
|
22
|
+
require "ipaddr"
|
|
23
|
+
rescuable_exceptions = [ ArgumentError ]
|
|
24
|
+
|
|
25
|
+
if defined?(IPAddr::InvalidAddressError)
|
|
26
|
+
rescuable_exceptions << IPAddr::InvalidAddressError
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
unless args.length > 0 then
|
|
30
|
+
raise Puppet::ParseError, ("validate_ipv6_address(): wrong number of arguments (#{args.length}; must be > 0)")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
args.each do |arg|
|
|
34
|
+
unless arg.is_a?(String)
|
|
35
|
+
raise Puppet::ParseError, "#{arg.inspect} is not a string."
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
begin
|
|
39
|
+
unless IPAddr.new(arg).ipv6?
|
|
40
|
+
raise Puppet::ParseError, "#{arg.inspect} is not a valid IPv6 address."
|
|
41
|
+
end
|
|
42
|
+
rescue *rescuable_exceptions
|
|
43
|
+
raise Puppet::ParseError, "#{arg.inspect} is not a valid IPv6 address."
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
newfunction(:validate_re, :doc => <<-'ENDHEREDOC') do |args|
|
|
3
|
+
Perform simple validation of a string against one or more regular
|
|
4
|
+
expressions. The first argument of this function should be a string to
|
|
5
|
+
test, and the second argument should be a stringified regular expression
|
|
6
|
+
(without the // delimiters) or an array of regular expressions. If none
|
|
7
|
+
of the regular expressions match the string passed in, compilation will
|
|
8
|
+
abort with a parse error.
|
|
9
|
+
|
|
10
|
+
If a third argument is specified, this will be the error message raised and
|
|
11
|
+
seen by the user.
|
|
12
|
+
|
|
13
|
+
The following strings will validate against the regular expressions:
|
|
14
|
+
|
|
15
|
+
validate_re('one', '^one$')
|
|
16
|
+
validate_re('one', [ '^one', '^two' ])
|
|
17
|
+
|
|
18
|
+
The following strings will fail to validate, causing compilation to abort:
|
|
19
|
+
|
|
20
|
+
validate_re('one', [ '^two', '^three' ])
|
|
21
|
+
|
|
22
|
+
A helpful error message can be returned like this:
|
|
23
|
+
|
|
24
|
+
validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7')
|
|
25
|
+
|
|
26
|
+
ENDHEREDOC
|
|
27
|
+
if (args.length < 2) or (args.length > 3) then
|
|
28
|
+
raise Puppet::ParseError, ("validate_re(): wrong number of arguments (#{args.length}; must be 2 or 3)")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
msg = args[2] || "validate_re(): #{args[0].inspect} does not match #{args[1].inspect}"
|
|
32
|
+
|
|
33
|
+
# We're using a flattened array here because we can't call String#any? in
|
|
34
|
+
# Ruby 1.9 like we can in Ruby 1.8
|
|
35
|
+
raise Puppet::ParseError, (msg) unless [args[1]].flatten.any? do |re_str|
|
|
36
|
+
args[0] =~ Regexp.compile(re_str)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:validate_slength, :doc => <<-'ENDHEREDOC') do |args|
|
|
4
|
+
Validate that the first argument is a string (or an array of strings), and
|
|
5
|
+
less/equal to than the length of the second argument. An optional third
|
|
6
|
+
parameter can be given a the minimum length. It fails if the first
|
|
7
|
+
argument is not a string or array of strings, and if arg 2 and arg 3 are
|
|
8
|
+
not convertable to a number.
|
|
9
|
+
|
|
10
|
+
The following values will pass:
|
|
11
|
+
|
|
12
|
+
validate_slength("discombobulate",17)
|
|
13
|
+
validate_slength(["discombobulate","moo"],17)
|
|
14
|
+
validate_slength(["discombobulate","moo"],17,3)
|
|
15
|
+
|
|
16
|
+
The following valueis will not:
|
|
17
|
+
|
|
18
|
+
validate_slength("discombobulate",1)
|
|
19
|
+
validate_slength(["discombobulate","thermometer"],5)
|
|
20
|
+
validate_slength(["discombobulate","moo"],17,10)
|
|
21
|
+
|
|
22
|
+
ENDHEREDOC
|
|
23
|
+
|
|
24
|
+
raise Puppet::ParseError, "validate_slength(): Wrong number of arguments (#{args.length}; must be 2 or 3)" unless args.length == 2 or args.length == 3
|
|
25
|
+
|
|
26
|
+
input, max_length, min_length = *args
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
max_length = Integer(max_length)
|
|
30
|
+
raise ArgumentError if max_length <= 0
|
|
31
|
+
rescue ArgumentError, TypeError
|
|
32
|
+
raise Puppet::ParseError, "validate_slength(): Expected second argument to be a positive Numeric, got #{max_length}:#{max_length.class}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
if min_length
|
|
36
|
+
begin
|
|
37
|
+
min_length = Integer(min_length)
|
|
38
|
+
raise ArgumentError if min_length < 0
|
|
39
|
+
rescue ArgumentError, TypeError
|
|
40
|
+
raise Puppet::ParseError, "validate_slength(): Expected third argument to be unset or a positive Numeric, got #{min_length}:#{min_length.class}"
|
|
41
|
+
end
|
|
42
|
+
else
|
|
43
|
+
min_length = 0
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
if min_length > max_length
|
|
47
|
+
raise Puppet::ParseError, "validate_slength(): Expected second argument to be larger than third argument"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
validator = lambda do |str|
|
|
51
|
+
unless str.length <= max_length and str.length >= min_length
|
|
52
|
+
raise Puppet::ParseError, "validate_slength(): Expected length of #{input.inspect} to be between #{min_length} and #{max_length}, was #{input.length}"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
case input
|
|
57
|
+
when String
|
|
58
|
+
validator.call(input)
|
|
59
|
+
when Array
|
|
60
|
+
input.each_with_index do |arg, pos|
|
|
61
|
+
if arg.is_a? String
|
|
62
|
+
validator.call(arg)
|
|
63
|
+
else
|
|
64
|
+
raise Puppet::ParseError, "validate_slength(): Expected element at array position #{pos} to be a String, got #{arg.class}"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
raise Puppet::ParseError, "validate_slength(): Expected first argument to be a String or Array, got #{input.class}"
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_string.rb
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:validate_string, :doc => <<-'ENDHEREDOC') do |args|
|
|
4
|
+
Validate that all passed values are string data structures. Abort catalog
|
|
5
|
+
compilation if any value fails this check.
|
|
6
|
+
|
|
7
|
+
The following values will pass:
|
|
8
|
+
|
|
9
|
+
$my_string = "one two"
|
|
10
|
+
validate_string($my_string, 'three')
|
|
11
|
+
|
|
12
|
+
The following values will fail, causing compilation to abort:
|
|
13
|
+
|
|
14
|
+
validate_string(true)
|
|
15
|
+
validate_string([ 'some', 'array' ])
|
|
16
|
+
$undefined = undef
|
|
17
|
+
validate_string($undefined)
|
|
18
|
+
|
|
19
|
+
ENDHEREDOC
|
|
20
|
+
|
|
21
|
+
unless args.length > 0 then
|
|
22
|
+
raise Puppet::ParseError, ("validate_string(): wrong number of arguments (#{args.length}; must be > 0)")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
args.each do |arg|
|
|
26
|
+
unless arg.is_a?(String)
|
|
27
|
+
raise Puppet::ParseError, ("#{arg.inspect} is not a string. It looks to be a #{arg.class}")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#
|
|
2
|
+
# values.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:values, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
When given a hash this function will return the values of that hash.
|
|
8
|
+
|
|
9
|
+
*Examples:*
|
|
10
|
+
|
|
11
|
+
$hash = {
|
|
12
|
+
'a' => 1,
|
|
13
|
+
'b' => 2,
|
|
14
|
+
'c' => 3,
|
|
15
|
+
}
|
|
16
|
+
values($hash)
|
|
17
|
+
|
|
18
|
+
This example would return:
|
|
19
|
+
|
|
20
|
+
[1,2,3]
|
|
21
|
+
EOS
|
|
22
|
+
) do |arguments|
|
|
23
|
+
|
|
24
|
+
raise(Puppet::ParseError, "values(): Wrong number of arguments " +
|
|
25
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
26
|
+
|
|
27
|
+
hash = arguments[0]
|
|
28
|
+
|
|
29
|
+
unless hash.is_a?(Hash)
|
|
30
|
+
raise(Puppet::ParseError, 'values(): Requires hash to work with')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
result = hash.values
|
|
34
|
+
|
|
35
|
+
return result
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#
|
|
2
|
+
# values_at.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:values_at, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Finds value inside an array based on location.
|
|
8
|
+
|
|
9
|
+
The first argument is the array you want to analyze, and the second element can
|
|
10
|
+
be a combination of:
|
|
11
|
+
|
|
12
|
+
* A single numeric index
|
|
13
|
+
* A range in the form of 'start-stop' (eg. 4-9)
|
|
14
|
+
* An array combining the above
|
|
15
|
+
|
|
16
|
+
*Examples*:
|
|
17
|
+
|
|
18
|
+
values_at(['a','b','c'], 2)
|
|
19
|
+
|
|
20
|
+
Would return ['c'].
|
|
21
|
+
|
|
22
|
+
values_at(['a','b','c'], ["0-1"])
|
|
23
|
+
|
|
24
|
+
Would return ['a','b'].
|
|
25
|
+
|
|
26
|
+
values_at(['a','b','c','d','e'], [0, "2-3"])
|
|
27
|
+
|
|
28
|
+
Would return ['a','c','d'].
|
|
29
|
+
EOS
|
|
30
|
+
) do |arguments|
|
|
31
|
+
|
|
32
|
+
raise(Puppet::ParseError, "values_at(): Wrong number of " +
|
|
33
|
+
"arguments given (#{arguments.size} for 2)") if arguments.size < 2
|
|
34
|
+
|
|
35
|
+
array = arguments.shift
|
|
36
|
+
|
|
37
|
+
unless array.is_a?(Array)
|
|
38
|
+
raise(Puppet::ParseError, 'values_at(): Requires array to work with')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
indices = [arguments.shift].flatten() # Get them all ... Pokemon ...
|
|
42
|
+
|
|
43
|
+
if not indices or indices.empty?
|
|
44
|
+
raise(Puppet::ParseError, 'values_at(): You must provide ' +
|
|
45
|
+
'at least one positive index to collect')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
result = []
|
|
49
|
+
indices_list = []
|
|
50
|
+
|
|
51
|
+
indices.each do |i|
|
|
52
|
+
if m = i.match(/^(\d+)(\.\.\.?|\-)(\d+)$/)
|
|
53
|
+
start = m[1].to_i
|
|
54
|
+
stop = m[3].to_i
|
|
55
|
+
|
|
56
|
+
type = m[2]
|
|
57
|
+
|
|
58
|
+
if start > stop
|
|
59
|
+
raise(Puppet::ParseError, 'values_at(): Stop index in ' +
|
|
60
|
+
'given indices range is smaller than the start index')
|
|
61
|
+
elsif stop > array.size - 1 # First element is at index 0 is it not?
|
|
62
|
+
raise(Puppet::ParseError, 'values_at(): Stop index in ' +
|
|
63
|
+
'given indices range exceeds array size')
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
range = case type
|
|
67
|
+
when /^(\.\.|\-)$/ then (start .. stop)
|
|
68
|
+
when /^(\.\.\.)$/ then (start ... stop) # Exclusive of last element ...
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
range.each { |i| indices_list << i.to_i }
|
|
72
|
+
else
|
|
73
|
+
# Only positive numbers allowed in this case ...
|
|
74
|
+
if not i.match(/^\d+$/)
|
|
75
|
+
raise(Puppet::ParseError, 'values_at(): Unknown format ' +
|
|
76
|
+
'of given index')
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# In Puppet numbers are often string-encoded ...
|
|
80
|
+
i = i.to_i
|
|
81
|
+
|
|
82
|
+
if i > array.size - 1 # Same story. First element is at index 0 ...
|
|
83
|
+
raise(Puppet::ParseError, 'values_at(): Given index ' +
|
|
84
|
+
'exceeds array size')
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
indices_list << i
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# We remove nil values as they make no sense in Puppet DSL ...
|
|
92
|
+
result = indices_list.collect { |i| array[i] }.compact
|
|
93
|
+
|
|
94
|
+
return result
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#
|
|
2
|
+
# zip.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:zip, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Takes one element from first array and merges corresponding elements from second array. This generates a sequence of n-element arrays, where n is one more than the count of arguments.
|
|
8
|
+
|
|
9
|
+
*Example:*
|
|
10
|
+
|
|
11
|
+
zip(['1','2','3'],['4','5','6'])
|
|
12
|
+
|
|
13
|
+
Would result in:
|
|
14
|
+
|
|
15
|
+
["1", "4"], ["2", "5"], ["3", "6"]
|
|
16
|
+
EOS
|
|
17
|
+
) do |arguments|
|
|
18
|
+
|
|
19
|
+
# Technically we support three arguments but only first is mandatory ...
|
|
20
|
+
raise(Puppet::ParseError, "zip(): Wrong number of arguments " +
|
|
21
|
+
"given (#{arguments.size} for 2)") if arguments.size < 2
|
|
22
|
+
|
|
23
|
+
a = arguments[0]
|
|
24
|
+
b = arguments[1]
|
|
25
|
+
|
|
26
|
+
unless a.is_a?(Array) and b.is_a?(Array)
|
|
27
|
+
raise(Puppet::ParseError, 'zip(): Requires array to work with')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
flatten = arguments[2] if arguments[2]
|
|
31
|
+
|
|
32
|
+
if flatten
|
|
33
|
+
klass = flatten.class
|
|
34
|
+
|
|
35
|
+
# We can have either true or false, or string which resembles boolean ...
|
|
36
|
+
unless [FalseClass, TrueClass, String].include?(klass)
|
|
37
|
+
raise(Puppet::ParseError, 'zip(): Requires either ' +
|
|
38
|
+
'boolean or string to work with')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
if flatten.is_a?(String)
|
|
42
|
+
# We consider all the yes, no, y, n and so on too ...
|
|
43
|
+
flatten = case flatten
|
|
44
|
+
#
|
|
45
|
+
# This is how undef looks like in Puppet ...
|
|
46
|
+
# We yield false in this case.
|
|
47
|
+
#
|
|
48
|
+
when /^$/, '' then false # Empty string will be false ...
|
|
49
|
+
when /^(1|t|y|true|yes)$/ then true
|
|
50
|
+
when /^(0|f|n|false|no)$/ then false
|
|
51
|
+
when /^(undef|undefined)$/ then false # This is not likely to happen ...
|
|
52
|
+
else
|
|
53
|
+
raise(Puppet::ParseError, 'zip(): Unknown type of boolean given')
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
result = a.zip(b)
|
|
59
|
+
result = flatten ? result.flatten : result
|
|
60
|
+
|
|
61
|
+
return result
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# vim: set ts=2 sw=2 et :
|