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
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'puppet/provider/nameservice/directoryservice'
|
2
|
+
|
3
|
+
Puppet::Type.type(:computer).provide :directoryservice, :parent => Puppet::Provider::NameService::DirectoryService do
|
4
|
+
desc "Computer object management using DirectoryService on OS X.
|
5
|
+
Note that these are distinctly different kinds of objects to 'hosts',
|
6
|
+
as they require a MAC address and can have all sorts of policy attached to
|
7
|
+
them.
|
8
|
+
|
9
|
+
This provider only manages Computer objects in the local directory service
|
10
|
+
domain, not in remote directories.
|
11
|
+
|
12
|
+
If you wish to manage /etc/hosts on Mac OS X, then simply use the host
|
13
|
+
type as per other platforms.
|
14
|
+
|
15
|
+
"
|
16
|
+
|
17
|
+
confine :operatingsystem => :darwin
|
18
|
+
defaultfor :operatingsystem => :darwin
|
19
|
+
|
20
|
+
# hurray for abstraction. The nameservice directoryservice provider can
|
21
|
+
# handle everything we need. super.
|
22
|
+
end
|
@@ -42,6 +42,9 @@ class Puppet::Provider::Confine
|
|
42
42
|
for_binary
|
43
43
|
end
|
44
44
|
|
45
|
+
# Used for logging.
|
46
|
+
attr_accessor :label
|
47
|
+
|
45
48
|
def initialize(values)
|
46
49
|
values = [values] unless values.is_a?(Array)
|
47
50
|
@values = values
|
@@ -61,7 +64,7 @@ class Puppet::Provider::Confine
|
|
61
64
|
def valid?
|
62
65
|
values.each do |value|
|
63
66
|
unless pass?(value)
|
64
|
-
Puppet.debug message(value)
|
67
|
+
Puppet.debug(label + ": " + message(value))
|
65
68
|
return false
|
66
69
|
end
|
67
70
|
end
|
@@ -24,8 +24,13 @@ class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
|
|
24
24
|
@facter_value
|
25
25
|
end
|
26
26
|
|
27
|
+
def initialize(values)
|
28
|
+
super
|
29
|
+
@values = @values.collect { |v| v.to_s.downcase }
|
30
|
+
end
|
31
|
+
|
27
32
|
def message(value)
|
28
|
-
"facter value '%s' for '%s' not in required list '%s'" % [
|
33
|
+
"facter value '%s' for '%s' not in required list '%s'" % [test_value, self.name, values.join(",")]
|
29
34
|
end
|
30
35
|
|
31
36
|
# Compare the passed-in value to the retrieved value.
|
@@ -35,10 +40,16 @@ class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
|
|
35
40
|
|
36
41
|
def reset
|
37
42
|
# Reset the cache. We want to cache it during a given
|
38
|
-
# run, but across runs.
|
43
|
+
# run, but not across runs.
|
39
44
|
@facter_value = nil
|
40
45
|
end
|
41
46
|
|
47
|
+
def valid?
|
48
|
+
@values.include?(test_value.to_s.downcase)
|
49
|
+
ensure
|
50
|
+
reset
|
51
|
+
end
|
52
|
+
|
42
53
|
private
|
43
54
|
|
44
55
|
def setting?
|
@@ -19,10 +19,13 @@ class Puppet::Provider::ConfineCollection
|
|
19
19
|
confine.name = test
|
20
20
|
@confines << confine
|
21
21
|
end
|
22
|
+
@confines[-1].label = self.label
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
+
attr_reader :label
|
27
|
+
def initialize(label)
|
28
|
+
@label = label
|
26
29
|
@confines = []
|
27
30
|
end
|
28
31
|
|
@@ -7,7 +7,7 @@ module Puppet::Provider::Confiner
|
|
7
7
|
|
8
8
|
def confine_collection
|
9
9
|
unless defined?(@confine_collection)
|
10
|
-
@confine_collection = Puppet::Provider::ConfineCollection.new
|
10
|
+
@confine_collection = Puppet::Provider::ConfineCollection.new(self.to_s)
|
11
11
|
end
|
12
12
|
@confine_collection
|
13
13
|
end
|
@@ -15,9 +15,12 @@
|
|
15
15
|
require 'puppet/provider/nameservice/directoryservice'
|
16
16
|
|
17
17
|
Puppet::Type.type(:group).provide :directoryservice, :parent => Puppet::Provider::NameService::DirectoryService do
|
18
|
-
desc "Group management using DirectoryService on OS X.
|
19
|
-
|
18
|
+
desc "Group management using DirectoryService on OS X.
|
19
|
+
|
20
|
+
"
|
21
|
+
|
20
22
|
commands :dscl => "/usr/bin/dscl"
|
21
23
|
confine :operatingsystem => :darwin
|
22
|
-
|
24
|
+
defaultfor :operatingsystem => :darwin
|
25
|
+
has_feature :manages_members
|
23
26
|
end
|
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'puppet/provider/nameservice/objectadd'
|
2
2
|
|
3
3
|
Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameService::ObjectAdd do
|
4
|
-
desc "Group management via ``groupadd`` and its ilk.
|
5
|
-
|
4
|
+
desc "Group management via ``groupadd`` and its ilk.
|
5
|
+
|
6
|
+
The default for most platforms
|
7
|
+
|
8
|
+
"
|
6
9
|
|
7
10
|
commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
|
8
11
|
|
@@ -1,16 +1,18 @@
|
|
1
1
|
require 'puppet/provider/ldap'
|
2
2
|
|
3
3
|
Puppet::Type.type(:group).provide :ldap, :parent => Puppet::Provider::Ldap do
|
4
|
-
desc "Group management via ``ldap``.
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
desc "Group management via ``ldap``.
|
5
|
+
|
6
|
+
This provider requires that you have valid values for all of the
|
7
|
+
ldap-related settings, including ``ldapbase``. You will also almost
|
8
|
+
definitely need settings for ``ldapuser`` and ``ldappassword``, so that
|
9
|
+
your clients can write to ldap.
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
Note that this provider will automatically generate a GID for you if you do
|
12
|
+
not specify one, but it is a potentially expensive operation, as it
|
13
|
+
iterates across all existing groups to pick the appropriate next one.
|
14
|
+
|
15
|
+
"
|
14
16
|
|
15
17
|
confine :true => Puppet.features.ldap?, :false => (Puppet[:ldapuser] == "")
|
16
18
|
|
@@ -1,11 +1,15 @@
|
|
1
|
-
# Manage NetInfo POSIX objects.
|
2
|
-
#
|
1
|
+
# Manage NetInfo POSIX objects.
|
2
|
+
#
|
3
|
+
# This provider has been deprecated. You should be using the directoryservice
|
4
|
+
# nameservice provider instead.
|
5
|
+
|
3
6
|
require 'puppet/provider/nameservice/netinfo'
|
4
7
|
|
5
8
|
Puppet::Type.type(:group).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo do
|
6
|
-
desc "Group management using NetInfo.
|
9
|
+
desc "Group management using NetInfo.
|
10
|
+
|
11
|
+
"
|
7
12
|
commands :nireport => "nireport", :niutil => "niutil"
|
8
13
|
|
9
|
-
defaultfor :operatingsystem => :darwin
|
10
14
|
end
|
11
15
|
|
@@ -1,7 +1,11 @@
|
|
1
1
|
require 'puppet/provider/nameservice/pw'
|
2
2
|
|
3
3
|
Puppet::Type.type(:group).provide :pw, :parent => Puppet::Provider::NameService::PW do
|
4
|
-
desc "Group management via ``pw``.
|
4
|
+
desc "Group management via ``pw``.
|
5
|
+
|
6
|
+
Only works on FreeBSD.
|
7
|
+
|
8
|
+
"
|
5
9
|
|
6
10
|
commands :pw => "/usr/sbin/pw"
|
7
11
|
defaultfor :operatingsystem => :freebsd
|
@@ -4,8 +4,11 @@ require 'puppet/provider/nameservice/netinfo'
|
|
4
4
|
|
5
5
|
Puppet::Type.type(:host).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo,
|
6
6
|
:netinfodir => "machines" do
|
7
|
-
desc "Host management in NetInfo.
|
8
|
-
|
7
|
+
desc "Host management in NetInfo.
|
8
|
+
|
9
|
+
This provider is highly experimental and is known not to work currently.
|
10
|
+
|
11
|
+
"
|
9
12
|
commands :nireport => "nireport", :niutil => "niutil"
|
10
13
|
commands :mountcmd => "mount", :umount => "umount", :df => "df"
|
11
14
|
|
@@ -0,0 +1,315 @@
|
|
1
|
+
require 'facter'
|
2
|
+
require 'facter/util/plist'
|
3
|
+
require 'puppet'
|
4
|
+
require 'tempfile'
|
5
|
+
|
6
|
+
Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppet::Provider do
|
7
|
+
|
8
|
+
desc "Manage Mac OS X authorization database rules and rights.
|
9
|
+
|
10
|
+
"
|
11
|
+
|
12
|
+
commands :security => "/usr/bin/security"
|
13
|
+
commands :sw_vers => "/usr/bin/sw_vers"
|
14
|
+
|
15
|
+
confine :operatingsystem => :darwin
|
16
|
+
|
17
|
+
# This should be confined based on macosx_productversion once
|
18
|
+
# http://projects.reductivelabs.com/issues/show/1796
|
19
|
+
# is resolved.
|
20
|
+
if FileTest.exists?("/usr/bin/sw_vers")
|
21
|
+
product_version = sw_vers "-productVersion"
|
22
|
+
|
23
|
+
confine :true => if /^10.5/.match(product_version) or /^10.6/.match(product_version)
|
24
|
+
true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
defaultfor :operatingsystem => :darwin
|
29
|
+
|
30
|
+
AuthDB = "/etc/authorization"
|
31
|
+
|
32
|
+
@rights = {}
|
33
|
+
@rules = {}
|
34
|
+
@parsed_auth_db = {}
|
35
|
+
@comment = "" # Not implemented yet. Is there any real need to?
|
36
|
+
|
37
|
+
# This map exists due to the use of hyphens and reserved words in
|
38
|
+
# the authorization schema.
|
39
|
+
PuppetToNativeAttributeMap = { :allow_root => "allow-root",
|
40
|
+
:authenticate_user => "authenticate-user",
|
41
|
+
:auth_class => "class",
|
42
|
+
:k_of_n => "k-of-n",
|
43
|
+
:session_owner => "session-owner", }
|
44
|
+
|
45
|
+
class << self
|
46
|
+
attr_accessor :parsed_auth_db
|
47
|
+
attr_accessor :rights
|
48
|
+
attr_accessor :rules
|
49
|
+
attr_accessor :comments # Not implemented yet.
|
50
|
+
|
51
|
+
def prefetch(resources)
|
52
|
+
self.populate_rules_rights
|
53
|
+
end
|
54
|
+
|
55
|
+
def instances
|
56
|
+
if self.parsed_auth_db == {}
|
57
|
+
self.prefetch(nil)
|
58
|
+
end
|
59
|
+
self.parsed_auth_db.collect do |k,v|
|
60
|
+
new(:name => k)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def populate_rules_rights
|
65
|
+
auth_plist = Plist::parse_xml(AuthDB)
|
66
|
+
if not auth_plist
|
67
|
+
raise Puppet::Error.new("Cannot parse: #{AuthDB}")
|
68
|
+
end
|
69
|
+
self.rights = auth_plist["rights"].dup
|
70
|
+
self.rules = auth_plist["rules"].dup
|
71
|
+
self.parsed_auth_db = self.rights.dup
|
72
|
+
self.parsed_auth_db.merge!(self.rules.dup)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
# standard required provider instance methods
|
78
|
+
|
79
|
+
def initialize(resource)
|
80
|
+
if self.class.parsed_auth_db == {}
|
81
|
+
self.class.prefetch(resource)
|
82
|
+
end
|
83
|
+
super
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
def create
|
88
|
+
# we just fill the @property_hash in here and let the flush method
|
89
|
+
# deal with it rather than repeating code.
|
90
|
+
new_values = {}
|
91
|
+
validprops = Puppet::Type.type(resource.class.name).validproperties
|
92
|
+
validprops.each do |prop|
|
93
|
+
next if prop == :ensure
|
94
|
+
if value = resource.should(prop) and value != ""
|
95
|
+
new_values[prop] = value
|
96
|
+
end
|
97
|
+
end
|
98
|
+
@property_hash = new_values.dup
|
99
|
+
end
|
100
|
+
|
101
|
+
def destroy
|
102
|
+
# We explicitly delete here rather than in the flush method.
|
103
|
+
case resource[:auth_type]
|
104
|
+
when :right
|
105
|
+
destroy_right
|
106
|
+
when :rule
|
107
|
+
destroy_rule
|
108
|
+
else
|
109
|
+
raise Puppet::Error.new("Must specify auth_type when destroying.")
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def exists?
|
114
|
+
if self.class.parsed_auth_db.has_key?(resource[:name])
|
115
|
+
return true
|
116
|
+
else
|
117
|
+
return false
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
def flush
|
123
|
+
# deletion happens in the destroy methods
|
124
|
+
if resource[:ensure] != :absent
|
125
|
+
case resource[:auth_type]
|
126
|
+
when :right
|
127
|
+
flush_right
|
128
|
+
when :rule
|
129
|
+
flush_rule
|
130
|
+
else
|
131
|
+
raise Puppet::Error.new("flush requested for unknown type.")
|
132
|
+
end
|
133
|
+
@property_hash.clear
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
# utility methods below
|
139
|
+
|
140
|
+
def destroy_right
|
141
|
+
security "authorizationdb", :remove, resource[:name]
|
142
|
+
end
|
143
|
+
|
144
|
+
def destroy_rule
|
145
|
+
authdb = Plist::parse_xml(AuthDB)
|
146
|
+
authdb_rules = authdb["rules"].dup
|
147
|
+
if authdb_rules[resource[:name]]
|
148
|
+
begin
|
149
|
+
authdb["rules"].delete(resource[:name])
|
150
|
+
Plist::Emit.save_plist(authdb, AuthDB)
|
151
|
+
rescue Errno::EACCES => e
|
152
|
+
raise Puppet::Error.new("Error saving #{AuthDB}: #{e}")
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def flush_right
|
158
|
+
# first we re-read the right just to make sure we're in sync for
|
159
|
+
# values that weren't specified in the manifest. As we're supplying
|
160
|
+
# the whole plist when specifying the right it seems safest to be
|
161
|
+
# paranoid given the low cost of quering the db once more.
|
162
|
+
cmds = []
|
163
|
+
cmds << :security << "authorizationdb" << "read" << resource[:name]
|
164
|
+
output = execute(cmds, :combine => false)
|
165
|
+
current_values = Plist::parse_xml(output)
|
166
|
+
if current_values.nil?
|
167
|
+
current_values = {}
|
168
|
+
end
|
169
|
+
specified_values = convert_plist_to_native_attributes(@property_hash)
|
170
|
+
|
171
|
+
# take the current values, merge the specified values to obtain a
|
172
|
+
# complete description of the new values.
|
173
|
+
new_values = current_values.merge(specified_values)
|
174
|
+
set_right(resource[:name], new_values)
|
175
|
+
end
|
176
|
+
|
177
|
+
def flush_rule
|
178
|
+
authdb = Plist::parse_xml(AuthDB)
|
179
|
+
authdb_rules = authdb["rules"].dup
|
180
|
+
current_values = {}
|
181
|
+
if authdb_rules[resource[:name]]
|
182
|
+
current_values = authdb_rules[resource[:name]]
|
183
|
+
end
|
184
|
+
specified_values = convert_plist_to_native_attributes(@property_hash)
|
185
|
+
new_values = current_values.merge(specified_values)
|
186
|
+
set_rule(resource[:name], new_values)
|
187
|
+
end
|
188
|
+
|
189
|
+
def set_right(name, values)
|
190
|
+
# Both creates and modifies rights as it simply overwrites them.
|
191
|
+
# The security binary only allows for writes using stdin, so we
|
192
|
+
# dump the values to a tempfile.
|
193
|
+
values = convert_plist_to_native_attributes(values)
|
194
|
+
tmp = Tempfile.new('puppet_macauthorization')
|
195
|
+
begin
|
196
|
+
Plist::Emit.save_plist(values, tmp.path)
|
197
|
+
cmds = []
|
198
|
+
cmds << :security << "authorizationdb" << "write" << name
|
199
|
+
output = execute(cmds, :combine => false,
|
200
|
+
:stdinfile => tmp.path.to_s)
|
201
|
+
rescue Errno::EACCES => e
|
202
|
+
raise Puppet::Error.new("Cannot save right to #{tmp.path}: #{e}")
|
203
|
+
ensure
|
204
|
+
tmp.close
|
205
|
+
tmp.unlink
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def set_rule(name, values)
|
210
|
+
# Both creates and modifies rules as it overwrites the entry in the
|
211
|
+
# rules dictionary. Unfortunately the security binary doesn't
|
212
|
+
# support modifying rules at all so we have to twiddle the whole
|
213
|
+
# plist... :( See Apple Bug #6386000
|
214
|
+
values = convert_plist_to_native_attributes(values)
|
215
|
+
authdb = Plist::parse_xml(AuthDB)
|
216
|
+
authdb["rules"][name] = values
|
217
|
+
|
218
|
+
begin
|
219
|
+
Plist::Emit.save_plist(authdb, AuthDB)
|
220
|
+
rescue
|
221
|
+
raise Puppet::Error.new("Error writing to: #{AuthDB}")
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def convert_plist_to_native_attributes(propertylist)
|
226
|
+
# This mainly converts the keys from the puppet attributes to the
|
227
|
+
# 'native' ones, but also enforces that the keys are all Strings
|
228
|
+
# rather than Symbols so that any merges of the resultant Hash are
|
229
|
+
# sane.
|
230
|
+
newplist = {}
|
231
|
+
propertylist.each_pair do |key, value|
|
232
|
+
next if key == :ensure # not part of the auth db schema.
|
233
|
+
next if key == :auth_type # not part of the auth db schema.
|
234
|
+
new_key = key
|
235
|
+
if PuppetToNativeAttributeMap.has_key?(key)
|
236
|
+
new_key = PuppetToNativeAttributeMap[key].to_s
|
237
|
+
elsif not key.is_a?(String)
|
238
|
+
new_key = key.to_s
|
239
|
+
end
|
240
|
+
newplist[new_key] = value
|
241
|
+
end
|
242
|
+
newplist
|
243
|
+
end
|
244
|
+
|
245
|
+
def retrieve_value(resource_name, attribute)
|
246
|
+
|
247
|
+
if not self.class.parsed_auth_db.has_key?(resource_name)
|
248
|
+
raise Puppet::Error.new("Cannot find #{resource_name} in auth db")
|
249
|
+
end
|
250
|
+
|
251
|
+
if PuppetToNativeAttributeMap.has_key?(attribute)
|
252
|
+
native_attribute = PuppetToNativeAttributeMap[attribute]
|
253
|
+
else
|
254
|
+
native_attribute = attribute.to_s
|
255
|
+
end
|
256
|
+
|
257
|
+
if self.class.parsed_auth_db[resource_name].has_key?(native_attribute)
|
258
|
+
value = self.class.parsed_auth_db[resource_name][native_attribute]
|
259
|
+
case value
|
260
|
+
when true, "true", :true
|
261
|
+
value = :true
|
262
|
+
when false, "false", :false
|
263
|
+
value = :false
|
264
|
+
end
|
265
|
+
|
266
|
+
@property_hash[attribute] = value
|
267
|
+
return value
|
268
|
+
else
|
269
|
+
@property_hash.delete(attribute)
|
270
|
+
return "" # so ralsh doesn't display it.
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
|
275
|
+
# property methods below
|
276
|
+
#
|
277
|
+
# We define them all dynamically apart from auth_type which is a special
|
278
|
+
# case due to not being in the actual authorization db schema.
|
279
|
+
|
280
|
+
properties = [ :allow_root, :authenticate_user, :auth_class, :comment,
|
281
|
+
:group, :k_of_n, :mechanisms, :rule, :session_owner,
|
282
|
+
:shared, :timeout, :tries ]
|
283
|
+
|
284
|
+
properties.each do |field|
|
285
|
+
define_method(field.to_s) do
|
286
|
+
retrieve_value(resource[:name], field)
|
287
|
+
end
|
288
|
+
|
289
|
+
define_method(field.to_s + "=") do |value|
|
290
|
+
@property_hash[field] = value
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
def auth_type
|
295
|
+
if resource.should(:auth_type) != nil
|
296
|
+
return resource.should(:auth_type)
|
297
|
+
elsif self.exists?
|
298
|
+
# this is here just for ralsh, so it can work out what type it is.
|
299
|
+
if self.class.rights.has_key?(resource[:name])
|
300
|
+
return :right
|
301
|
+
elsif self.class.rules.has_key?(resource[:name])
|
302
|
+
return :rule
|
303
|
+
else
|
304
|
+
raise Puppet::Error.new("#{resource[:name]} is unknown type.")
|
305
|
+
end
|
306
|
+
else
|
307
|
+
raise Puppet::Error.new("auth_type required for new resources.")
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
def auth_type=(value)
|
312
|
+
@property_hash[:auth_type] = value
|
313
|
+
end
|
314
|
+
|
315
|
+
end
|