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
@@ -54,6 +54,7 @@ class Puppet::Rails::Schema
|
|
54
54
|
create_table :hosts do |t|
|
55
55
|
t.column :name, :string, :null => false
|
56
56
|
t.column :ip, :string
|
57
|
+
t.column :environment, :string
|
57
58
|
t.column :last_compile, :datetime
|
58
59
|
t.column :last_freshcheck, :datetime
|
59
60
|
t.column :last_report, :datetime
|
data/lib/puppet/rails/host.rb
CHANGED
@@ -133,7 +133,7 @@ Signals
|
|
133
133
|
-------
|
134
134
|
The ``puppetd`` and ``puppetmasterd`` executables catch some signals for special
|
135
135
|
handling. Both daemons catch (``SIGHUP``), which forces the server to restart
|
136
|
-
tself. Predictably, interrupt and terminate (``SIGINT`` and ``
|
136
|
+
tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGTERM``) will shut
|
137
137
|
down the server, whether it be an instance of ``puppetd`` or ``puppetmasterd``.
|
138
138
|
|
139
139
|
Sending the ``SIGUSR1`` signal to an instance of ``puppetd`` will cause it to
|
@@ -151,12 +151,14 @@ Puppet::Reports.register_report(:tagmail) do
|
|
151
151
|
reports.each do |emails, messages|
|
152
152
|
Puppet.info "Sending report to %s" % emails.join(", ")
|
153
153
|
# We need to open a separate process for every set of email addresses
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
154
|
+
sync.synchronize do
|
155
|
+
IO.popen(Puppet[:sendmail] + " " + emails.join(" "), "w") do |p|
|
156
|
+
p.puts "From: #{Puppet[:reportfrom]}"
|
157
|
+
p.puts "Subject: Puppet Report for %s" % self.host
|
158
|
+
p.puts "To: " + emails.join(", ")
|
159
|
+
|
160
|
+
p.puts messages
|
161
|
+
end
|
160
162
|
end
|
161
163
|
end
|
162
164
|
rescue => detail
|
@@ -174,5 +176,12 @@ Puppet::Reports.register_report(:tagmail) do
|
|
174
176
|
# Don't bother waiting for the pid to return.
|
175
177
|
Process.detach(pid)
|
176
178
|
end
|
179
|
+
|
180
|
+
def sync
|
181
|
+
unless defined?(@sync)
|
182
|
+
@sync = Sync.new
|
183
|
+
end
|
184
|
+
@sync
|
185
|
+
end
|
177
186
|
end
|
178
187
|
|
@@ -53,12 +53,10 @@ class Puppet::Transaction::Change
|
|
53
53
|
# The transaction catches any exceptions here.
|
54
54
|
events = @property.sync
|
55
55
|
if events.nil?
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
if events.is_a?(Array)
|
56
|
+
events = [(@property.name.to_s + "_changed").to_sym]
|
57
|
+
elsif events.is_a?(Array)
|
60
58
|
if events.empty?
|
61
|
-
|
59
|
+
events = [(@property.name.to_s + "_changed").to_sym]
|
62
60
|
end
|
63
61
|
else
|
64
62
|
events = [events]
|
data/lib/puppet/transportable.rb
CHANGED
@@ -0,0 +1,155 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (C) 2008 Red Hat Inc.
|
3
|
+
#
|
4
|
+
# This library is free software; you can redistribute it and/or
|
5
|
+
# modify it under the terms of the GNU General Public
|
6
|
+
# License as published by the Free Software Foundation; either
|
7
|
+
# version 2 of the License, or (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This library 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 GNU
|
12
|
+
# General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
#
|
18
|
+
# Author: Bryan Kearney <bkearney@redhat.com>
|
19
|
+
|
20
|
+
Puppet::Type.newtype(:augeas) do
|
21
|
+
include Puppet::Util
|
22
|
+
|
23
|
+
feature :parse_commands, "Parse the command string"
|
24
|
+
feature :need_to_run?, "If the command should run"
|
25
|
+
feature :execute_changes, "Actually make the changes"
|
26
|
+
|
27
|
+
@doc = "Apply the changes (single or array of changes) to the filesystem
|
28
|
+
via the augeas tool.
|
29
|
+
|
30
|
+
Requires:
|
31
|
+
- augeas to be installed (http://www.augeas.net)
|
32
|
+
- ruby-augeas bindings
|
33
|
+
|
34
|
+
Sample usage with a string::
|
35
|
+
|
36
|
+
augeas{\"test1\" :
|
37
|
+
context => \"/files/etc/sysconfig/firstboot\",
|
38
|
+
changes => \"set RUN_FIRSTBOOT YES\",
|
39
|
+
onlyif => \"match other_value size > 0\",
|
40
|
+
}
|
41
|
+
|
42
|
+
Sample usage with an array and custom lenses::
|
43
|
+
|
44
|
+
augeas{\"jboss_conf\":
|
45
|
+
context => \"/files\",
|
46
|
+
changes => [
|
47
|
+
\"set /etc/jbossas/jbossas.conf/JBOSS_IP $ipaddress\",
|
48
|
+
\"set /etc/jbossas/jbossas.conf/JAVA_HOME /usr\"
|
49
|
+
],
|
50
|
+
load_path => \"$/usr/share/jbossas/lenses\",
|
51
|
+
}
|
52
|
+
|
53
|
+
"
|
54
|
+
|
55
|
+
newparam (:name) do
|
56
|
+
desc "The name of this task. Used for uniqueness"
|
57
|
+
isnamevar
|
58
|
+
end
|
59
|
+
|
60
|
+
newparam (:context) do
|
61
|
+
desc "Optional context path. This value is pre-pended to the paths of all changes"
|
62
|
+
defaultto ""
|
63
|
+
end
|
64
|
+
|
65
|
+
newparam (:onlyif) do
|
66
|
+
desc "Optional augeas command and comparisons to control the execution of this type.
|
67
|
+
Supported onlyif syntax::
|
68
|
+
|
69
|
+
get [AUGEAS_PATH] [COMPARATOR] [STRING]
|
70
|
+
match [MATCH_PATH] size [COMPARATOR] [INT]
|
71
|
+
match [MATCH_PATH] include [STRING]
|
72
|
+
match [MATCH_PATH] == [AN_ARRAY]
|
73
|
+
|
74
|
+
where::
|
75
|
+
|
76
|
+
AUGEAS_PATH is a valid path scoped by the context
|
77
|
+
MATCH_PATH is a valid match synatx scoped by the context
|
78
|
+
COMPARATOR is in the set [> >= != == <= <]
|
79
|
+
STRING is a string
|
80
|
+
INT is a number
|
81
|
+
AN_ARRAY is in the form ['a string', 'another']"
|
82
|
+
defaultto ""
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
newparam(:changes) do
|
87
|
+
desc "The changes which should be applied to the filesystem. This
|
88
|
+
can be either a string which contains a command or an array of commands.
|
89
|
+
Commands supported are::
|
90
|
+
|
91
|
+
set [PATH] [VALUE] Sets the value VALUE at loction PATH
|
92
|
+
rm [PATH] Removes the node at location PATH
|
93
|
+
remove [PATH] Synonym for rm
|
94
|
+
clear [PATH] Keeps the node at PATH, but removes the value.
|
95
|
+
ins [PATH] Inserts an empty node at PATH.
|
96
|
+
insert [PATH] Synonym for ins
|
97
|
+
|
98
|
+
If the parameter 'context' is set that that value is prepended to PATH"
|
99
|
+
|
100
|
+
munge do |value|
|
101
|
+
provider.parse_commands(value)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
newparam(:root) do
|
107
|
+
desc "A file system path; all files loaded by Augeas are loaded underneath ROOT"
|
108
|
+
defaultto "/"
|
109
|
+
end
|
110
|
+
|
111
|
+
newparam(:load_path) do
|
112
|
+
desc "Optional colon separated list of directories; these directories are searched for schema definitions"
|
113
|
+
defaultto ""
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
newparam(:type_check) do
|
118
|
+
desc "Set to true if augeas should perform typechecking. Optional, defaults to false"
|
119
|
+
newvalues(:true, :false)
|
120
|
+
|
121
|
+
defaultto :false
|
122
|
+
end
|
123
|
+
|
124
|
+
# This is the acutal meat of the code. It forces
|
125
|
+
# augeas to be run and fails or not based on the augeas return
|
126
|
+
# code.
|
127
|
+
newproperty(:returns) do |property|
|
128
|
+
include Puppet::Util
|
129
|
+
desc "The expected return code from the augeas command. Should not be set"
|
130
|
+
|
131
|
+
defaultto 0
|
132
|
+
|
133
|
+
# Make output a bit prettier
|
134
|
+
def change_to_s(currentvalue, newvalue)
|
135
|
+
return "executed successfully"
|
136
|
+
end
|
137
|
+
|
138
|
+
# if the onlyif resource is provided, then the value is parsed.
|
139
|
+
# a return value of 0 will stop exection becuase it matches the
|
140
|
+
# default value.
|
141
|
+
def retrieve
|
142
|
+
if @resource.provider.need_to_run?()
|
143
|
+
:need_to_run
|
144
|
+
else
|
145
|
+
0
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# Actually execute the command.
|
150
|
+
def sync
|
151
|
+
@resource.provider.execute_changes()
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
Puppet::Type.newtype(:computer) do
|
2
|
+
|
3
|
+
@doc = "Computer object management using DirectoryService
|
4
|
+
on OS X.
|
5
|
+
|
6
|
+
Note that these are distinctly different kinds of objects to 'hosts',
|
7
|
+
as they require a MAC address and can have all sorts of policy attached to
|
8
|
+
them.
|
9
|
+
|
10
|
+
This provider only manages Computer objects in the local directory service
|
11
|
+
domain, not in remote directories.
|
12
|
+
|
13
|
+
If you wish to manage /etc/hosts on Mac OS X, then simply use the host
|
14
|
+
type as per other platforms.
|
15
|
+
|
16
|
+
This type primarily exists to create localhost Computer objects that MCX
|
17
|
+
policy can then be attached to."
|
18
|
+
|
19
|
+
# ensurable
|
20
|
+
|
21
|
+
# We autorequire the computer object in case it is being managed at the
|
22
|
+
# file level by Puppet.
|
23
|
+
|
24
|
+
autorequire(:file) do
|
25
|
+
if self[:name]
|
26
|
+
"/var/db/dslocal/nodes/Default/computers/#{self[:name]}.plist"
|
27
|
+
else
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
newproperty(:ensure, :parent => Puppet::Property::Ensure) do
|
33
|
+
desc "Control the existences of this computer record. Set this attribute to
|
34
|
+
``present`` to ensure the computer record exists. Set it to ``absent``
|
35
|
+
to delete any computer records with this name"
|
36
|
+
newvalue(:present) do
|
37
|
+
provider.create
|
38
|
+
end
|
39
|
+
|
40
|
+
newvalue(:absent) do
|
41
|
+
provider.delete
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
newparam(:name) do
|
46
|
+
desc "The authoritative 'short' name of the computer record."
|
47
|
+
isnamevar
|
48
|
+
end
|
49
|
+
|
50
|
+
newparam(:realname) do
|
51
|
+
desc "The 'long' name of the computer record."
|
52
|
+
end
|
53
|
+
|
54
|
+
newproperty(:en_address) do
|
55
|
+
desc "The MAC address of the primary network interface. Must match en0."
|
56
|
+
end
|
57
|
+
|
58
|
+
newproperty(:ip_address) do
|
59
|
+
desc "The IP Address of the Computer object."
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
data/lib/puppet/type/exec.rb
CHANGED
@@ -391,7 +391,8 @@ module Puppet
|
|
391
391
|
Note that this command follows the same rules as the main command,
|
392
392
|
which is to say that it must be fully qualified if the path is not set.
|
393
393
|
|
394
|
-
Also note that onlyif can take an array as its value, eg
|
394
|
+
Also note that onlyif can take an array as its value, eg::
|
395
|
+
|
395
396
|
onlyif => [\"test -f /tmp/file1\", \"test -f /tmp/file2\"]
|
396
397
|
|
397
398
|
This will only run the exec if /all/ conditions in the array return true.
|
data/lib/puppet/type/file.rb
CHANGED
@@ -1127,7 +1127,7 @@ module Puppet
|
|
1127
1127
|
# file creation/modification, so we have to do some extra checking.
|
1128
1128
|
def property_fix
|
1129
1129
|
properties.each do |thing|
|
1130
|
-
next unless [:mode, :owner, :group].include?(thing.name)
|
1130
|
+
next unless [:mode, :owner, :group, :seluser, :selrole, :seltype, :selrange].include?(thing.name)
|
1131
1131
|
|
1132
1132
|
# Make sure we get a new stat objct
|
1133
1133
|
self.stat(true)
|
@@ -2,11 +2,10 @@ module Puppet
|
|
2
2
|
Puppet.type(:file).ensurable do
|
3
3
|
require 'etc'
|
4
4
|
desc "Whether to create files that don't currently exist.
|
5
|
-
Possible values are *absent*, *present*
|
6
|
-
|
7
|
-
|
8
|
-
the file
|
9
|
-
directories.
|
5
|
+
Possible values are *absent*, *present*, *file*, and *directory*.
|
6
|
+
Specifying ``present`` will match any form of file existence, and
|
7
|
+
if the file is missing will create an empty file. Specifying
|
8
|
+
``absent`` will delete the file (and directory if recurse => true).
|
10
9
|
|
11
10
|
Anything other than those values will be considered to be a symlink.
|
12
11
|
For instance, the following text creates a link::
|
@@ -138,6 +137,10 @@ module Puppet
|
|
138
137
|
# We have to treat :present specially, because it works with any
|
139
138
|
# type of file.
|
140
139
|
def insync?(currentvalue)
|
140
|
+
unless currentvalue == :absent or resource.replace?
|
141
|
+
return true
|
142
|
+
end
|
143
|
+
|
141
144
|
if self.should == :present
|
142
145
|
if currentvalue.nil? or currentvalue == :absent
|
143
146
|
return false
|
@@ -103,22 +103,8 @@ module Puppet
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def sync
|
106
|
-
unless @resource.stat(false)
|
107
|
-
stat = @resource.stat(true)
|
108
|
-
|
109
|
-
unless stat
|
110
|
-
self.debug "File does not exist; cannot set mode"
|
111
|
-
return nil
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
106
|
mode = self.should
|
116
107
|
|
117
|
-
if mode == :absent
|
118
|
-
# This is really only valid for create states...
|
119
|
-
return nil
|
120
|
-
end
|
121
|
-
|
122
108
|
begin
|
123
109
|
File.chmod(mode, @resource[:path])
|
124
110
|
rescue => detail
|
@@ -1,5 +1,8 @@
|
|
1
1
|
module Puppet
|
2
2
|
Puppet.type(:file).newproperty(:owner) do
|
3
|
+
include Puppet::Util::POSIX
|
4
|
+
include Puppet::Util::Warnings
|
5
|
+
|
3
6
|
require 'etc'
|
4
7
|
desc "To whom the file should belong. Argument can be user name or
|
5
8
|
user ID."
|
@@ -24,40 +27,32 @@ module Puppet
|
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
27
|
-
def
|
28
|
-
|
29
|
-
|
30
|
+
def insync?(current)
|
31
|
+
unless Puppet::Util::SUIDManager.uid == 0
|
32
|
+
warning "Cannot manage ownership unless running as root"
|
33
|
+
return true
|
30
34
|
end
|
31
|
-
|
32
|
-
|
33
|
-
if
|
34
|
-
|
35
|
+
|
36
|
+
@should.each do |value|
|
37
|
+
if value =~ /^\d+$/
|
38
|
+
uid = Integer(value)
|
39
|
+
elsif value.is_a?(String)
|
40
|
+
fail "Could not find user %s" % value unless uid = uid(value)
|
41
|
+
else
|
42
|
+
uid = value
|
35
43
|
end
|
36
|
-
|
37
|
-
|
38
|
-
return nil
|
44
|
+
|
45
|
+
return true if uid == current
|
39
46
|
end
|
47
|
+
return false
|
40
48
|
end
|
41
49
|
|
42
50
|
# Determine if the user is valid, and if so, return the UID
|
43
51
|
def validuser?(value)
|
44
|
-
if
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
if value.is_a?(Integer)
|
49
|
-
# verify the user is a valid user
|
50
|
-
if tmp = id2name(value)
|
51
|
-
return value
|
52
|
-
else
|
53
|
-
return false
|
54
|
-
end
|
52
|
+
if number = uid(value)
|
53
|
+
return number
|
55
54
|
else
|
56
|
-
|
57
|
-
return tmp
|
58
|
-
else
|
59
|
-
return false
|
60
|
-
end
|
55
|
+
return false
|
61
56
|
end
|
62
57
|
end
|
63
58
|
|
@@ -99,13 +94,6 @@ module Puppet
|
|
99
94
|
return :absent
|
100
95
|
end
|
101
96
|
|
102
|
-
# Set our method appropriately, depending on links.
|
103
|
-
if stat.ftype == "link" and @resource[:links] != :follow
|
104
|
-
@method = :lchown
|
105
|
-
else
|
106
|
-
@method = :chown
|
107
|
-
end
|
108
|
-
|
109
97
|
currentvalue = stat.uid
|
110
98
|
|
111
99
|
# On OS X, files that are owned by -2 get returned as really
|
@@ -120,44 +108,24 @@ module Puppet
|
|
120
108
|
end
|
121
109
|
|
122
110
|
def sync
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
end
|
129
|
-
return nil
|
111
|
+
# Set our method appropriately, depending on links.
|
112
|
+
if resource[:links] == :manage
|
113
|
+
method = :lchown
|
114
|
+
else
|
115
|
+
method = :chown
|
130
116
|
end
|
131
117
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
unless defined? @@usermissing
|
136
|
-
@@usermissing = {}
|
137
|
-
end
|
138
|
-
|
139
|
-
if @@usermissing.include?(tmp)
|
140
|
-
@@usermissing[tmp] += 1
|
141
|
-
else
|
142
|
-
self.notice "user %s does not exist" % tmp
|
143
|
-
@@usermissing[tmp] = 1
|
144
|
-
end
|
145
|
-
return nil
|
118
|
+
uid = nil
|
119
|
+
@should.each do |user|
|
120
|
+
break if uid = validuser?(user)
|
146
121
|
end
|
147
122
|
|
148
|
-
|
149
|
-
unless @resource.stat(true)
|
150
|
-
self.debug "File does not exist; cannot set owner"
|
151
|
-
return nil
|
152
|
-
end
|
153
|
-
#self.debug "%s: after refresh, is '%s'" % [self.class.name,@is]
|
154
|
-
end
|
123
|
+
raise Puppet::Error, "Could not find user(s) %s" % @should.join(",") unless uid
|
155
124
|
|
156
125
|
begin
|
157
|
-
File.send(
|
126
|
+
File.send(method, uid, nil, @resource[:path])
|
158
127
|
rescue => detail
|
159
|
-
raise Puppet::Error, "Failed to set owner to '%s': %s" %
|
160
|
-
[user, detail]
|
128
|
+
raise Puppet::Error, "Failed to set owner to '%s': %s" % [uid, detail]
|
161
129
|
end
|
162
130
|
|
163
131
|
return :file_changed
|