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,26 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:delete_values, :type => :rvalue, :doc => <<-EOS
3
+ Deletes all instances of a given value from a hash.
4
+
5
+ *Examples:*
6
+
7
+ delete_values({'a'=>'A','b'=>'B','c'=>'C','B'=>'D'}, 'B')
8
+
9
+ Would return: {'a'=>'A','c'=>'C','B'=>'D'}
10
+
11
+ EOS
12
+ ) do |arguments|
13
+
14
+ raise(Puppet::ParseError,
15
+ "delete_values(): Wrong number of arguments given " +
16
+ "(#{arguments.size} of 2)") if arguments.size != 2
17
+
18
+ hash, item = arguments
19
+
20
+ if not hash.is_a?(Hash)
21
+ raise(TypeError, "delete_values(): First argument must be a Hash. " + \
22
+ "Given an argument of class #{hash.class}.")
23
+ end
24
+ hash.dup.delete_if { |key, val| item == val }
25
+ end
26
+ end
@@ -0,0 +1,36 @@
1
+ #
2
+ # difference.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:difference, :type => :rvalue, :doc => <<-EOS
7
+ This function returns the difference between two arrays.
8
+ The returned array is a copy of the original array, removing any items that
9
+ also appear in the second array.
10
+
11
+ *Examples:*
12
+
13
+ difference(["a","b","c"],["b","c","d"])
14
+
15
+ Would return: ["a"]
16
+ EOS
17
+ ) do |arguments|
18
+
19
+ # Two arguments are required
20
+ raise(Puppet::ParseError, "difference(): Wrong number of arguments " +
21
+ "given (#{arguments.size} for 2)") if arguments.size != 2
22
+
23
+ first = arguments[0]
24
+ second = arguments[1]
25
+
26
+ unless first.is_a?(Array) && second.is_a?(Array)
27
+ raise(Puppet::ParseError, 'difference(): Requires 2 arrays')
28
+ end
29
+
30
+ result = first - second
31
+
32
+ return result
33
+ end
34
+ end
35
+
36
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,15 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:dirname, :type => :rvalue, :doc => <<-EOS
3
+ Returns the dirname of a path.
4
+ EOS
5
+ ) do |arguments|
6
+
7
+ raise(Puppet::ParseError, "dirname(): Wrong number of arguments " +
8
+ "given (#{arguments.size} for 1)") if arguments.size < 1
9
+
10
+ path = arguments[0]
11
+ return File.dirname(path)
12
+ end
13
+ end
14
+
15
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,33 @@
1
+ #
2
+ # downcase.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:downcase, :type => :rvalue, :doc => <<-EOS
7
+ Converts the case of a string or all strings in an array to lower case.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "downcase(): 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, 'downcase(): 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.downcase : i }
25
+ else
26
+ result = value.downcase
27
+ end
28
+
29
+ return result
30
+ end
31
+ end
32
+
33
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,28 @@
1
+ #
2
+ # empty.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:empty, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable is empty.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "empty(): 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, Hash, String].include?(klass)
18
+ raise(Puppet::ParseError, 'empty(): Requires either ' +
19
+ 'array, hash or string to work with')
20
+ end
21
+
22
+ result = value.empty?
23
+
24
+ return result
25
+ end
26
+ end
27
+
28
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,35 @@
1
+ #
2
+ # ensure_packages.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:ensure_packages, :type => :statement, :doc => <<-EOS
7
+ Takes a list of packages and only installs them if they don't already exist.
8
+ It optionally takes a hash as a second parameter that will be passed as the
9
+ third argument to the ensure_resource() function.
10
+ EOS
11
+ ) do |arguments|
12
+
13
+ if arguments.size > 2 or arguments.size == 0
14
+ raise(Puppet::ParseError, "ensure_packages(): Wrong number of arguments " +
15
+ "given (#{arguments.size} for 1 or 2)")
16
+ elsif arguments.size == 2 and !arguments[1].is_a?(Hash)
17
+ raise(Puppet::ParseError, 'ensure_packages(): Requires second argument to be a Hash')
18
+ end
19
+
20
+ packages = Array(arguments[0])
21
+
22
+ if arguments[1]
23
+ defaults = { 'ensure' => 'present' }.merge(arguments[1])
24
+ else
25
+ defaults = { 'ensure' => 'present' }
26
+ end
27
+
28
+ Puppet::Parser::Functions.function(:ensure_resource)
29
+ packages.each { |package_name|
30
+ function_ensure_resource(['package', package_name, defaults ])
31
+ }
32
+ end
33
+ end
34
+
35
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,45 @@
1
+ # Test whether a given class or definition is defined
2
+ require 'puppet/parser/functions'
3
+
4
+ Puppet::Parser::Functions.newfunction(:ensure_resource,
5
+ :type => :statement,
6
+ :doc => <<-'ENDOFDOC'
7
+ Takes a resource type, title, and a list of attributes that describe a
8
+ resource.
9
+
10
+ user { 'dan':
11
+ ensure => present,
12
+ }
13
+
14
+ This example only creates the resource if it does not already exist:
15
+
16
+ ensure_resource('user', 'dan', {'ensure' => 'present' })
17
+
18
+ If the resource already exists but does not match the specified parameters,
19
+ this function will attempt to recreate the resource leading to a duplicate
20
+ resource definition error.
21
+
22
+ An array of resources can also be passed in and each will be created with
23
+ the type and parameters specified if it doesn't already exist.
24
+
25
+ ensure_resource('user', ['dan','alex'], {'ensure' => 'present'})
26
+
27
+ ENDOFDOC
28
+ ) do |vals|
29
+ type, title, params = vals
30
+ raise(ArgumentError, 'Must specify a type') unless type
31
+ raise(ArgumentError, 'Must specify a title') unless title
32
+ params ||= {}
33
+
34
+ items = [title].flatten
35
+
36
+ items.each do |item|
37
+ Puppet::Parser::Functions.function(:defined_with_params)
38
+ if function_defined_with_params(["#{type}[#{item}]", params])
39
+ Puppet.debug("Resource #{type}[#{item}] not created because it already exists")
40
+ else
41
+ Puppet::Parser::Functions.function(:create_resources)
42
+ function_create_resources([type.capitalize, { item => params }])
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # flatten.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:flatten, :type => :rvalue, :doc => <<-EOS
7
+ This function flattens any deeply nested arrays and returns a single flat array
8
+ as a result.
9
+
10
+ *Examples:*
11
+
12
+ flatten(['a', ['b', ['c']]])
13
+
14
+ Would return: ['a','b','c']
15
+ EOS
16
+ ) do |arguments|
17
+
18
+ raise(Puppet::ParseError, "flatten(): 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, 'flatten(): Requires array to work with')
25
+ end
26
+
27
+ result = array.flatten
28
+
29
+ return result
30
+ end
31
+ end
32
+
33
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,25 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:floor, :type => :rvalue, :doc => <<-EOS
3
+ Returns the largest integer less or equal to the argument.
4
+ Takes a single numeric value as an argument.
5
+ EOS
6
+ ) do |arguments|
7
+
8
+ raise(Puppet::ParseError, "floor(): Wrong number of arguments " +
9
+ "given (#{arguments.size} for 1)") if arguments.size != 1
10
+
11
+ begin
12
+ arg = Float(arguments[0])
13
+ rescue TypeError, ArgumentError => e
14
+ raise(Puppet::ParseError, "floor(): Wrong argument type " +
15
+ "given (#{arguments[0]} for Numeric)")
16
+ end
17
+
18
+ raise(Puppet::ParseError, "floor(): Wrong argument type " +
19
+ "given (#{arg.class} for Numeric)") if arg.is_a?(Numeric) == false
20
+
21
+ arg.floor
22
+ end
23
+ end
24
+
25
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,46 @@
1
+ #
2
+ # fqdn_rotate.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:fqdn_rotate, :type => :rvalue, :doc => <<-EOS
7
+ Rotates an array a random number of times based on a nodes fqdn.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "fqdn_rotate(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size < 1
13
+
14
+ value = arguments[0]
15
+ klass = value.class
16
+ require 'digest/md5'
17
+
18
+ unless [Array, String].include?(klass)
19
+ raise(Puppet::ParseError, 'fqdn_rotate(): Requires either ' +
20
+ 'array or string to work with')
21
+ end
22
+
23
+ result = value.clone
24
+
25
+ string = value.is_a?(String) ? true : false
26
+
27
+ # Check whether it makes sense to rotate ...
28
+ return result if result.size <= 1
29
+
30
+ # We turn any string value into an array to be able to rotate ...
31
+ result = string ? result.split('') : result
32
+
33
+ elements = result.size
34
+
35
+ srand(Digest::MD5.hexdigest([lookupvar('::fqdn'),arguments].join(':')).hex)
36
+ rand(elements).times {
37
+ result.push result.shift
38
+ }
39
+
40
+ result = string ? result.join : result
41
+
42
+ return result
43
+ end
44
+ end
45
+
46
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,17 @@
1
+ module Puppet::Parser::Functions
2
+ newfunction(:get_module_path, :type =>:rvalue, :doc => <<-EOT
3
+ Returns the absolute path of the specified module for the current
4
+ environment.
5
+
6
+ Example:
7
+ $module_path = get_module_path('stdlib')
8
+ EOT
9
+ ) do |args|
10
+ raise(Puppet::ParseError, "get_module_path(): Wrong number of arguments, expects one") unless args.size == 1
11
+ if module_path = Puppet::Module.find(args[0], compiler.environment.to_s)
12
+ module_path.path
13
+ else
14
+ raise(Puppet::ParseError, "Could not find module #{args[0]} in environment #{compiler.environment}")
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ # Test whether a given class or definition is defined
2
+ require 'puppet/parser/functions'
3
+
4
+ Puppet::Parser::Functions.newfunction(:getparam,
5
+ :type => :rvalue,
6
+ :doc => <<-'ENDOFDOC'
7
+ Takes a resource reference and name of the parameter and
8
+ returns value of resource's parameter.
9
+
10
+ *Examples:*
11
+
12
+ define example_resource($param) {
13
+ }
14
+
15
+ example_resource { "example_resource_instance":
16
+ param => "param_value"
17
+ }
18
+
19
+ getparam(Example_resource["example_resource_instance"], "param")
20
+
21
+ Would return: param_value
22
+ ENDOFDOC
23
+ ) do |vals|
24
+ reference, param = vals
25
+ raise(ArgumentError, 'Must specify a reference') unless reference
26
+ raise(ArgumentError, 'Must specify name of a parameter') unless param and param.instance_of? String
27
+
28
+ return '' if param.empty?
29
+
30
+ if resource = findresource(reference.to_s)
31
+ return resource[param] if resource[param]
32
+ end
33
+
34
+ return ''
35
+ end
@@ -0,0 +1,26 @@
1
+ module Puppet::Parser::Functions
2
+
3
+ newfunction(:getvar, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
4
+ Lookup a variable in a remote namespace.
5
+
6
+ For example:
7
+
8
+ $foo = getvar('site::data::foo')
9
+ # Equivalent to $foo = $site::data::foo
10
+
11
+ This is useful if the namespace itself is stored in a string:
12
+
13
+ $datalocation = 'site::data'
14
+ $bar = getvar("${datalocation}::bar")
15
+ # Equivalent to $bar = $site::data::bar
16
+ ENDHEREDOC
17
+
18
+ unless args.length == 1
19
+ raise Puppet::ParseError, ("getvar(): wrong number of arguments (#{args.length}; must be 1)")
20
+ end
21
+
22
+ self.lookupvar("#{args[0]}")
23
+
24
+ end
25
+
26
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # grep.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:grep, :type => :rvalue, :doc => <<-EOS
7
+ This function searches through an array and returns any elements that match
8
+ the provided regular expression.
9
+
10
+ *Examples:*
11
+
12
+ grep(['aaa','bbb','ccc','aaaddd'], 'aaa')
13
+
14
+ Would return:
15
+
16
+ ['aaa','aaaddd']
17
+ EOS
18
+ ) do |arguments|
19
+
20
+ if (arguments.size != 2) then
21
+ raise(Puppet::ParseError, "grep(): Wrong number of arguments "+
22
+ "given #{arguments.size} for 2")
23
+ end
24
+
25
+ a = arguments[0]
26
+ pattern = Regexp.new(arguments[1])
27
+
28
+ a.grep(pattern)
29
+
30
+ end
31
+ end
32
+
33
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,52 @@
1
+ #
2
+ # has_interface_with
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:has_interface_with, :type => :rvalue, :doc => <<-EOS
7
+ Returns boolean based on kind and value:
8
+ * macaddress
9
+ * netmask
10
+ * ipaddress
11
+ * network
12
+
13
+ has_interface_with("macaddress", "x:x:x:x:x:x")
14
+ has_interface_with("ipaddress", "127.0.0.1") => true
15
+ etc.
16
+
17
+ If no "kind" is given, then the presence of the interface is checked:
18
+ has_interface_with("lo") => true
19
+ EOS
20
+ ) do |args|
21
+
22
+ raise(Puppet::ParseError, "has_interface_with(): Wrong number of arguments " +
23
+ "given (#{args.size} for 1 or 2)") if args.size < 1 or args.size > 2
24
+
25
+ interfaces = lookupvar('interfaces')
26
+
27
+ # If we do not have any interfaces, then there are no requested attributes
28
+ return false if (interfaces == :undefined)
29
+
30
+ interfaces = interfaces.split(',')
31
+
32
+ if args.size == 1
33
+ return interfaces.member?(args[0])
34
+ end
35
+
36
+ kind, value = args
37
+
38
+ if lookupvar(kind) == value
39
+ return true
40
+ end
41
+
42
+ result = false
43
+ interfaces.each do |iface|
44
+ if value == lookupvar("#{kind}_#{iface}")
45
+ result = true
46
+ break
47
+ end
48
+ end
49
+
50
+ result
51
+ end
52
+ end
@@ -0,0 +1,25 @@
1
+ #
2
+ # has_ip_address
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:has_ip_address, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the client has the requested IP address on some interface.
8
+
9
+ This function iterates through the 'interfaces' fact and checks the
10
+ 'ipaddress_IFACE' facts, performing a simple string comparison.
11
+ EOS
12
+ ) do |args|
13
+
14
+ raise(Puppet::ParseError, "has_ip_address(): Wrong number of arguments " +
15
+ "given (#{args.size} for 1)") if args.size != 1
16
+
17
+ Puppet::Parser::Functions.autoloader.load(:has_interface_with) \
18
+ unless Puppet::Parser::Functions.autoloader.loaded?(:has_interface_with)
19
+
20
+ function_has_interface_with(['ipaddress', args[0]])
21
+
22
+ end
23
+ end
24
+
25
+ # vim:sts=2 sw=2
@@ -0,0 +1,25 @@
1
+ #
2
+ # has_ip_network
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:has_ip_network, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the client has an IP address within the requested network.
8
+
9
+ This function iterates through the 'interfaces' fact and checks the
10
+ 'network_IFACE' facts, performing a simple string comparision.
11
+ EOS
12
+ ) do |args|
13
+
14
+ raise(Puppet::ParseError, "has_ip_network(): Wrong number of arguments " +
15
+ "given (#{args.size} for 1)") if args.size != 1
16
+
17
+ Puppet::Parser::Functions.autoloader.load(:has_interface_with) \
18
+ unless Puppet::Parser::Functions.autoloader.loaded?(:has_interface_with)
19
+
20
+ function_has_interface_with(['network', args[0]])
21
+
22
+ end
23
+ end
24
+
25
+ # vim:sts=2 sw=2
@@ -0,0 +1,28 @@
1
+ module Puppet::Parser::Functions
2
+
3
+ newfunction(:has_key, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
4
+ Determine if a hash has a certain key value.
5
+
6
+ Example:
7
+
8
+ $my_hash = {'key_one' => 'value_one'}
9
+ if has_key($my_hash, 'key_two') {
10
+ notice('we will not reach here')
11
+ }
12
+ if has_key($my_hash, 'key_one') {
13
+ notice('this will be printed')
14
+ }
15
+
16
+ ENDHEREDOC
17
+
18
+ unless args.length == 2
19
+ raise Puppet::ParseError, ("has_key(): wrong number of arguments (#{args.length}; must be 2)")
20
+ end
21
+ unless args[0].is_a?(Hash)
22
+ raise Puppet::ParseError, "has_key(): expects the first argument to be a hash, got #{args[0].inspect} which is of type #{args[0].class}"
23
+ end
24
+ args[0].has_key?(args[1])
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,41 @@
1
+ #
2
+ # hash.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:hash, :type => :rvalue, :doc => <<-EOS
7
+ This function converts an array into a hash.
8
+
9
+ *Examples:*
10
+
11
+ hash(['a',1,'b',2,'c',3])
12
+
13
+ Would return: {'a'=>1,'b'=>2,'c'=>3}
14
+ EOS
15
+ ) do |arguments|
16
+
17
+ raise(Puppet::ParseError, "hash(): Wrong number of arguments " +
18
+ "given (#{arguments.size} for 1)") if arguments.size < 1
19
+
20
+ array = arguments[0]
21
+
22
+ unless array.is_a?(Array)
23
+ raise(Puppet::ParseError, 'hash(): Requires array to work with')
24
+ end
25
+
26
+ result = {}
27
+
28
+ begin
29
+ # This is to make it compatible with older version of Ruby ...
30
+ array = array.flatten
31
+ result = Hash[*array]
32
+ rescue Exception
33
+ raise(Puppet::ParseError, 'hash(): Unable to compute ' +
34
+ 'hash from array given')
35
+ end
36
+
37
+ return result
38
+ end
39
+ end
40
+
41
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,34 @@
1
+ #
2
+ # intersection.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:intersection, :type => :rvalue, :doc => <<-EOS
7
+ This function returns an array an intersection of two.
8
+
9
+ *Examples:*
10
+
11
+ intersection(["a","b","c"],["b","c","d"])
12
+
13
+ Would return: ["b","c"]
14
+ EOS
15
+ ) do |arguments|
16
+
17
+ # Two arguments are required
18
+ raise(Puppet::ParseError, "intersection(): Wrong number of arguments " +
19
+ "given (#{arguments.size} for 2)") if arguments.size != 2
20
+
21
+ first = arguments[0]
22
+ second = arguments[1]
23
+
24
+ unless first.is_a?(Array) && second.is_a?(Array)
25
+ raise(Puppet::ParseError, 'intersection(): Requires 2 arrays')
26
+ end
27
+
28
+ result = first & second
29
+
30
+ return result
31
+ end
32
+ end
33
+
34
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,22 @@
1
+ #
2
+ # is_array.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:is_array, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable passed to this function is an array.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "is_array(): 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?(Array)
17
+
18
+ return result
19
+ end
20
+ end
21
+
22
+ # vim: set ts=2 sw=2 et :