bebox 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,520 @@
1
+ (*
2
+ Module: FixedSudoers
3
+ Parses /etc/sudoers
4
+
5
+ Author: Raphael Pinson <raphink@gmail.com>
6
+
7
+ About: Reference
8
+ This lens tries to keep as close as possible to `man sudoers` where possible.
9
+
10
+ For example, recursive definitions such as
11
+
12
+ > Cmnd_Spec_List ::= Cmnd_Spec |
13
+ > Cmnd_Spec ',' Cmnd_Spec_List
14
+
15
+ are replaced by
16
+
17
+ > let cmnd_spec_list = cmnd_spec . ( sep_com . cmnd_spec )*
18
+
19
+ since Augeas cannot deal with recursive definitions.
20
+ The definitions from `man sudoers` are put as commentaries for reference
21
+ throughout the file. More information can be found in the manual.
22
+
23
+ About: License
24
+ This file is licensed under the LGPLv2+, like the rest of Augeas.
25
+
26
+
27
+ About: Lens Usage
28
+ Sample usage of this lens in augtool
29
+
30
+ * Set first Defaults to apply to the "LOCALNET" network alias
31
+ > set /files/etc/sudoers/Defaults[1]/type "@LOCALNET"
32
+ * List all user specifications applying explicitely to the "admin" Unix group
33
+ > match /files/etc/sudoers/spec/user "%admin"
34
+ * Remove the full 3rd user specification
35
+ > rm /files/etc/sudoers/spec[3]
36
+
37
+ About: Configuration files
38
+ This lens applies to /etc/sudoers. See <filter>.
39
+ *)
40
+
41
+
42
+
43
+ module FixedSudoers =
44
+ autoload xfm
45
+
46
+ (************************************************************************
47
+ * Group: USEFUL PRIMITIVES
48
+ *************************************************************************)
49
+
50
+ (* Group: Generic primitives *)
51
+ (* Variable: eol *)
52
+ let eol = del /[ \t]*\n/ "\n"
53
+
54
+ (* Variable: indent *)
55
+ let indent = del /[ \t]*/ ""
56
+
57
+
58
+ (* Group: Separators *)
59
+
60
+ (* Variable: sep_spc *)
61
+ let sep_spc = del /[ \t]+/ " "
62
+
63
+ (* Variable: sep_cont *)
64
+ let sep_cont = del /([ \t]+|[ \t]*\\\\\n[ \t]*)/ " "
65
+
66
+ (* Variable: sep_cont_opt *)
67
+ let sep_cont_opt = del /([ \t]*|[ \t]*\\\\\n[ \t]*)/ " "
68
+
69
+ (* Variable: sep_com *)
70
+ let sep_com = sep_cont_opt . Util.del_str "," . sep_cont_opt
71
+
72
+ (* Variable: sep_eq *)
73
+ let sep_eq = sep_cont_opt . Util.del_str "=" . sep_cont_opt
74
+
75
+ (* Variable: sep_col *)
76
+ let sep_col = sep_cont_opt . Util.del_str ":" . sep_cont_opt
77
+
78
+ (* Variable: sep_dquote *)
79
+ let sep_dquote = Util.del_str "\""
80
+
81
+
82
+ (* Group: Stores *)
83
+
84
+ (* Variable: sto_to_com_cmnd
85
+ sto_to_com_cmnd does not begin or end with a space *)
86
+ let sto_to_com_cmnd = store /([^,=:#() \t\n\\\\]([^,=:#()\n\\\\]|\\\\[=:,\\\\])*[^,=:#() \t\n\\\\])|[^,=:#() \t\n\\\\]/
87
+
88
+ (* Variable: sto_to_com
89
+
90
+ There could be a \ in the middle of a command *)
91
+ let sto_to_com = store /([^,=:#() \t\n\\\\][^,=:#()\n]*[^,=:#() \t\n\\\\])|[^,=:#() \t\n\\\\]/
92
+
93
+ (* Variable: sto_to_com_host *)
94
+ let sto_to_com_host = store /[^,=:#() \t\n\\\\]+/
95
+
96
+
97
+ (* Variable: sto_to_com_user
98
+ Escaped spaces are allowed *)
99
+ let sto_to_com_user = store ( /([^,=:#() \t\n]([^,=:#() \t\n]|(\\\\[ \t]))*[^,=:#() \t\n])|[^,=:#() \t\n]/
100
+ - /(User|Runas|Host|Cmnd)_Alias|Defaults.*/ )
101
+
102
+ (* Variable: sto_to_com_col *)
103
+ let sto_to_com_col = store /[^",=#() \t\n\\\\]+/ (* " relax emacs *)
104
+
105
+ (* Variable: sto_to_eq *)
106
+ let sto_to_eq = store /[^,=:#() \t\n\\\\]+/
107
+
108
+ (* Variable: sto_to_spc *)
109
+ let sto_to_spc = store /[^", \t\n\\\\]+|"[^", \t\n\\\\]+"/
110
+
111
+ (* Variable: sto_to_spc_no_dquote *)
112
+ let sto_to_spc_no_dquote = store /[^",# \t\n\\\\]+/ (* " relax emacs *)
113
+
114
+ (* Variable: sto_integer *)
115
+ let sto_integer = store /[0-9]+/
116
+
117
+
118
+ (* Group: Comments and empty lines *)
119
+
120
+ (* View: comment
121
+ Map comments in "#comment" nodes *)
122
+ let comment =
123
+ let sto_to_eol = store (/([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /include(dir)?.*/) in
124
+ [ label "#comment" . del /[ \t]*#[ \t]*/ "# " . sto_to_eol . eol ]
125
+
126
+ (* View: comment_eol
127
+ Requires a space before the # *)
128
+ let comment_eol = Util.comment_generic /[ \t]+#[ \t]*/ " # "
129
+
130
+ (* View: comment_or_eol
131
+ A <comment_eol> or <eol> *)
132
+ let comment_or_eol = comment_eol | (del /([ \t]+#\n|[ \t]*\n)/ "\n")
133
+
134
+ (* View: empty
135
+ Map empty lines *)
136
+ let empty = [ del /[ \t]*#?[ \t]*\n/ "\n" ]
137
+
138
+ (* View: includedir *)
139
+ let includedir =
140
+ [ key /#include(dir)?/ . Sep.space . store Rx.fspath . eol ]
141
+
142
+
143
+ (************************************************************************
144
+ * Group: ALIASES
145
+ *************************************************************************)
146
+
147
+ (************************************************************************
148
+ * View: alias_field
149
+ * Generic alias field to gather all Alias definitions
150
+ *
151
+ * Definition:
152
+ * > User_Alias ::= NAME '=' User_List
153
+ * > Runas_Alias ::= NAME '=' Runas_List
154
+ * > Host_Alias ::= NAME '=' Host_List
155
+ * > Cmnd_Alias ::= NAME '=' Cmnd_List
156
+ *
157
+ * Parameters:
158
+ * kw:string - the label string
159
+ * sto:lens - the store lens
160
+ *************************************************************************)
161
+ let alias_field (kw:string) (sto:lens) = [ label kw . sto ]
162
+
163
+ (* View: alias_list
164
+ List of <alias_fields>, separated by commas *)
165
+ let alias_list (kw:string) (sto:lens) =
166
+ alias_field kw sto . ( sep_com . alias_field kw sto )*
167
+
168
+ (************************************************************************
169
+ * View: alias_name
170
+ * Name of an <alias_entry_single>
171
+ *
172
+ * Definition:
173
+ * > NAME ::= [A-Z]([A-Z][0-9]_)*
174
+ *************************************************************************)
175
+ let alias_name
176
+ = [ label "name" . store /[A-Z][A-Z0-9_]*/ ]
177
+
178
+ (************************************************************************
179
+ * View: alias_entry_single
180
+ * Single <alias_entry>, named using <alias_name> and listing <alias_list>
181
+ *
182
+ * Definition:
183
+ * > Alias_Type NAME = item1, item2, ...
184
+ *
185
+ * Parameters:
186
+ * field:string - the field name, passed to <alias_list>
187
+ * sto:lens - the store lens, passed to <alias_list>
188
+ *************************************************************************)
189
+ let alias_entry_single (field:string) (sto:lens)
190
+ = [ label "alias" . alias_name . sep_eq . alias_list field sto ]
191
+
192
+ (************************************************************************
193
+ * View: alias_entry
194
+ * Alias entry, a list of comma-separated <alias_entry_single> fields
195
+ *
196
+ * Definition:
197
+ * > Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
198
+ *
199
+ * Parameters:
200
+ * kw:string - the alias keyword string
201
+ * field:string - the field name, passed to <alias_entry_single>
202
+ * sto:lens - the store lens, passed to <alias_entry_single>
203
+ *************************************************************************)
204
+ let alias_entry (kw:string) (field:string) (sto:lens)
205
+ = [ indent . key kw . sep_cont . alias_entry_single field sto
206
+ . ( sep_col . alias_entry_single field sto )* . comment_or_eol ]
207
+
208
+ (* TODO: go further in user definitions *)
209
+ (* View: user_alias
210
+ User_Alias, see <alias_field> *)
211
+ let user_alias = alias_entry "User_Alias" "user" sto_to_com
212
+ (* View: runas_alias
213
+ Run_Alias, see <alias_field> *)
214
+ let runas_alias = alias_entry "Runas_Alias" "runas_user" sto_to_com
215
+ (* View: host_alias
216
+ Host_Alias, see <alias_field> *)
217
+ let host_alias = alias_entry "Host_Alias" "host" sto_to_com
218
+ (* View: cmnd_alias
219
+ Cmnd_Alias, see <alias_field> *)
220
+ let cmnd_alias = alias_entry "Cmnd_Alias" "command" sto_to_com_cmnd
221
+
222
+
223
+ (************************************************************************
224
+ * View: alias
225
+ * Every kind of Alias entry,
226
+ * see <user_alias>, <runas_alias>, <host_alias> and <cmnd_alias>
227
+ *
228
+ * Definition:
229
+ * > Alias ::= 'User_Alias' User_Alias (':' User_Alias)* |
230
+ * > 'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
231
+ * > 'Host_Alias' Host_Alias (':' Host_Alias)* |
232
+ * > 'Cmnd_Alias' Cmnd_Alias (':' Cmnd_Alias)*
233
+ *************************************************************************)
234
+ let alias = user_alias | runas_alias | host_alias | cmnd_alias
235
+ (************************************************************************
236
+ * Group: DEFAULTS
237
+ *************************************************************************)
238
+
239
+ (************************************************************************
240
+ * View: default_type
241
+ * Type definition for <defaults>
242
+ *
243
+ * Definition:
244
+ * > Default_Type ::= 'Defaults' |
245
+ * > 'Defaults' '@' Host_List |
246
+ * > 'Defaults' ':' User_List |
247
+ * > 'Defaults' '>' Runas_List
248
+ *************************************************************************)
249
+ let default_type =
250
+ let value = store /[@:>][^ \t\n\\\\]+/ in
251
+ [ label "type" . value ]
252
+
253
+ (************************************************************************
254
+ * View: del_negate
255
+ * Delete an even number of '!' signs
256
+ *************************************************************************)
257
+ let del_negate = del /(!!)*/ ""
258
+
259
+ (************************************************************************
260
+ * View: negate_node
261
+ * Negation of boolean values for <defaults>. Accept one optional '!'
262
+ * and produce a 'negate' node if there is one.
263
+ *************************************************************************)
264
+ let negate_node = [ del "!" "!" . label "negate" ]
265
+
266
+ let negate_or_value (key:lens) (value:lens) =
267
+ [ del_negate . (negate_node . key | key . value) ]
268
+
269
+ (************************************************************************
270
+ * View: parameter_flag
271
+ * A flag parameter for <defaults>
272
+ *
273
+ * Flags are implicitly boolean and can be turned off via the '!' operator.
274
+ * Some integer, string and list parameters may also be used in a boolean
275
+ * context to disable them.
276
+ *************************************************************************)
277
+ let parameter_flag_kw = "always_set_home" | "authenticate" | "env_editor"
278
+ | "env_reset" | "fqdn" | "ignore_dot"
279
+ | "ignore_local_sudoers" | "insults" | "log_host"
280
+ | "log_year" | "long_otp_prompt" | "mail_always"
281
+ | "mail_badpass" | "mail_no_host" | "mail_no_perms"
282
+ | "mail_no_user" | "noexec" | "path_info"
283
+ | "passprompt_override" | "preserve_groups"
284
+ | "requiretty" | "root_sudo" | "rootpw" | "runaspw"
285
+ | "set_home" | "set_logname" | "setenv"
286
+ | "shell_noargs" | "stay_setuid" | "targetpw"
287
+ | "tty_tickets" | "visiblepw"
288
+
289
+ let parameter_flag = [ del_negate . negate_node?
290
+ . key parameter_flag_kw ]
291
+
292
+ (************************************************************************
293
+ * View: parameter_integer
294
+ * An integer parameter for <defaults>
295
+ *************************************************************************)
296
+ let parameter_integer_nobool_kw = "passwd_tries"
297
+
298
+ let parameter_integer_nobool = [ key parameter_integer_nobool_kw . sep_eq
299
+ . del /"?/ "" . sto_integer
300
+ . del /"?/ "" ]
301
+
302
+
303
+ let parameter_integer_bool_kw = "loglinelen" | "passwd_timeout"
304
+ | "timestamp_timeout" | "umask"
305
+
306
+ let parameter_integer_bool =
307
+ negate_or_value
308
+ (key parameter_integer_bool_kw)
309
+ (sep_eq . del /"?/ "" . sto_integer . del /"?/ "")
310
+
311
+ let parameter_integer = parameter_integer_nobool
312
+ | parameter_integer_bool
313
+
314
+ (************************************************************************
315
+ * View: parameter_string
316
+ * A string parameter for <defaults>
317
+ *
318
+ * An odd number of '!' operators negate the value of the item;
319
+ * an even number just cancel each other out.
320
+ *************************************************************************)
321
+ let parameter_string_nobool_kw = "badpass_message" | "editor" | "mailsub"
322
+ | "noexec_file" | "passprompt" | "runas_default"
323
+ | "syslog_badpri" | "syslog_goodpri"
324
+ | "timestampdir" | "timestampowner" | "secure_path"
325
+
326
+ let parameter_string_nobool = [ key parameter_string_nobool_kw . sep_eq
327
+ . del /"?/ "" . sto_to_com_col
328
+ . del /"?/ "" ]
329
+
330
+ let parameter_string_bool_kw = "exempt_group" | "lecture" | "lecture_file"
331
+ | "listpw" | "logfile" | "mailerflags"
332
+ | "mailerpath" | "mailto" | "exempt_group"
333
+ | "syslog" | "verifypw" | "logfile"
334
+ | "mailerflags" | "mailerpath" | "mailto"
335
+ | "syslog" | "verifypw"
336
+
337
+ let parameter_string_bool =
338
+ negate_or_value
339
+ (key parameter_string_bool_kw)
340
+ (sep_eq . sto_to_com_col)
341
+
342
+ let parameter_string = parameter_string_nobool
343
+ | parameter_string_bool
344
+
345
+ (************************************************************************
346
+ * View: parameter_lists
347
+ * A single list parameter for <defaults>
348
+ *
349
+ * All lists can be used in a boolean context
350
+ * The argument may be a double-quoted, space-separated list or a single
351
+ * value without double-quotes.
352
+ * The list can be replaced, added to, deleted from, or disabled
353
+ * by using the =, +=, -=, and ! operators respectively.
354
+ * An odd number of '!' operators negate the value of the item;
355
+ * an even number just cancel each other out.
356
+ *************************************************************************)
357
+ let parameter_lists_kw = "env_check" | "env_delete" | "env_keep"
358
+ let parameter_lists_value = [ label "var" . sto_to_spc_no_dquote ]
359
+ let parameter_lists_value_dquote = [ label "var"
360
+ . del /"?/ "" . sto_to_spc_no_dquote
361
+ . del /"?/ "" ]
362
+
363
+ let parameter_lists_values = parameter_lists_value_dquote
364
+ | ( sep_dquote . parameter_lists_value
365
+ . ( sep_cont . parameter_lists_value )+
366
+ . sep_dquote )
367
+
368
+ let parameter_lists_sep = sep_cont_opt
369
+ . ( [ del "+" "+" . label "append" ]
370
+ | [ del "-" "-" . label "remove" ] )?
371
+ . del "=" "=" . sep_cont_opt
372
+
373
+ let parameter_lists =
374
+ negate_or_value
375
+ (key parameter_lists_kw)
376
+ (parameter_lists_sep . parameter_lists_values)
377
+
378
+ (************************************************************************
379
+ * View: parameter
380
+ * A single parameter for <defaults>
381
+ *
382
+ * Definition:
383
+ * > Parameter ::= Parameter '=' Value |
384
+ * > Parameter '+=' Value |
385
+ * > Parameter '-=' Value |
386
+ * > '!'* Parameter
387
+ *
388
+ * Parameters may be flags, integer values, strings, or lists.
389
+ *
390
+ *************************************************************************)
391
+ let parameter = parameter_flag | parameter_integer
392
+ | parameter_string | parameter_lists
393
+
394
+ (************************************************************************
395
+ * View: parameter_list
396
+ * A list of comma-separated <parameters> for <defaults>
397
+ *
398
+ * Definition:
399
+ * > Parameter_List ::= Parameter |
400
+ * > Parameter ',' Parameter_List
401
+ *************************************************************************)
402
+ let parameter_list = parameter . ( sep_com . parameter )*
403
+
404
+ (************************************************************************
405
+ * View: defaults
406
+ * A Defaults entry
407
+ *
408
+ * Definition:
409
+ * > Default_Entry ::= Default_Type Parameter_List
410
+ *************************************************************************)
411
+ let defaults = [ indent . key "Defaults" . default_type? . sep_cont
412
+ . parameter_list . comment_or_eol ]
413
+
414
+
415
+
416
+ (************************************************************************
417
+ * Group: USER SPECIFICATION
418
+ *************************************************************************)
419
+
420
+ (************************************************************************
421
+ * View: runas_spec
422
+ * A runas specification for <spec>, using <alias_list> for listing
423
+ * users and/or groups used to run a command
424
+ *
425
+ * Definition:
426
+ * > Runas_Spec ::= '(' Runas_List ')' |
427
+ * > '(:' Runas_List ')' |
428
+ * > '(' Runas_List ':' Runas_List ')'
429
+ *************************************************************************)
430
+ let runas_spec_user = alias_list "runas_user" sto_to_com
431
+ let runas_spec_group = Util.del_str ":" . indent
432
+ . alias_list "runas_group" sto_to_com
433
+
434
+ let runas_spec_usergroup = runas_spec_user . indent . runas_spec_group
435
+
436
+ let runas_spec = Util.del_str "("
437
+ . (runas_spec_user
438
+ | runas_spec_group
439
+ | runas_spec_usergroup )
440
+ . Util.del_str ")" . sep_cont_opt
441
+
442
+ (************************************************************************
443
+ * View: tag_spec
444
+ * Tag specification for <spec>
445
+ *
446
+ * Definition:
447
+ * > Tag_Spec ::= ('NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' |
448
+ * > 'SETENV:' | 'NOSETENV:')
449
+ *************************************************************************)
450
+ let tag_spec =
451
+ [ label "tag" . store /(NO)?(PASSWD|EXEC|SETENV)/ . sep_col ]
452
+
453
+ (************************************************************************
454
+ * View: cmnd_spec
455
+ * Command specification for <spec>,
456
+ * with optional <runas_spec> and any amount of <tag_specs>
457
+ *
458
+ * Definition:
459
+ * > Cmnd_Spec ::= Runas_Spec? Tag_Spec* Cmnd
460
+ *************************************************************************)
461
+ let cmnd_spec =
462
+ [ label "command" . runas_spec? . tag_spec* . sto_to_com_cmnd ]
463
+
464
+ (************************************************************************
465
+ * View: cmnd_spec_list
466
+ * A list of comma-separated <cmnd_specs>
467
+ *
468
+ * Definition:
469
+ * > Cmnd_Spec_List ::= Cmnd_Spec |
470
+ * > Cmnd_Spec ',' Cmnd_Spec_List
471
+ *************************************************************************)
472
+ let cmnd_spec_list = cmnd_spec . ( sep_com . cmnd_spec )*
473
+
474
+
475
+ (************************************************************************
476
+ * View: spec_list
477
+ * Group of hosts with <cmnd_spec_list>
478
+ *************************************************************************)
479
+ let spec_list = [ label "host_group" . alias_list "host" sto_to_com_host
480
+ . sep_eq . cmnd_spec_list ]
481
+
482
+ (************************************************************************
483
+ * View: spec
484
+ * A user specification, listing colon-separated <spec_lists>
485
+ *
486
+ * Definition:
487
+ * > User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \
488
+ * > (':' Host_List '=' Cmnd_Spec_List)*
489
+ *************************************************************************)
490
+ let spec = [ label "spec" . indent
491
+ . alias_list "user" sto_to_com_user . sep_cont
492
+ . spec_list
493
+ . ( sep_col . spec_list )* . comment_or_eol ]
494
+
495
+
496
+ (************************************************************************
497
+ * Group: LENS & FILTER
498
+ *************************************************************************)
499
+
500
+ (* View: lns
501
+ The sudoers lens, any amount of
502
+ * <empty> lines
503
+ * <comments>
504
+ * <includedirs>
505
+ * <aliases>
506
+ * <defaults>
507
+ * <specs>
508
+ *)
509
+ let lns = ( empty | comment | includedir | alias | defaults | spec )*
510
+
511
+ (* View: filter *)
512
+ let filter = (incl "/etc/sudoers")
513
+ . (incl "/usr/local/etc/sudoers")
514
+ . (incl "/etc/sudoers.d/*")
515
+ . (incl "/usr/local/etc/sudoers.d/*")
516
+ . (incl "/opt/csw/etc/sudoers")
517
+ . (incl "/etc/opt/csw/sudoers")
518
+ . Util.stdexcl
519
+
520
+ let xfm = transform lns filter
@@ -0,0 +1,76 @@
1
+ # Class: sudo::allow
2
+ #
3
+ # This class allows you to take complete advantage of automatic parameter
4
+ # lookup using a Hiera database. Providing a singleton class that accepts
5
+ # arrays in the parameters makes it possible to implement specific user
6
+ # or group configuration in Hiera, whereas the use of defined types is
7
+ # normally restricted to Puppet manifests.
8
+ #
9
+ # Furthermore, having separate parameters for "add" and "replace" modes
10
+ # allows you to take full advantage of inheritance in the Hiera database
11
+ # while still allowing for exceptions if required.
12
+ #
13
+ # This class works best with Puppet 3.0 or higher.
14
+ #
15
+ # Parameters:
16
+ # [*add_users*]
17
+ # Define the set of users with sudo privileges by getting all values in
18
+ # the hierarchy for this key, then flattening them into a single array
19
+ # of unique values.
20
+ # Default: empty array
21
+ #
22
+ # [*add_groups*]
23
+ # Define the set of groups with sudo privileges by getting all values in
24
+ # the hierarchy for this key, then flattening them into a single array
25
+ # of unique values.
26
+ # Default: empty array
27
+ #
28
+ # [*replace_users*]
29
+ # Override any values specified in add_users. If you specify this value
30
+ # in your manifest or Hiera database, the contents of "add_users" will
31
+ # be ignored. With Hiera, a standard priority lookup is used. Note that
32
+ # if replace_users is specified at ANY level of the hierarchy, then
33
+ # add_users is ignored at EVERY level of the hierarchy.
34
+ # Default: undef
35
+ #
36
+ # [*replace_groups*]
37
+ # Override any values specified in add_groups. If you specify this value
38
+ # in your manifest or Hiera database, the contents of "add_groups" will
39
+ # be ignored. With Hiera, a standard priority lookup is used. Note that
40
+ # if replace_groups is specified at ANY level of the hierarchy, then
41
+ # add_groups is ignored at EVERY level of the hierarchy.
42
+ # Default: undef
43
+ #
44
+ # Actions:
45
+ # Creates file in sudoers.d that permits specific users and groups to sudo.
46
+ #
47
+ # Sample Usage:
48
+ # class { 'sudo::allow':
49
+ # add_users => ['jsmith'],
50
+ # add_groups => ['wheel'],
51
+ # }
52
+ #
53
+ # [Remember: No empty lines between comments and class definition]
54
+ class sudo::allow(
55
+ $add_users = [],
56
+ $add_groups = [],
57
+ $replace_users = undef,
58
+ $replace_groups = undef
59
+ ) {
60
+ # TODO validate that all input is arrays
61
+
62
+ if $replace_users != undef {
63
+ $users = $replace_users
64
+ } else {
65
+ $users = hiera_array("${module_name}::allow::add_users", $add_users)
66
+ }
67
+ if $replace_groups != undef {
68
+ $groups = $replace_groups
69
+ } else {
70
+ $groups = hiera_array("${module_name}::allow::add_groups", $add_groups)
71
+ }
72
+
73
+ sudo::conf { 'sudo_users_groups':
74
+ content => template("${module_name}/users_groups.erb"),
75
+ }
76
+ }
@@ -0,0 +1,105 @@
1
+ # Define: sudo::conf
2
+ #
3
+ # This module manages sudo configurations
4
+ #
5
+ # Parameters:
6
+ # [*ensure*]
7
+ # Ensure if present or absent.
8
+ # Default: present
9
+ #
10
+ # [*priority*]
11
+ # Prefix file name with $priority
12
+ # Default: 10
13
+ #
14
+ # [*content*]
15
+ # Content of configuration snippet.
16
+ # Default: undef
17
+ #
18
+ # [*source*]
19
+ # Source of configuration snippet.
20
+ # Default: undef
21
+ #
22
+ # [*sudo_config_dir*]
23
+ # Where to place configuration snippets.
24
+ # Only set this, if your platform is not supported or
25
+ # you know, what you're doing.
26
+ # Default: auto-set, platform specific
27
+ #
28
+ # Actions:
29
+ # Installs sudo configuration snippets
30
+ #
31
+ # Requires:
32
+ # Class sudo
33
+ #
34
+ # Sample Usage:
35
+ # sudo::conf { 'admins':
36
+ # source => 'puppet:///files/etc/sudoers.d/admins',
37
+ # }
38
+ #
39
+ # [Remember: No empty lines between comments and class definition]
40
+ define sudo::conf(
41
+ $ensure = present,
42
+ $priority = 10,
43
+ $content = undef,
44
+ $source = undef,
45
+ $sudo_config_dir = undef
46
+ ) {
47
+
48
+ include sudo
49
+
50
+ # Hack to allow the user to set the config_dir from the
51
+ # sudo::config parameter, but default to $sudo::params::config_dir
52
+ # if it is not provided. $sudo::params isn't included before
53
+ # the parameters are loaded in.
54
+ $sudo_config_dir_real = $sudo_config_dir ? {
55
+ undef => $sudo::params::config_dir,
56
+ $sudo_config_dir => $sudo_config_dir
57
+ }
58
+
59
+ # sudo skip file name that contain a "."
60
+ $dname = regsubst($name, '\.', '-', 'G')
61
+
62
+ # build current file name with path
63
+ $cur_file = "${sudo_config_dir_real}${priority}_${dname}"
64
+
65
+ Class['sudo'] -> Sudo::Conf[$name]
66
+
67
+ if $content != undef {
68
+ $content_real = "${content}\n"
69
+ } else {
70
+ $content_real = undef
71
+ }
72
+
73
+ if $ensure == 'present' {
74
+ $notify_real = Exec["sudo-syntax-check for file ${cur_file}"]
75
+ } else {
76
+ $notify_real = undef
77
+ }
78
+
79
+ file { "${priority}_${dname}":
80
+ ensure => $ensure,
81
+ path => $cur_file,
82
+ owner => 'root',
83
+ group => $sudo::params::config_file_group,
84
+ mode => '0440',
85
+ source => $source,
86
+ content => $content_real,
87
+ notify => $notify_real,
88
+ }
89
+
90
+ exec {"sudo-syntax-check for file ${cur_file}":
91
+ command => "visudo -c || ( rm -f '${cur_file}' && exit 1)",
92
+ refreshonly => true,
93
+ path => [
94
+ '/bin',
95
+ '/sbin',
96
+ '/usr/bin',
97
+ '/usr/sbin',
98
+ '/usr/local/bin',
99
+ '/usr/local/sbin'
100
+ ],
101
+ }
102
+
103
+ File["${priority}_${dname}"] ->
104
+ Exec["sudo-syntax-check for file ${cur_file}"]
105
+ }