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.
Files changed (402) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +78 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +163 -0
  5. data/LICENSE +21 -0
  6. data/README.md +372 -0
  7. data/Rakefile +8 -0
  8. data/bebox.gemspec +40 -0
  9. data/bin/bebox +5 -0
  10. data/lib/bebox/cli.rb +42 -0
  11. data/lib/bebox/commands/commands_helper.rb +33 -0
  12. data/lib/bebox/commands/environment_commands.rb +46 -0
  13. data/lib/bebox/commands/general_commands.rb +24 -0
  14. data/lib/bebox/commands/node_commands.rb +68 -0
  15. data/lib/bebox/commands/prepare_commands.rb +59 -0
  16. data/lib/bebox/commands/project_commands.rb +44 -0
  17. data/lib/bebox/commands/provision_commands.rb +145 -0
  18. data/lib/bebox/environment.rb +114 -0
  19. data/lib/bebox/logger.rb +51 -0
  20. data/lib/bebox/node.rb +308 -0
  21. data/lib/bebox/profile.rb +102 -0
  22. data/lib/bebox/project.rb +259 -0
  23. data/lib/bebox/provision.rb +257 -0
  24. data/lib/bebox/role.rb +103 -0
  25. data/lib/bebox/version.rb +3 -0
  26. data/lib/bebox/wizards/environment_wizard.rb +45 -0
  27. data/lib/bebox/wizards/node_wizard.rb +163 -0
  28. data/lib/bebox/wizards/profile_wizard.rb +91 -0
  29. data/lib/bebox/wizards/project_wizard.rb +175 -0
  30. data/lib/bebox/wizards/provision_wizard.rb +80 -0
  31. data/lib/bebox/wizards/role_wizard.rb +97 -0
  32. data/lib/bebox.rb +2 -0
  33. data/lib/deb/puppet_3.6.0/augeas-lenses_0.10.0-0ubuntu4_all.deb +0 -0
  34. data/lib/deb/puppet_3.6.0/debconf-utils_1.5.42ubuntu1_all.deb +0 -0
  35. data/lib/deb/puppet_3.6.0/facter_2.0.1-1puppetlabs1_amd64.deb +0 -0
  36. data/lib/deb/puppet_3.6.0/hiera_1.3.2-1puppetlabs1_all.deb +0 -0
  37. data/lib/deb/puppet_3.6.0/libaugeas-ruby1.8_0.3.0-1.1ubuntu4_amd64.deb +0 -0
  38. data/lib/deb/puppet_3.6.0/libaugeas-ruby_0.3.0-1.1ubuntu4_all.deb +0 -0
  39. data/lib/deb/puppet_3.6.0/libaugeas0_0.10.0-0ubuntu4_amd64.deb +0 -0
  40. data/lib/deb/puppet_3.6.0/libjson-ruby_1.6.3-1_all.deb +0 -0
  41. data/lib/deb/puppet_3.6.0/libruby1.8_1.8.7.352-2ubuntu1.4_amd64.deb +0 -0
  42. data/lib/deb/puppet_3.6.0/libruby_4.8_all.deb +0 -0
  43. data/lib/deb/puppet_3.6.0/libshadow-ruby1.8_1.4.1-8build1_amd64.deb +0 -0
  44. data/lib/deb/puppet_3.6.0/puppet-common_3.6.0-1puppetlabs1_all.deb +0 -0
  45. data/lib/deb/puppet_3.6.0/puppet_3.6.0-1puppetlabs1_all.deb +0 -0
  46. data/lib/deb/puppet_3.6.0/ruby-json_1.6.3-1_amd64.deb +0 -0
  47. data/lib/deb/puppet_3.6.0/ruby-rgen_0.6.5-1puppetlabs1_all.deb +0 -0
  48. data/lib/deb/puppet_3.6.0/ruby1.8_1.8.7.352-2ubuntu1.4_amd64.deb +0 -0
  49. data/lib/deb/puppet_3.6.0/ruby_4.8_all.deb +0 -0
  50. data/lib/deb/puppet_3.6.0/virt-what_1.11-1_amd64.deb +0 -0
  51. data/lib/templates/node/Vagrantfile.erb +18 -0
  52. data/lib/templates/node/deploy_vagrant_node.erb +3 -0
  53. data/lib/templates/node/node.yml.erb +3 -0
  54. data/lib/templates/node/prepared_node.yml.erb +4 -0
  55. data/lib/templates/node/provisioned_node.yml.erb +4 -0
  56. data/lib/templates/project/Capfile.erb +2 -0
  57. data/lib/templates/project/Gemfile.erb +5 -0
  58. data/lib/templates/project/config/deploy/environment.erb +40 -0
  59. data/lib/templates/project/config/deploy/vagrant.erb +42 -0
  60. data/lib/templates/project/config/deploy.erb +120 -0
  61. data/lib/templates/project/dot_bebox.erb +4 -0
  62. data/lib/templates/project/gitignore.erb +7 -0
  63. data/lib/templates/project/ubuntu_dependencies +10 -0
  64. data/lib/templates/puppet/default_profiles/base/fundamental/ruby/Puppetfile +0 -0
  65. data/lib/templates/puppet/default_profiles/base/fundamental/ruby/manifests/init.pp +24 -0
  66. data/lib/templates/puppet/default_profiles/base/fundamental/sudo/Puppetfile +0 -0
  67. data/lib/templates/puppet/default_profiles/base/fundamental/sudo/manifests/init.pp +22 -0
  68. data/lib/templates/puppet/default_profiles/base/fundamental/users/Puppetfile +0 -0
  69. data/lib/templates/puppet/default_profiles/base/fundamental/users/manifests/init.pp +18 -0
  70. data/lib/templates/puppet/default_profiles/base/security/fail2ban/Puppetfile +2 -0
  71. data/lib/templates/puppet/default_profiles/base/security/fail2ban/manifests/init.pp +28 -0
  72. data/lib/templates/puppet/default_profiles/base/security/iptables/Puppetfile +2 -0
  73. data/lib/templates/puppet/default_profiles/base/security/iptables/manifests/init.pp +27 -0
  74. data/lib/templates/puppet/default_profiles/base/security/ssh/Puppetfile +2 -0
  75. data/lib/templates/puppet/default_profiles/base/security/ssh/manifests/init.pp +30 -0
  76. data/lib/templates/puppet/default_profiles/base/security/sysctl/Puppetfile +2 -0
  77. data/lib/templates/puppet/default_profiles/base/security/sysctl/manifests/init.pp +20 -0
  78. data/lib/templates/puppet/default_profiles/base/users/ssh/Puppetfile +2 -0
  79. data/lib/templates/puppet/default_profiles/base/users/ssh/manifests/init.pp +47 -0
  80. data/lib/templates/puppet/default_profiles/base/users/users/Puppetfile +0 -0
  81. data/lib/templates/puppet/default_profiles/base/users/users/manifests/init.pp +18 -0
  82. data/lib/templates/puppet/default_roles/fundamental/manifests/init.pp +16 -0
  83. data/lib/templates/puppet/default_roles/security/manifests/init.pp +17 -0
  84. data/lib/templates/puppet/default_roles/users/manifests/init.pp +15 -0
  85. data/lib/templates/puppet/profiles/Puppetfile.erb +24 -0
  86. data/lib/templates/puppet/profiles/manifests/init.pp.erb +17 -0
  87. data/lib/templates/puppet/roles/manifests/init.pp.erb +14 -0
  88. data/lib/templates/puppet/step-0/Puppetfile.erb +5 -0
  89. data/lib/templates/puppet/step-0/hiera/data/common.yaml.erb +26 -0
  90. data/lib/templates/puppet/step-0/hiera/data/environment.yaml.erb +26 -0
  91. data/lib/templates/puppet/step-0/hiera/data/node.yaml.erb +26 -0
  92. data/lib/templates/puppet/step-0/hiera/hiera.yaml.erb +11 -0
  93. data/lib/templates/puppet/step-0/manifests/node.erb +5 -0
  94. data/lib/templates/puppet/step-0/manifests/site.pp.erb +15 -0
  95. data/lib/templates/puppet/step-0/modules/rbenv/AUTHORS +11 -0
  96. data/lib/templates/puppet/step-0/modules/rbenv/CHANGELOG.md +70 -0
  97. data/lib/templates/puppet/step-0/modules/rbenv/Gemfile +8 -0
  98. data/lib/templates/puppet/step-0/modules/rbenv/Gemfile.lock +28 -0
  99. data/lib/templates/puppet/step-0/modules/rbenv/Modulefile +7 -0
  100. data/lib/templates/puppet/step-0/modules/rbenv/README.md +173 -0
  101. data/lib/templates/puppet/step-0/modules/rbenv/Rakefile +22 -0
  102. data/lib/templates/puppet/step-0/modules/rbenv/TODO +10 -0
  103. data/lib/templates/puppet/step-0/modules/rbenv/bin/autospec +16 -0
  104. data/lib/templates/puppet/step-0/modules/rbenv/bin/facter +16 -0
  105. data/lib/templates/puppet/step-0/modules/rbenv/bin/filebucket +16 -0
  106. data/lib/templates/puppet/step-0/modules/rbenv/bin/hiera +16 -0
  107. data/lib/templates/puppet/step-0/modules/rbenv/bin/htmldiff +16 -0
  108. data/lib/templates/puppet/step-0/modules/rbenv/bin/ldiff +16 -0
  109. data/lib/templates/puppet/step-0/modules/rbenv/bin/pi +16 -0
  110. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet +16 -0
  111. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-lint +16 -0
  112. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppet-module +16 -0
  113. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetca +16 -0
  114. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetd +16 -0
  115. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetdoc +16 -0
  116. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetmasterd +16 -0
  117. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetqd +16 -0
  118. data/lib/templates/puppet/step-0/modules/rbenv/bin/puppetrun +16 -0
  119. data/lib/templates/puppet/step-0/modules/rbenv/bin/rake +16 -0
  120. data/lib/templates/puppet/step-0/modules/rbenv/bin/ralsh +16 -0
  121. data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec +16 -0
  122. data/lib/templates/puppet/step-0/modules/rbenv/bin/rspec-puppet-init +16 -0
  123. data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/provider/rbenvgem/default.rb +50 -0
  124. data/lib/templates/puppet/step-0/modules/rbenv/lib/puppet/type/rbenvgem.rb +62 -0
  125. data/lib/templates/puppet/step-0/modules/rbenv/manifests/bundle.pp +36 -0
  126. data/lib/templates/puppet/step-0/modules/rbenv/manifests/client.pp +48 -0
  127. data/lib/templates/puppet/step-0/modules/rbenv/manifests/compile.pp +102 -0
  128. data/lib/templates/puppet/step-0/modules/rbenv/manifests/definition.pp +31 -0
  129. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/centos.pp +25 -0
  130. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/suse.pp +28 -0
  131. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies/ubuntu.pp +17 -0
  132. data/lib/templates/puppet/step-0/modules/rbenv/manifests/dependencies.pp +8 -0
  133. data/lib/templates/puppet/step-0/modules/rbenv/manifests/gem.pp +29 -0
  134. data/lib/templates/puppet/step-0/modules/rbenv/manifests/install.pp +55 -0
  135. data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rbenvvars.pp +16 -0
  136. data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin/rubybuild.pp +16 -0
  137. data/lib/templates/puppet/step-0/modules/rbenv/manifests/plugin.pp +40 -0
  138. data/lib/templates/puppet/step-0/modules/rbenv/metadata.json +109 -0
  139. data/lib/templates/puppet/step-0/modules/rbenv/templates/Gemfile.erb +5 -0
  140. data/lib/templates/puppet/step-0/modules/rbenv/templates/dot.rbenvrc.erb +8 -0
  141. data/lib/templates/puppet/step-0/modules/stdlib/CHANGELOG.md +418 -0
  142. data/lib/templates/puppet/step-0/modules/stdlib/CONTRIBUTING.md +65 -0
  143. data/lib/templates/puppet/step-0/modules/stdlib/Gemfile +33 -0
  144. data/lib/templates/puppet/step-0/modules/stdlib/Gemfile.lock +166 -0
  145. data/lib/templates/puppet/step-0/modules/stdlib/LICENSE +19 -0
  146. data/lib/templates/puppet/step-0/modules/stdlib/Modulefile +11 -0
  147. data/lib/templates/puppet/step-0/modules/stdlib/README.markdown +1304 -0
  148. data/lib/templates/puppet/step-0/modules/stdlib/README_DEVELOPER.markdown +35 -0
  149. data/lib/templates/puppet/step-0/modules/stdlib/README_SPECS.markdown +7 -0
  150. data/lib/templates/puppet/step-0/modules/stdlib/RELEASE_PROCESS.markdown +24 -0
  151. data/lib/templates/puppet/step-0/modules/stdlib/Rakefile +18 -0
  152. data/lib/templates/puppet/step-0/modules/stdlib/checksums.json +349 -0
  153. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/facter_dot_d.rb +202 -0
  154. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/pe_version.rb +53 -0
  155. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/puppet_vardir.rb +26 -0
  156. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/root_home.rb +32 -0
  157. data/lib/templates/puppet/step-0/modules/stdlib/lib/facter/util/puppet_settings.rb +21 -0
  158. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/abs.rb +36 -0
  159. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/any2array.rb +33 -0
  160. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/base64.rb +37 -0
  161. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/bool2num.rb +49 -0
  162. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/capitalize.rb +34 -0
  163. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chomp.rb +35 -0
  164. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/chop.rb +37 -0
  165. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/concat.rb +41 -0
  166. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/count.rb +22 -0
  167. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/deep_merge.rb +44 -0
  168. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb +35 -0
  169. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete.rb +46 -0
  170. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +49 -0
  171. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_undef_values.rb +34 -0
  172. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/delete_values.rb +26 -0
  173. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/difference.rb +36 -0
  174. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/dirname.rb +15 -0
  175. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/downcase.rb +33 -0
  176. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/empty.rb +28 -0
  177. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb +35 -0
  178. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb +45 -0
  179. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/flatten.rb +33 -0
  180. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/floor.rb +25 -0
  181. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
  182. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/get_module_path.rb +17 -0
  183. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getparam.rb +35 -0
  184. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/getvar.rb +26 -0
  185. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/grep.rb +33 -0
  186. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_interface_with.rb +52 -0
  187. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_address.rb +25 -0
  188. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_ip_network.rb +25 -0
  189. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/has_key.rb +28 -0
  190. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/hash.rb +41 -0
  191. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/intersection.rb +34 -0
  192. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_array.rb +22 -0
  193. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_bool.rb +22 -0
  194. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_domain_name.rb +50 -0
  195. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_float.rb +30 -0
  196. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_function_available.rb +26 -0
  197. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_hash.rb +22 -0
  198. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_integer.rb +45 -0
  199. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_ip_address.rb +32 -0
  200. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_mac_address.rb +27 -0
  201. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_numeric.rb +75 -0
  202. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/is_string.rb +26 -0
  203. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join.rb +41 -0
  204. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
  205. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/keys.rb +26 -0
  206. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/loadyaml.rb +20 -0
  207. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/lstrip.rb +33 -0
  208. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/max.rb +21 -0
  209. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/member.rb +44 -0
  210. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/merge.rb +34 -0
  211. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/min.rb +21 -0
  212. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/num2bool.rb +43 -0
  213. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +24 -0
  214. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/parseyaml.rb +24 -0
  215. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick.rb +29 -0
  216. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/pick_default.rb +35 -0
  217. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/prefix.rb +45 -0
  218. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/range.rb +88 -0
  219. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reject.rb +31 -0
  220. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/reverse.rb +28 -0
  221. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/rstrip.rb +32 -0
  222. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/shuffle.rb +46 -0
  223. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/size.rb +48 -0
  224. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/sort.rb +27 -0
  225. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/squeeze.rb +36 -0
  226. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2bool.rb +46 -0
  227. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
  228. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strftime.rb +107 -0
  229. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/strip.rb +39 -0
  230. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/suffix.rb +45 -0
  231. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/swapcase.rb +39 -0
  232. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/time.rb +49 -0
  233. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/to_bytes.rb +28 -0
  234. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/type.rb +50 -0
  235. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/union.rb +34 -0
  236. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/unique.rb +51 -0
  237. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/upcase.rb +41 -0
  238. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/uriescape.rb +35 -0
  239. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
  240. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_array.rb +33 -0
  241. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_augeas.rb +81 -0
  242. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_bool.rb +34 -0
  243. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_cmd.rb +48 -0
  244. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_hash.rb +33 -0
  245. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv4_address.rb +48 -0
  246. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_ipv6_address.rb +49 -0
  247. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_re.rb +40 -0
  248. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb +71 -0
  249. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/validate_string.rb +33 -0
  250. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values.rb +39 -0
  251. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/values_at.rb +98 -0
  252. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/parser/functions/zip.rb +65 -0
  253. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/provider/file_line/ruby.rb +83 -0
  254. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/anchor.rb +46 -0
  255. data/lib/templates/puppet/step-0/modules/stdlib/lib/puppet/type/file_line.rb +79 -0
  256. data/lib/templates/puppet/step-0/modules/stdlib/manifests/init.pp +20 -0
  257. data/lib/templates/puppet/step-0/modules/stdlib/manifests/stages.pp +43 -0
  258. data/lib/templates/puppet/step-0/modules/stdlib/metadata.json +111 -0
  259. data/lib/templates/puppet/step-0/modules/sudo/.fixtures.yml +5 -0
  260. data/lib/templates/puppet/step-0/modules/sudo/.gemfile +14 -0
  261. data/lib/templates/puppet/step-0/modules/sudo/.gemfile.lock +43 -0
  262. data/lib/templates/puppet/step-0/modules/sudo/.travis.yml +34 -0
  263. data/lib/templates/puppet/step-0/modules/sudo/LICENSE +13 -0
  264. data/lib/templates/puppet/step-0/modules/sudo/Modulefile +9 -0
  265. data/lib/templates/puppet/step-0/modules/sudo/README.md +171 -0
  266. data/lib/templates/puppet/step-0/modules/sudo/Rakefile +1 -0
  267. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.aix +90 -0
  268. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.archlinux +90 -0
  269. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.deb +90 -0
  270. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.freebsd +98 -0
  271. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.omnios +90 -0
  272. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel5 +97 -0
  273. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.rhel6 +115 -0
  274. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.solaris +90 -0
  275. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.suse +81 -0
  276. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.ubuntu +30 -0
  277. data/lib/templates/puppet/step-0/modules/sudo/files/sudoers.wheezy +17 -0
  278. data/lib/templates/puppet/step-0/modules/sudo/lib/augeas/lenses/fixedsudoers.aug +520 -0
  279. data/lib/templates/puppet/step-0/modules/sudo/manifests/allow.pp +76 -0
  280. data/lib/templates/puppet/step-0/modules/sudo/manifests/conf.pp +105 -0
  281. data/lib/templates/puppet/step-0/modules/sudo/manifests/configs.pp +24 -0
  282. data/lib/templates/puppet/step-0/modules/sudo/manifests/init.pp +151 -0
  283. data/lib/templates/puppet/step-0/modules/sudo/manifests/package/aix.pp +46 -0
  284. data/lib/templates/puppet/step-0/modules/sudo/manifests/package/solaris.pp +60 -0
  285. data/lib/templates/puppet/step-0/modules/sudo/manifests/package.pp +61 -0
  286. data/lib/templates/puppet/step-0/modules/sudo/manifests/params.pp +127 -0
  287. data/lib/templates/puppet/step-0/modules/sudo/metadata.json +59 -0
  288. data/lib/templates/puppet/step-0/modules/sudo/templates/users_groups.erb +9 -0
  289. data/lib/templates/puppet/step-0/modules/users/manifests/init.pp +15 -0
  290. data/lib/templates/puppet/step-0/modules/users/manifests/user.pp +50 -0
  291. data/lib/templates/puppet/step-1/Puppetfile.erb +5 -0
  292. data/lib/templates/puppet/step-1/hiera/data/common.yaml.erb +11 -0
  293. data/lib/templates/puppet/step-1/hiera/data/environment.yaml.erb +11 -0
  294. data/lib/templates/puppet/step-1/hiera/data/node.yaml.erb +11 -0
  295. data/lib/templates/puppet/step-1/hiera/hiera.yaml.erb +11 -0
  296. data/lib/templates/puppet/step-1/manifests/node.erb +5 -0
  297. data/lib/templates/puppet/step-1/manifests/site.pp.erb +15 -0
  298. data/lib/templates/puppet/step-1/modules/users/manifests/init.pp +15 -0
  299. data/lib/templates/puppet/step-1/modules/users/manifests/user.pp +49 -0
  300. data/lib/templates/puppet/step-2/Puppetfile.erb +5 -0
  301. data/lib/templates/puppet/step-2/hiera/data/common.yaml.erb +1 -0
  302. data/lib/templates/puppet/step-2/hiera/data/environment.yaml.erb +1 -0
  303. data/lib/templates/puppet/step-2/hiera/data/node.yaml.erb +1 -0
  304. data/lib/templates/puppet/step-2/hiera/hiera.yaml.erb +11 -0
  305. data/lib/templates/puppet/step-2/manifests/node.erb +3 -0
  306. data/lib/templates/puppet/step-2/manifests/site.pp.erb +10 -0
  307. data/lib/templates/puppet/step-3/Puppetfile.erb +5 -0
  308. data/lib/templates/puppet/step-3/hiera/data/common.yaml.erb +99 -0
  309. data/lib/templates/puppet/step-3/hiera/data/environment.yaml.erb +99 -0
  310. data/lib/templates/puppet/step-3/hiera/data/node.yaml.erb +99 -0
  311. data/lib/templates/puppet/step-3/hiera/hiera.yaml.erb +11 -0
  312. data/lib/templates/puppet/step-3/manifests/node.erb +5 -0
  313. data/lib/templates/puppet/step-3/manifests/site.pp.erb +15 -0
  314. data/spec/environment_spec.rb +82 -0
  315. data/spec/factories/environment.rb +20 -0
  316. data/spec/factories/node.rb +22 -0
  317. data/spec/factories/profile.rb +10 -0
  318. data/spec/factories/project.rb +17 -0
  319. data/spec/factories/provision.rb +13 -0
  320. data/spec/factories/role.rb +9 -0
  321. data/spec/fixtures/Capfile.test +2 -0
  322. data/spec/fixtures/Gemfile.test +5 -0
  323. data/spec/fixtures/config/deploy/environment.test +35 -0
  324. data/spec/fixtures/config/deploy/production.test +35 -0
  325. data/spec/fixtures/config/deploy/staging.test +35 -0
  326. data/spec/fixtures/config/deploy/vagrant.test +37 -0
  327. data/spec/fixtures/config/deploy.test +120 -0
  328. data/spec/fixtures/dot_bebox.test.erb +4 -0
  329. data/spec/fixtures/dot_gitignore.test +8 -0
  330. data/spec/fixtures/node/Vagrantfile.test.erb +18 -0
  331. data/spec/fixtures/node/node_0.test.erb +3 -0
  332. data/spec/fixtures/node/prepared_node_0.test.erb +4 -0
  333. data/spec/fixtures/node/provisioned_node_0.test.erb +4 -0
  334. data/spec/fixtures/node/vagrant_deploy.test +38 -0
  335. data/spec/fixtures/puppet/hiera/data/node0.server1.test.yaml.test +4 -0
  336. data/spec/fixtures/puppet/profiles/test/profile_0/Puppetfile.test +24 -0
  337. data/spec/fixtures/puppet/profiles/test/profile_0/Puppetfile_with_modules.test +20 -0
  338. data/spec/fixtures/puppet/profiles/test/profile_0/manifests/init.pp.test +17 -0
  339. data/spec/fixtures/puppet/profiles/test/profile_0/manifests/init_with_content.pp.test +22 -0
  340. data/spec/fixtures/puppet/roles/manifests/init.pp.test +14 -0
  341. data/spec/fixtures/puppet/steps/step-0/hiera/data/common.yaml.test +26 -0
  342. data/spec/fixtures/puppet/steps/step-0/hiera/data/node0.server1.test.yaml.test +0 -0
  343. data/spec/fixtures/puppet/steps/step-0/hiera/data/pname_env.yaml.test +26 -0
  344. data/spec/fixtures/puppet/steps/step-0/hiera/data/production.yaml.test +0 -0
  345. data/spec/fixtures/puppet/steps/step-0/hiera/data/staging.yaml.test +0 -0
  346. data/spec/fixtures/puppet/steps/step-0/hiera/data/vagrant.yaml.test +0 -0
  347. data/spec/fixtures/puppet/steps/step-0/hiera/hiera.yaml.test +11 -0
  348. data/spec/fixtures/puppet/steps/step-0/manifests/site.pp.test +10 -0
  349. data/spec/fixtures/puppet/steps/step-0/manifests/site_with_node.pp.test +15 -0
  350. data/spec/fixtures/puppet/steps/step-1/hiera/data/common.yaml.test +11 -0
  351. data/spec/fixtures/puppet/steps/step-1/hiera/data/node0.server1.test.yaml.test +0 -0
  352. data/spec/fixtures/puppet/steps/step-1/hiera/data/pname_env.yaml.test +11 -0
  353. data/spec/fixtures/puppet/steps/step-1/hiera/data/production.yaml.test +0 -0
  354. data/spec/fixtures/puppet/steps/step-1/hiera/data/staging.yaml.test +0 -0
  355. data/spec/fixtures/puppet/steps/step-1/hiera/data/vagrant.yaml.test +0 -0
  356. data/spec/fixtures/puppet/steps/step-1/hiera/hiera.yaml.test +11 -0
  357. data/spec/fixtures/puppet/steps/step-1/manifests/site.pp.test +10 -0
  358. data/spec/fixtures/puppet/steps/step-1/manifests/site_with_node.pp.test +15 -0
  359. data/spec/fixtures/puppet/steps/step-2/Puppetfile.test +6 -0
  360. data/spec/fixtures/puppet/steps/step-2/hiera/data/common.yaml.test +1 -0
  361. data/spec/fixtures/puppet/steps/step-2/hiera/data/node0.server1.test.yaml.test +1 -0
  362. data/spec/fixtures/puppet/steps/step-2/hiera/data/pname_env.yaml.test +1 -0
  363. data/spec/fixtures/puppet/steps/step-2/hiera/data/production.yaml.test +1 -0
  364. data/spec/fixtures/puppet/steps/step-2/hiera/data/staging.yaml.test +1 -0
  365. data/spec/fixtures/puppet/steps/step-2/hiera/data/vagrant.yaml.test +1 -0
  366. data/spec/fixtures/puppet/steps/step-2/hiera/hiera.yaml.test +11 -0
  367. data/spec/fixtures/puppet/steps/step-2/manifests/site.pp.test +10 -0
  368. data/spec/fixtures/puppet/steps/step-2/manifests/site_with_node.pp.test +13 -0
  369. data/spec/fixtures/puppet/steps/step-2/manifests/site_with_node_role_association.pp.test +16 -0
  370. data/spec/fixtures/puppet/steps/step-2/modules/profiles/manifests/test/profile_0.pp.test +17 -0
  371. data/spec/fixtures/puppet/steps/step-2/modules/roles/manifests/role_0.pp.test +16 -0
  372. data/spec/fixtures/puppet/steps/step-3/hiera/data/common.yaml.test +99 -0
  373. data/spec/fixtures/puppet/steps/step-3/hiera/data/node0.server1.test.yaml.test +1 -0
  374. data/spec/fixtures/puppet/steps/step-3/hiera/data/pname_env.yaml.test +99 -0
  375. data/spec/fixtures/puppet/steps/step-3/hiera/data/production.yaml.test +1 -0
  376. data/spec/fixtures/puppet/steps/step-3/hiera/data/staging.yaml.test +1 -0
  377. data/spec/fixtures/puppet/steps/step-3/hiera/data/vagrant.yaml.test +1 -0
  378. data/spec/fixtures/puppet/steps/step-3/hiera/hiera.yaml.test +11 -0
  379. data/spec/fixtures/puppet/steps/step-3/manifests/site.pp.test +10 -0
  380. data/spec/fixtures/puppet/steps/step-3/manifests/site_with_node.pp.test +15 -0
  381. data/spec/fixtures/puppet/ubuntu_dependencies.test +10 -0
  382. data/spec/node0.server1.test/prepare_phase_spec.rb +53 -0
  383. data/spec/node0.server1.test/provision_step_0_spec.rb +46 -0
  384. data/spec/node0.server1.test/provision_step_1_spec.rb +41 -0
  385. data/spec/node0.server1.test/provision_step_2_spec.rb +79 -0
  386. data/spec/node0.server1.test/provision_step_3_spec.rb +76 -0
  387. data/spec/node_role_spec.rb +20 -0
  388. data/spec/node_spec.rb +71 -0
  389. data/spec/node_wizard_spec.rb +22 -0
  390. data/spec/ordered_phases_spec.rb +55 -0
  391. data/spec/pre_prepare_spec.rb +78 -0
  392. data/spec/pre_provision_steps_spec.rb +40 -0
  393. data/spec/profile_spec.rb +70 -0
  394. data/spec/project_spec.rb +195 -0
  395. data/spec/project_wizard_spec.rb +51 -0
  396. data/spec/puppet_spec_helper.rb +15 -0
  397. data/spec/role_profiles_spec.rb +40 -0
  398. data/spec/role_spec.rb +56 -0
  399. data/spec/spec_helper.rb +37 -0
  400. data/spec/support/config_specs.yaml.example +2 -0
  401. data/spec/vagrant_spec_helper.rb +15 -0
  402. metadata +625 -0
@@ -0,0 +1,22 @@
1
+ #
2
+ # is_bool.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_bool, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable passed to this function is a boolean.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "is_bool(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size != 1
13
+
14
+ type = arguments[0]
15
+
16
+ result = type.is_a?(TrueClass) || type.is_a?(FalseClass)
17
+
18
+ return result
19
+ end
20
+ end
21
+
22
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,50 @@
1
+ #
2
+ # is_domain_name.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_domain_name, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the string passed to this function is a syntactically correct domain name.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ if (arguments.size != 1) then
12
+ raise(Puppet::ParseError, "is_domain_name(): Wrong number of arguments "+
13
+ "given #{arguments.size} for 1")
14
+ end
15
+
16
+ domain = arguments[0]
17
+
18
+ # Limits (rfc1035, 3.1)
19
+ domain_max_length=255
20
+ label_min_length=1
21
+ label_max_length=63
22
+
23
+ # Only allow string types
24
+ return false unless domain.is_a?(String)
25
+
26
+ # Allow ".", it is the top level domain
27
+ return true if domain == '.'
28
+
29
+ # Remove the final dot, if present.
30
+ domain.chomp!('.')
31
+
32
+ # Check the whole domain
33
+ return false if domain.empty?
34
+ return false if domain.length > domain_max_length
35
+
36
+ # Check each label in the domain
37
+ labels = domain.split('.')
38
+ vlabels = labels.each do |label|
39
+ break if label.length < label_min_length
40
+ break if label.length > label_max_length
41
+ break if label[-1..-1] == '-'
42
+ break if label[0..0] == '-'
43
+ break unless /^[a-z\d-]+$/i.match(label)
44
+ end
45
+ return vlabels == labels
46
+
47
+ end
48
+ end
49
+
50
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,30 @@
1
+ #
2
+ # is_float.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_float, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable passed to this function is a float.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ if (arguments.size != 1) then
12
+ raise(Puppet::ParseError, "is_float(): Wrong number of arguments "+
13
+ "given #{arguments.size} for 1")
14
+ end
15
+
16
+ value = arguments[0]
17
+
18
+ # Only allow Numeric or String types
19
+ return false unless value.is_a?(Numeric) or value.is_a?(String)
20
+
21
+ if value != value.to_f.to_s and !value.is_a? Float then
22
+ return false
23
+ else
24
+ return true
25
+ end
26
+
27
+ end
28
+ end
29
+
30
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,26 @@
1
+ #
2
+ # is_function_available.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_function_available, :type => :rvalue, :doc => <<-EOS
7
+ This function accepts a string as an argument, determines whether the
8
+ Puppet runtime has access to a function by that name. It returns a
9
+ true if the function exists, false if not.
10
+ EOS
11
+ ) do |arguments|
12
+
13
+ if (arguments.size != 1) then
14
+ raise(Puppet::ParseError, "is_function_available?(): Wrong number of arguments "+
15
+ "given #{arguments.size} for 1")
16
+ end
17
+
18
+ # Only allow String types
19
+ return false unless arguments[0].is_a?(String)
20
+
21
+ function = Puppet::Parser::Functions.function(arguments[0].to_sym)
22
+ function.is_a?(String) and not function.empty?
23
+ end
24
+ end
25
+
26
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,22 @@
1
+ #
2
+ # is_hash.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_hash, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable passed to this function is a hash.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "is_hash(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size != 1
13
+
14
+ type = arguments[0]
15
+
16
+ result = type.is_a?(Hash)
17
+
18
+ return result
19
+ end
20
+ end
21
+
22
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,45 @@
1
+ #
2
+ # is_integer.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_integer, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable passed to this function is an Integer or
8
+ a decimal (base 10) integer in String form. The string may
9
+ start with a '-' (minus). A value of '0' is allowed, but a leading '0' digit may not
10
+ be followed by other digits as this indicates that the value is octal (base 8).
11
+
12
+ If given any other argument `false` is returned.
13
+ EOS
14
+ ) do |arguments|
15
+
16
+ if (arguments.size != 1) then
17
+ raise(Puppet::ParseError, "is_integer(): Wrong number of arguments "+
18
+ "given #{arguments.size} for 1")
19
+ end
20
+
21
+ value = arguments[0]
22
+
23
+ # Regex is taken from the lexer of puppet
24
+ # puppet/pops/parser/lexer.rb but modified to match also
25
+ # negative values and disallow numbers prefixed with multiple
26
+ # 0's
27
+ #
28
+ # TODO these parameter should be a constant but I'm not sure
29
+ # if there is no risk to declare it inside of the module
30
+ # Puppet::Parser::Functions
31
+
32
+ # Integer numbers like
33
+ # -1234568981273
34
+ # 47291
35
+ numeric = %r{^-?(?:(?:[1-9]\d*)|0)$}
36
+
37
+ if value.is_a? Integer or (value.is_a? String and value.match numeric)
38
+ return true
39
+ else
40
+ return false
41
+ end
42
+ end
43
+ end
44
+
45
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,32 @@
1
+ #
2
+ # is_ip_address.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_ip_address, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the string passed to this function is a valid IP address.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ require 'ipaddr'
12
+
13
+ if (arguments.size != 1) then
14
+ raise(Puppet::ParseError, "is_ip_address(): Wrong number of arguments "+
15
+ "given #{arguments.size} for 1")
16
+ end
17
+
18
+ begin
19
+ ip = IPAddr.new(arguments[0])
20
+ rescue ArgumentError
21
+ return false
22
+ end
23
+
24
+ if ip.ipv4? or ip.ipv6? then
25
+ return true
26
+ else
27
+ return false
28
+ end
29
+ end
30
+ end
31
+
32
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,27 @@
1
+ #
2
+ # is_mac_address.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_mac_address, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the string passed to this function is a valid mac address.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ if (arguments.size != 1) then
12
+ raise(Puppet::ParseError, "is_mac_address(): Wrong number of arguments "+
13
+ "given #{arguments.size} for 1")
14
+ end
15
+
16
+ mac = arguments[0]
17
+
18
+ if /^[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}$/.match(mac) then
19
+ return true
20
+ else
21
+ return false
22
+ end
23
+
24
+ end
25
+ end
26
+
27
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,75 @@
1
+ #
2
+ # is_numeric.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_numeric, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the given argument is a Numeric (Integer or Float),
8
+ or a String containing either a valid integer in decimal base 10 form, or
9
+ a valid floating point string representation.
10
+
11
+ The function recognizes only decimal (base 10) integers and float but not
12
+ integers in hex (base 16) or octal (base 8) form.
13
+
14
+ The string representation may start with a '-' (minus). If a decimal '.' is used,
15
+ it must be followed by at least one digit.
16
+
17
+ Valid examples:
18
+
19
+ 77435
20
+ 10e-12
21
+ -8475
22
+ 0.2343
23
+ -23.561e3
24
+ EOS
25
+ ) do |arguments|
26
+
27
+ if (arguments.size != 1) then
28
+ raise(Puppet::ParseError, "is_numeric(): Wrong number of arguments "+
29
+ "given #{arguments.size} for 1")
30
+ end
31
+
32
+ value = arguments[0]
33
+
34
+ # Regex is taken from the lexer of puppet
35
+ # puppet/pops/parser/lexer.rb but modified to match also
36
+ # negative values and disallow invalid octal numbers or
37
+ # numbers prefixed with multiple 0's (except in hex numbers)
38
+ #
39
+ # TODO these parameters should be constants but I'm not sure
40
+ # if there is no risk to declare them inside of the module
41
+ # Puppet::Parser::Functions
42
+
43
+ # TODO decide if this should be used
44
+ # HEX numbers like
45
+ # 0xaa230F
46
+ # 0X1234009C
47
+ # 0x0012
48
+ # -12FcD
49
+ #numeric_hex = %r{^-?0[xX][0-9A-Fa-f]+$}
50
+
51
+ # TODO decide if this should be used
52
+ # OCTAL numbers like
53
+ # 01234567
54
+ # -045372
55
+ #numeric_oct = %r{^-?0[1-7][0-7]*$}
56
+
57
+ # Integer/Float numbers like
58
+ # -0.1234568981273
59
+ # 47291
60
+ # 42.12345e-12
61
+ numeric = %r{^-?(?:(?:[1-9]\d*)|0)(?:\.\d+)?(?:[eE]-?\d+)?$}
62
+
63
+ if value.is_a? Numeric or (value.is_a? String and (
64
+ value.match(numeric) #or
65
+ # value.match(numeric_hex) or
66
+ # value.match(numeric_oct)
67
+ ))
68
+ return true
69
+ else
70
+ return false
71
+ end
72
+ end
73
+ end
74
+
75
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,26 @@
1
+ #
2
+ # is_string.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_string, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable passed to this function is a string.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "is_string(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size < 1
13
+
14
+ type = arguments[0]
15
+
16
+ result = type.is_a?(String)
17
+
18
+ if result and (type == type.to_f.to_s or type == type.to_i.to_s) then
19
+ return false
20
+ end
21
+
22
+ return result
23
+ end
24
+ end
25
+
26
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,41 @@
1
+ #
2
+ # join.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:join, :type => :rvalue, :doc => <<-EOS
7
+ This function joins an array into a string using a separator.
8
+
9
+ *Examples:*
10
+
11
+ join(['a','b','c'], ",")
12
+
13
+ Would result in: "a,b,c"
14
+ EOS
15
+ ) do |arguments|
16
+
17
+ # Technically we support two arguments but only first is mandatory ...
18
+ raise(Puppet::ParseError, "join(): Wrong number of arguments " +
19
+ "given (#{arguments.size} for 1)") if arguments.size < 1
20
+
21
+ array = arguments[0]
22
+
23
+ unless array.is_a?(Array)
24
+ raise(Puppet::ParseError, 'join(): Requires array to work with')
25
+ end
26
+
27
+ suffix = arguments[1] if arguments[1]
28
+
29
+ if suffix
30
+ unless suffix.is_a?(String)
31
+ raise(Puppet::ParseError, 'join(): Requires string to work with')
32
+ end
33
+ end
34
+
35
+ result = suffix ? array.join(suffix) : array.join
36
+
37
+ return result
38
+ end
39
+ end
40
+
41
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,47 @@
1
+ #
2
+ # join.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:join_keys_to_values, :type => :rvalue, :doc => <<-EOS
7
+ This function joins each key of a hash to that key's corresponding value with a
8
+ separator. Keys and values are cast to strings. The return value is an array in
9
+ which each element is one joined key/value pair.
10
+
11
+ *Examples:*
12
+
13
+ join_keys_to_values({'a'=>1,'b'=>2}, " is ")
14
+
15
+ Would result in: ["a is 1","b is 2"]
16
+ EOS
17
+ ) do |arguments|
18
+
19
+ # Validate the number of arguments.
20
+ if arguments.size != 2
21
+ raise(Puppet::ParseError, "join_keys_to_values(): Takes exactly two " +
22
+ "arguments, but #{arguments.size} given.")
23
+ end
24
+
25
+ # Validate the first argument.
26
+ hash = arguments[0]
27
+ if not hash.is_a?(Hash)
28
+ raise(TypeError, "join_keys_to_values(): The first argument must be a " +
29
+ "hash, but a #{hash.class} was given.")
30
+ end
31
+
32
+ # Validate the second argument.
33
+ separator = arguments[1]
34
+ if not separator.is_a?(String)
35
+ raise(TypeError, "join_keys_to_values(): The second argument must be a " +
36
+ "string, but a #{separator.class} was given.")
37
+ end
38
+
39
+ # Join the keys to their values.
40
+ hash.map do |k,v|
41
+ String(k) + separator + String(v)
42
+ end
43
+
44
+ end
45
+ end
46
+
47
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,26 @@
1
+ #
2
+ # keys.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:keys, :type => :rvalue, :doc => <<-EOS
7
+ Returns the keys of a hash as an array.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "keys(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size < 1
13
+
14
+ hash = arguments[0]
15
+
16
+ unless hash.is_a?(Hash)
17
+ raise(Puppet::ParseError, 'keys(): Requires hash to work with')
18
+ end
19
+
20
+ result = hash.keys
21
+
22
+ return result
23
+ end
24
+ end
25
+
26
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,20 @@
1
+ module Puppet::Parser::Functions
2
+
3
+ newfunction(:loadyaml, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
4
+ Load a YAML file containing an array, string, or hash, and return the data
5
+ in the corresponding native data type.
6
+
7
+ For example:
8
+
9
+ $myhash = loadyaml('/etc/puppet/data/myhash.yaml')
10
+ ENDHEREDOC
11
+
12
+ unless args.length == 1
13
+ raise Puppet::ParseError, ("loadyaml(): wrong number of arguments (#{args.length}; must be 1)")
14
+ end
15
+
16
+ YAML.load_file(args[0])
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # lstrip.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:lstrip, :type => :rvalue, :doc => <<-EOS
7
+ Strips leading spaces to the left of a string.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "lstrip(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size < 1
13
+
14
+ value = arguments[0]
15
+ klass = value.class
16
+
17
+ unless [Array, String].include?(klass)
18
+ raise(Puppet::ParseError, 'lstrip(): Requires either ' +
19
+ 'array or string to work with')
20
+ end
21
+
22
+ if value.is_a?(Array)
23
+ # Numbers in Puppet are often string-encoded which is troublesome ...
24
+ result = value.collect { |i| i.is_a?(String) ? i.lstrip : i }
25
+ else
26
+ result = value.lstrip
27
+ end
28
+
29
+ return result
30
+ end
31
+ end
32
+
33
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,21 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:max, :type => :rvalue, :doc => <<-EOS
3
+ Returns the highest value of all arguments.
4
+ Requires at least one argument.
5
+ EOS
6
+ ) do |args|
7
+
8
+ raise(Puppet::ParseError, "max(): Wrong number of arguments " +
9
+ "need at least one") if args.size == 0
10
+
11
+ # Sometimes we get numbers as numerics and sometimes as strings.
12
+ # We try to compare them as numbers when possible
13
+ return args.max do |a,b|
14
+ if a.to_s =~ /\A-?\d+(.\d+)?\z/ and b.to_s =~ /\A-?\d+(.\d+)?\z/ then
15
+ a.to_f <=> b.to_f
16
+ else
17
+ a.to_s <=> b.to_s
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ #
2
+ # member.rb
3
+ #
4
+
5
+ # TODO(Krzysztof Wilczynski): We need to add support for regular expression ...
6
+ # TODO(Krzysztof Wilczynski): Support for strings and hashes too ...
7
+
8
+ module Puppet::Parser::Functions
9
+ newfunction(:member, :type => :rvalue, :doc => <<-EOS
10
+ This function determines if a variable is a member of an array.
11
+
12
+ *Examples:*
13
+
14
+ member(['a','b'], 'b')
15
+
16
+ Would return: true
17
+
18
+ member(['a','b'], 'c')
19
+
20
+ Would return: false
21
+ EOS
22
+ ) do |arguments|
23
+
24
+ raise(Puppet::ParseError, "member(): Wrong number of arguments " +
25
+ "given (#{arguments.size} for 2)") if arguments.size < 2
26
+
27
+ array = arguments[0]
28
+
29
+ unless array.is_a?(Array)
30
+ raise(Puppet::ParseError, 'member(): Requires array to work with')
31
+ end
32
+
33
+ item = arguments[1]
34
+
35
+ raise(Puppet::ParseError, 'member(): You must provide item ' +
36
+ 'to search for within array given') if item.empty?
37
+
38
+ result = array.include?(item)
39
+
40
+ return result
41
+ end
42
+ end
43
+
44
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,34 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:merge, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
3
+ Merges two or more hashes together and returns the resulting hash.
4
+
5
+ For example:
6
+
7
+ $hash1 = {'one' => 1, 'two', => 2}
8
+ $hash2 = {'two' => 'dos', 'three', => 'tres'}
9
+ $merged_hash = merge($hash1, $hash2)
10
+ # The resulting hash is equivalent to:
11
+ # $merged_hash = {'one' => 1, 'two' => 'dos', 'three' => 'tres'}
12
+
13
+ When there is a duplicate key, the key in the rightmost hash will "win."
14
+
15
+ ENDHEREDOC
16
+
17
+ if args.length < 2
18
+ raise Puppet::ParseError, ("merge(): wrong number of arguments (#{args.length}; must be at least 2)")
19
+ end
20
+
21
+ # The hash we accumulate into
22
+ accumulator = Hash.new
23
+ # Merge into the accumulator hash
24
+ args.each do |arg|
25
+ next if arg.is_a? String and arg.empty? # empty string is synonym for puppet's undef
26
+ unless arg.is_a?(Hash)
27
+ raise Puppet::ParseError, "merge: unexpected argument type #{arg.class}, only expects hash arguments"
28
+ end
29
+ accumulator.merge!(arg)
30
+ end
31
+ # Return the fully merged hash
32
+ accumulator
33
+ end
34
+ end
@@ -0,0 +1,21 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:min, :type => :rvalue, :doc => <<-EOS
3
+ Returns the lowest value of all arguments.
4
+ Requires at least one argument.
5
+ EOS
6
+ ) do |args|
7
+
8
+ raise(Puppet::ParseError, "min(): Wrong number of arguments " +
9
+ "need at least one") if args.size == 0
10
+
11
+ # Sometimes we get numbers as numerics and sometimes as strings.
12
+ # We try to compare them as numbers when possible
13
+ return args.min do |a,b|
14
+ if a.to_s =~ /\A^-?\d+(.\d+)?\z/ and b.to_s =~ /\A-?\d+(.\d+)?\z/ then
15
+ a.to_f <=> b.to_f
16
+ else
17
+ a.to_s <=> b.to_s
18
+ end
19
+ end
20
+ end
21
+ end