puppet 0.24.6 → 0.24.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -38,18 +38,13 @@ module Puppet
|
|
38
38
|
return nil
|
39
39
|
end
|
40
40
|
property_default = self.parse_selinux_context(property, context)
|
41
|
-
|
41
|
+
if not property_default.nil?
|
42
|
+
self.debug "Found #{property} default '#{property_default}' for #{@resource[:path]}"
|
43
|
+
end
|
42
44
|
return property_default
|
43
45
|
end
|
44
46
|
|
45
47
|
def sync
|
46
|
-
unless @resource.stat(false)
|
47
|
-
stat = @resource.stat(true)
|
48
|
-
unless stat
|
49
|
-
return nil
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
48
|
self.set_selinux_context(@resource[:path], @should, name)
|
54
49
|
return :file_changed
|
55
50
|
end
|
data/lib/puppet/type/group.rb
CHANGED
@@ -1,28 +1,22 @@
|
|
1
|
-
# Manage Unix groups. This class is annoyingly complicated; There
|
2
|
-
# is some variety in whether systems use 'groupadd' or 'addgroup', but OS X
|
3
|
-
# significantly complicates the picture by using NetInfo. Eventually we
|
4
|
-
# will also need to deal with systems that have their groups hosted elsewhere
|
5
|
-
# (e.g., in LDAP). That will likely only be a problem for OS X, since it
|
6
|
-
# currently does not use the POSIX interfaces, since lookupd's cache screws
|
7
|
-
# things up.
|
8
1
|
|
9
2
|
require 'etc'
|
10
3
|
require 'facter'
|
11
4
|
|
12
5
|
module Puppet
|
13
6
|
newtype(:group) do
|
14
|
-
@doc = "Manage groups.
|
15
|
-
membership must be managed on individual users.
|
16
|
-
uses the prescribed native tools for creating groups and generally
|
17
|
-
uses POSIX APIs for retrieving information about them. It does
|
18
|
-
not directly modify ``/etc/group`` or anything.
|
7
|
+
@doc = "Manage groups. On most platforms this can only create groups.
|
8
|
+
Group membership must be managed on individual users.
|
19
9
|
|
20
|
-
|
21
|
-
|
22
|
-
|
10
|
+
On some platforms such as OS X, group membership is managed as an
|
11
|
+
attribute of the group, not the user record. Providers must have
|
12
|
+
the feature 'manages_members' to manage the 'members' property of
|
13
|
+
a group record."
|
14
|
+
|
15
|
+
feature :manages_members,
|
16
|
+
"For directories where membership is an attribute of groups not users."
|
23
17
|
|
24
|
-
|
25
|
-
desc "
|
18
|
+
ensurable do
|
19
|
+
desc "Create or remove the group."
|
26
20
|
|
27
21
|
newvalue(:present) do
|
28
22
|
provider.create
|
@@ -35,33 +29,6 @@ module Puppet
|
|
35
29
|
|
36
30
|
:group_removed
|
37
31
|
end
|
38
|
-
|
39
|
-
# If they're talking about the thing at all, they generally want to
|
40
|
-
# say it should exist.
|
41
|
-
defaultto do
|
42
|
-
if @resource.managed?
|
43
|
-
:present
|
44
|
-
else
|
45
|
-
nil
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def retrieve
|
50
|
-
return provider.exists? ? :present : :absent
|
51
|
-
end
|
52
|
-
|
53
|
-
# The default 'sync' method only selects among a list of registered
|
54
|
-
# values.
|
55
|
-
def sync
|
56
|
-
unless self.class.values
|
57
|
-
self.devfail "No values defined for %s" %
|
58
|
-
self.class.name
|
59
|
-
end
|
60
|
-
|
61
|
-
# Set ourselves to whatever our should value is.
|
62
|
-
self.set(self.should)
|
63
|
-
end
|
64
|
-
|
65
32
|
end
|
66
33
|
|
67
34
|
newproperty(:gid) do
|
@@ -100,13 +67,28 @@ module Puppet
|
|
100
67
|
return gid
|
101
68
|
end
|
102
69
|
end
|
70
|
+
|
71
|
+
newproperty(:members, :array_matching => :all, :required_features => :manages_members) do
|
72
|
+
desc "The members of the group. For directory services where group
|
73
|
+
membership is stored in the group objects, not the users."
|
74
|
+
|
75
|
+
def change_to_s(currentvalue, newvalue)
|
76
|
+
currentvalue = currentvalue.join(",") if currentvalue != :absent
|
77
|
+
newvalue = newvalue.join(",")
|
78
|
+
super(currentvalue, newvalue)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
newparam(:auth_membership) do
|
83
|
+
desc "whether the provider is authoritative for group membership."
|
84
|
+
defaultto true
|
85
|
+
end
|
103
86
|
|
104
87
|
newparam(:name) do
|
105
88
|
desc "The group name. While naming limitations vary by
|
106
89
|
system, it is advisable to keep the name to the degenerate
|
107
90
|
limitations, which is a maximum of 8 characters beginning with
|
108
91
|
a letter."
|
109
|
-
|
110
92
|
isnamevar
|
111
93
|
end
|
112
94
|
|
data/lib/puppet/type/k5login.rb
CHANGED
@@ -0,0 +1,141 @@
|
|
1
|
+
Puppet::Type.newtype(:macauthorization) do
|
2
|
+
|
3
|
+
@doc = "Manage the Mac OS X authorization database.
|
4
|
+
See:
|
5
|
+
http://developer.apple.com/documentation/Security/Conceptual/Security_Overview/Security_Services/chapter_4_section_5.html for more information."
|
6
|
+
|
7
|
+
ensurable
|
8
|
+
|
9
|
+
autorequire(:file) do
|
10
|
+
["/etc/authorization"]
|
11
|
+
end
|
12
|
+
|
13
|
+
def munge_boolean(value)
|
14
|
+
case value
|
15
|
+
when true, "true", :true:
|
16
|
+
:true
|
17
|
+
when false, "false", :false
|
18
|
+
:false
|
19
|
+
else
|
20
|
+
raise Puppet::Error("munge_boolean only takes booleans")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
newparam(:name) do
|
25
|
+
desc "The name of the right or rule to be managed.
|
26
|
+
Corresponds to 'key' in Authorization Services. The key is the name
|
27
|
+
of a rule. A key uses the same naming conventions as a right. The
|
28
|
+
Security Server uses a rule’s key to match the rule with a right.
|
29
|
+
Wildcard keys end with a ‘.’. The generic rule has an empty key value.
|
30
|
+
Any rights that do not match a specific rule use the generic rule."
|
31
|
+
|
32
|
+
isnamevar
|
33
|
+
end
|
34
|
+
|
35
|
+
newproperty(:auth_type) do
|
36
|
+
desc "type - can be a 'right' or a 'rule'. 'comment' has not yet been
|
37
|
+
implemented."
|
38
|
+
|
39
|
+
newvalue(:right)
|
40
|
+
newvalue(:rule)
|
41
|
+
# newvalue(:comment) # not yet implemented.
|
42
|
+
end
|
43
|
+
|
44
|
+
newproperty(:allow_root, :boolean => true) do
|
45
|
+
desc "Corresponds to 'allow-root' in the authorization store, renamed
|
46
|
+
due to hyphens being problematic. Specifies whether a right should be
|
47
|
+
allowed automatically if the requesting process is running with
|
48
|
+
uid == 0. AuthorizationServices defaults this attribute to false if
|
49
|
+
not specified"
|
50
|
+
|
51
|
+
newvalue(:true)
|
52
|
+
newvalue(:false)
|
53
|
+
|
54
|
+
munge do |value|
|
55
|
+
@resource.munge_boolean(value)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
newproperty(:authenticate_user, :boolean => true) do
|
60
|
+
desc "Corresponds to 'authenticate-user' in the authorization store,
|
61
|
+
renamed due to hyphens being problematic."
|
62
|
+
|
63
|
+
newvalue(:true)
|
64
|
+
newvalue(:false)
|
65
|
+
|
66
|
+
munge do |value|
|
67
|
+
@resource.munge_boolean(value)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
newproperty(:auth_class) do
|
72
|
+
desc "Corresponds to 'class' in the authorization store, renamed due
|
73
|
+
to 'class' being a reserved word."
|
74
|
+
|
75
|
+
newvalue(:user)
|
76
|
+
newvalue(:'evaluate-mechanisms')
|
77
|
+
end
|
78
|
+
|
79
|
+
newproperty(:comment) do
|
80
|
+
desc "The 'comment' attribute for authorization resources."
|
81
|
+
end
|
82
|
+
|
83
|
+
newproperty(:group) do
|
84
|
+
desc "The user must authenticate as a member of this group. This
|
85
|
+
attribute can be set to any one group."
|
86
|
+
end
|
87
|
+
|
88
|
+
newproperty(:k_of_n) do
|
89
|
+
desc "k-of-n. Built-in rights only show a value of '1' or absent,
|
90
|
+
other values may be acceptable. Undocumented."
|
91
|
+
end
|
92
|
+
|
93
|
+
newproperty(:mechanisms, :array_matching => :all) do
|
94
|
+
desc "an array of suitable mechanisms."
|
95
|
+
end
|
96
|
+
|
97
|
+
newproperty(:rule, :array_match => :all) do
|
98
|
+
desc "The rule(s) that this right refers to."
|
99
|
+
end
|
100
|
+
|
101
|
+
newproperty(:session_owner, :boolean => true) do
|
102
|
+
desc "Corresponds to 'session-owner' in the authorization store,
|
103
|
+
renamed due to hyphens being problematic. Whether the session owner
|
104
|
+
automatically matches this rule or right."
|
105
|
+
|
106
|
+
newvalue(:true)
|
107
|
+
newvalue(:false)
|
108
|
+
|
109
|
+
munge do |value|
|
110
|
+
@resource.munge_boolean(value)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
newproperty(:shared, :boolean => true) do
|
115
|
+
desc "If this is set to true, then the Security Server marks the
|
116
|
+
credentials used to gain this right as shared. The Security Server
|
117
|
+
may use any shared credentials to authorize this right. For maximum
|
118
|
+
security, set sharing to false so credentials stored by the Security
|
119
|
+
Server for one application may not be used by another application."
|
120
|
+
|
121
|
+
newvalue(:true)
|
122
|
+
newvalue(:false)
|
123
|
+
|
124
|
+
munge do |value|
|
125
|
+
@resource.munge_boolean(value)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
newproperty(:timeout) do
|
130
|
+
desc "The credential used by this rule expires in the specified
|
131
|
+
number of seconds. For maximum security where the user must
|
132
|
+
authenticate every time, set the timeout to 0. For minimum security,
|
133
|
+
remove the timeout attribute so the user authenticates only once per
|
134
|
+
session."
|
135
|
+
end
|
136
|
+
|
137
|
+
newproperty(:tries) do
|
138
|
+
desc "The number of tries allowed."
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2008 Jeffrey J McCune.
|
3
|
+
|
4
|
+
# This program and entire repository is free software; you can
|
5
|
+
# redistribute it and/or modify it under the terms of the GNU
|
6
|
+
# General Public License as published by the Free Software
|
7
|
+
# Foundation; either version 2 of the License, or any later version.
|
8
|
+
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
+
|
18
|
+
# Author: Jeff McCune <mccune.jeff@gmail.com>
|
19
|
+
|
20
|
+
Puppet::Type.newtype(:mcx) do
|
21
|
+
|
22
|
+
@doc = "MCX object management using DirectoryService on OS X.
|
23
|
+
|
24
|
+
Original Author: Jeff McCune <mccune.jeff@gmail.com>
|
25
|
+
|
26
|
+
The default provider of this type merely manages the XML plist as
|
27
|
+
reported by the dscl -mcxexport command. This is similar to the
|
28
|
+
content property of the file type in Puppet.
|
29
|
+
|
30
|
+
The recommended method of using this type is to use Work Group Manager
|
31
|
+
to manage users and groups on the local computer, record the resulting
|
32
|
+
puppet manifest using the command 'ralsh mcx' then deploying this
|
33
|
+
to other machines.
|
34
|
+
"
|
35
|
+
feature :manages_content, \
|
36
|
+
"The provider can manage MCXSettings as a string.",
|
37
|
+
:methods => [:content, :content=]
|
38
|
+
|
39
|
+
ensurable do
|
40
|
+
desc "Create or remove the MCX setting."
|
41
|
+
|
42
|
+
newvalue(:present) do
|
43
|
+
provider.create
|
44
|
+
end
|
45
|
+
|
46
|
+
newvalue(:absent) do
|
47
|
+
provider.destroy
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
newparam(:name) do
|
53
|
+
desc "The name of the resource being managed.
|
54
|
+
The default naming convention follows Directory Service paths::
|
55
|
+
|
56
|
+
/Computers/localhost
|
57
|
+
/Groups/admin
|
58
|
+
/Users/localadmin
|
59
|
+
|
60
|
+
The ds_type and ds_name type parameters are not necessary if the
|
61
|
+
default naming convention is followed."
|
62
|
+
isnamevar
|
63
|
+
end
|
64
|
+
|
65
|
+
newparam(:ds_type) do
|
66
|
+
|
67
|
+
desc "The DirectoryService type this MCX setting attaches to."
|
68
|
+
|
69
|
+
newvalues(:user, :group, :computer, :computerlist)
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
newparam(:ds_name) do
|
74
|
+
desc "The name to attach the MCX Setting to.
|
75
|
+
e.g. 'localhost' when ds_type => computer. This setting is not
|
76
|
+
required, as it may be parsed so long as the resource name is
|
77
|
+
parseable. e.g. /Groups/admin where 'group' is the dstype."
|
78
|
+
end
|
79
|
+
|
80
|
+
newproperty(:content, :required_features => :manages_content) do
|
81
|
+
desc "The XML Plist. The value of MCXSettings in DirectoryService.
|
82
|
+
This is the standard output from the system command:
|
83
|
+
dscl localhost -mcxexport /Local/Default/<ds_type>/<ds_name>
|
84
|
+
Note that ds_type is capitalized and plural in the dscl command."
|
85
|
+
end
|
86
|
+
|
87
|
+
# JJM Yes, this is not DRY at all. Because of the code blocks
|
88
|
+
# autorequire must be done this way. I think.
|
89
|
+
|
90
|
+
def setup_autorequire(type)
|
91
|
+
# value returns a Symbol
|
92
|
+
name = value(:name)
|
93
|
+
ds_type = value(:ds_type)
|
94
|
+
ds_name = value(:ds_name)
|
95
|
+
if ds_type == type
|
96
|
+
rval = [ ds_name.to_s ]
|
97
|
+
else
|
98
|
+
rval = [ ]
|
99
|
+
end
|
100
|
+
rval
|
101
|
+
end
|
102
|
+
|
103
|
+
autorequire(:user) do
|
104
|
+
setup_autorequire(:user)
|
105
|
+
end
|
106
|
+
|
107
|
+
autorequire(:group) do
|
108
|
+
setup_autorequire(:group)
|
109
|
+
end
|
110
|
+
|
111
|
+
autorequire(:computer) do
|
112
|
+
setup_autorequire(:computer)
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
data/lib/puppet/type/mount.rb
CHANGED
@@ -38,6 +38,22 @@ module Puppet
|
|
38
38
|
should be specified as an array."
|
39
39
|
|
40
40
|
defaultto do :absent end
|
41
|
+
|
42
|
+
def is_to_s(value)
|
43
|
+
if value == :absent or value.include?(:absent)
|
44
|
+
super
|
45
|
+
else
|
46
|
+
value.join(",")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def should_to_s(value)
|
51
|
+
if value == :absent or value.include?(:absent)
|
52
|
+
super
|
53
|
+
else
|
54
|
+
value.join(",")
|
55
|
+
end
|
56
|
+
end
|
41
57
|
end
|
42
58
|
|
43
59
|
autorequire(:user) do
|
data/lib/puppet/type/tidy.rb
CHANGED
@@ -2,7 +2,10 @@ module Puppet
|
|
2
2
|
newtype(:tidy, :parent => Puppet.type(:file)) do
|
3
3
|
@doc = "Remove unwanted files based on specific criteria. Multiple
|
4
4
|
criteria are OR'd together, so a file that is too large but is not
|
5
|
-
old enough will still get tidied.
|
5
|
+
old enough will still get tidied.
|
6
|
+
|
7
|
+
You must specify either the size or age of the file (or both) for
|
8
|
+
files to be tidied."
|
6
9
|
|
7
10
|
newparam(:path) do
|
8
11
|
desc "The path to the file or directory to manage. Must be fully
|
@@ -41,6 +44,18 @@ module Puppet
|
|
41
44
|
end
|
42
45
|
|
43
46
|
def insync?(is)
|
47
|
+
begin
|
48
|
+
stat = File.lstat(resource[:path])
|
49
|
+
rescue Errno::ENOENT
|
50
|
+
info "Tidy target does not exist; ignoring"
|
51
|
+
return true
|
52
|
+
end
|
53
|
+
|
54
|
+
if stat.ftype == "directory" and ! @resource[:rmdirs]
|
55
|
+
self.debug "Not tidying directories"
|
56
|
+
return true
|
57
|
+
end
|
58
|
+
|
44
59
|
if is.is_a?(Symbol)
|
45
60
|
if [:absent, :notidy].include?(is)
|
46
61
|
return true
|
@@ -97,20 +112,17 @@ module Puppet
|
|
97
112
|
file = @resource[:path]
|
98
113
|
case File.lstat(file).ftype
|
99
114
|
when "directory":
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
Dir.rmdir(@resource[:path])
|
110
|
-
end
|
115
|
+
# If 'rmdirs' is disabled, then we would have never
|
116
|
+
# gotten to this method.
|
117
|
+
subs = Dir.entries(@resource[:path]).reject { |d|
|
118
|
+
d == "." or d == ".."
|
119
|
+
}.length
|
120
|
+
if subs > 0
|
121
|
+
self.info "%s has %s children; not tidying" %
|
122
|
+
[@resource[:path], subs]
|
123
|
+
self.info Dir.entries(@resource[:path]).inspect
|
111
124
|
else
|
112
|
-
|
113
|
-
return nil
|
125
|
+
Dir.rmdir(@resource[:path])
|
114
126
|
end
|
115
127
|
when "file":
|
116
128
|
@resource.handlebackup(file)
|
@@ -249,6 +261,23 @@ module Puppet
|
|
249
261
|
newparam(:recurse) do
|
250
262
|
desc "If target is a directory, recursively descend
|
251
263
|
into the directory looking for files to tidy."
|
264
|
+
|
265
|
+
newvalues(:true, :false, :inf, /^[0-9]+$/)
|
266
|
+
|
267
|
+
# Replace the validation so that we allow numbers in
|
268
|
+
# addition to string representations of them.
|
269
|
+
validate { |arg| }
|
270
|
+
munge do |value|
|
271
|
+
newval = super(value)
|
272
|
+
case newval
|
273
|
+
when :true, :inf: true
|
274
|
+
when :false: false
|
275
|
+
when Integer, Fixnum, Bignum: value
|
276
|
+
when /^\d+$/: Integer(value)
|
277
|
+
else
|
278
|
+
raise ArgumentError, "Invalid recurse value %s" % value.inspect
|
279
|
+
end
|
280
|
+
end
|
252
281
|
end
|
253
282
|
|
254
283
|
newparam(:rmdirs) do
|