puppet 0.24.5 → 0.24.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +206 -0
- data/Rakefile +53 -0
- data/bin/filebucket +0 -0
- data/bin/puppet +32 -11
- data/bin/puppetca +1 -0
- data/bin/puppetd +0 -0
- data/bin/puppetdoc +0 -0
- data/bin/puppetmasterd +0 -0
- data/bin/puppetrun +16 -8
- data/bin/ralsh +0 -0
- data/conf/debian/rules +0 -0
- data/conf/gentoo/init.d/puppetmaster +0 -0
- data/conf/osx/PackageInfo.plist +36 -0
- data/conf/osx/createpackage.sh +167 -0
- data/conf/osx/preflight +12 -0
- data/conf/redhat/client.init +1 -1
- data/conf/redhat/puppet.spec +34 -6
- data/conf/redhat/server.init +42 -7
- data/conf/redhat/server.sysconfig +22 -0
- data/conf/solaris/smf/svc-puppetd +0 -0
- data/conf/solaris/smf/svc-puppetmasterd +0 -0
- data/examples/etc/init.d/sleeper +0 -0
- data/examples/mac_dscl.pp +0 -0
- data/examples/mac_dscl_revert.pp +0 -0
- data/examples/mac_netinfo.pp +0 -0
- data/examples/mac_pkgdmg.pp +0 -0
- data/ext/bin/sleeper +0 -0
- data/ext/module_puppet +0 -0
- data/ext/nagios/check_puppet.rb +0 -0
- data/ext/passenger/README +63 -0
- data/ext/passenger/apache2.conf +29 -0
- data/ext/passenger/config.ru +40 -0
- data/ext/puppet-test +0 -0
- data/ext/puppetlast +6 -31
- data/ext/puppetstoredconfigclean.rb +87 -0
- data/install.rb +75 -20
- data/lib/puppet.rb +1 -1
- data/lib/puppet/daemon.rb +0 -0
- data/lib/puppet/defaults.rb +3 -7
- data/lib/puppet/external/base64.rb +0 -0
- data/lib/puppet/external/nagios.rb +0 -0
- data/lib/puppet/external/nagios/base.rb +0 -0
- data/lib/puppet/file_serving/fileset.rb +2 -2
- data/lib/puppet/file_serving/metadata.rb +3 -3
- data/lib/puppet/indirector/facts/facter.rb +3 -2
- data/lib/puppet/indirector/yaml.rb +10 -1
- data/lib/puppet/module.rb +36 -12
- data/lib/puppet/network/authstore.rb +0 -0
- data/lib/puppet/network/client/master.rb +12 -11
- data/lib/puppet/network/handler/filebucket.rb +0 -0
- data/lib/puppet/network/handler/fileserver.rb +38 -46
- data/lib/puppet/network/handler/master.rb +1 -1
- data/lib/puppet/network/handler/report.rb +0 -0
- data/lib/puppet/network/handler/resource.rb +0 -0
- data/lib/puppet/network/handler/runner.rb +0 -0
- data/lib/puppet/network/http_server/rack.rb +148 -0
- data/lib/puppet/network/rights.rb +0 -0
- data/lib/puppet/network/xmlrpc/client.rb +5 -5
- data/lib/puppet/node.rb +5 -9
- data/lib/puppet/node/environment.rb +1 -17
- data/lib/puppet/node/facts.rb +0 -0
- data/lib/puppet/parameter.rb +1 -28
- data/lib/puppet/parser/ast.rb +6 -0
- data/lib/puppet/parser/ast/arithmetic_operator.rb +41 -0
- data/lib/puppet/parser/ast/boolean_operator.rb +48 -0
- data/lib/puppet/parser/ast/collexpr.rb +6 -1
- data/lib/puppet/parser/ast/comparison_operator.rb +37 -0
- data/lib/puppet/parser/ast/minus.rb +23 -0
- data/lib/puppet/parser/ast/nop.rb +11 -0
- data/lib/puppet/parser/ast/not.rb +19 -0
- data/lib/puppet/parser/ast/resource_override.rb +23 -16
- data/lib/puppet/parser/ast/resource_reference.rb +10 -6
- data/lib/puppet/parser/ast/vardef.rb +2 -2
- data/lib/puppet/parser/collector.rb +2 -1
- data/lib/puppet/parser/functions.rb +7 -217
- data/lib/puppet/parser/functions/defined.rb +27 -0
- data/lib/puppet/parser/functions/fail.rb +4 -0
- data/lib/puppet/parser/functions/file.rb +21 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +15 -0
- data/lib/puppet/parser/functions/generate.rb +35 -0
- data/lib/puppet/parser/functions/include.rb +26 -0
- data/lib/puppet/parser/functions/realize.rb +14 -0
- data/lib/puppet/parser/functions/search.rb +7 -0
- data/lib/puppet/parser/functions/sha1.rb +6 -0
- data/lib/puppet/parser/functions/tag.rb +6 -0
- data/lib/puppet/parser/functions/tagged.rb +18 -0
- data/lib/puppet/parser/functions/template.rb +22 -0
- data/lib/puppet/parser/lexer.rb +15 -5
- data/lib/puppet/parser/parser.rb +1073 -715
- data/lib/puppet/parser/parser_support.rb +18 -13
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/resource/param.rb +10 -2
- data/lib/puppet/parser/scope.rb +63 -5
- data/lib/puppet/parser/templatewrapper.rb +61 -15
- data/lib/puppet/property.rb +7 -1
- data/lib/puppet/property/keyvalue.rb +96 -0
- data/lib/puppet/property/list.rb +78 -0
- data/lib/puppet/provider/confine.rb +1 -1
- data/lib/puppet/provider/confine/variable.rb +10 -1
- data/lib/puppet/provider/cron/crontab.rb +0 -0
- data/lib/puppet/provider/mailalias/aliases.rb +0 -0
- data/lib/puppet/provider/maillist/mailman.rb +0 -0
- data/lib/puppet/provider/mount/parsed.rb +0 -0
- data/lib/puppet/provider/nameservice.rb +24 -39
- data/lib/puppet/provider/nameservice/directoryservice.rb +12 -3
- data/lib/puppet/provider/nameservice/netinfo.rb +12 -2
- data/lib/puppet/provider/nameservice/objectadd.rb +1 -10
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/apple.rb +0 -0
- data/lib/puppet/provider/package/apt.rb +14 -21
- data/lib/puppet/provider/package/aptitude.rb +0 -0
- data/lib/puppet/provider/package/blastwave.rb +2 -0
- data/lib/puppet/provider/package/darwinport.rb +0 -0
- data/lib/puppet/provider/package/dpkg.rb +33 -51
- data/lib/puppet/provider/package/fink.rb +1 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -0
- data/lib/puppet/provider/package/gem.rb +0 -0
- data/lib/puppet/provider/package/hpux.rb +46 -0
- data/lib/puppet/provider/package/openbsd.rb +0 -0
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +3 -1
- data/lib/puppet/provider/package/ports.rb +3 -3
- data/lib/puppet/provider/package/rpm.rb +8 -1
- data/lib/puppet/provider/package/rug.rb +2 -2
- data/lib/puppet/provider/package/sun.rb +2 -0
- data/lib/puppet/provider/package/sunfreeware.rb +3 -0
- data/lib/puppet/provider/package/yum.rb +24 -17
- data/lib/puppet/provider/package/yumhelper.py +92 -11
- data/lib/puppet/provider/parsedfile.rb +0 -0
- data/lib/puppet/provider/port/parsed.rb +0 -0
- data/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
- data/lib/puppet/provider/selmodule/semodule.rb +143 -0
- data/lib/puppet/provider/service/base.rb +0 -0
- data/lib/puppet/provider/service/daemontools.rb +154 -0
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/freebsd.rb +2 -0
- data/lib/puppet/provider/service/gentoo.rb +2 -0
- data/lib/puppet/provider/service/init.rb +0 -0
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/runit.rb +93 -0
- data/lib/puppet/provider/service/smf.rb +2 -0
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +7 -1
- data/lib/puppet/provider/sshkey/parsed.rb +0 -0
- data/lib/puppet/provider/user/hpux.rb +30 -0
- data/lib/puppet/provider/user/user_role_add.rb +156 -0
- data/lib/puppet/provider/user/useradd.rb +23 -14
- data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +17 -0
- data/lib/puppet/rails/database/schema.rb +0 -8
- data/lib/puppet/rails/resource.rb +6 -6
- data/lib/puppet/reference/configuration.rb +0 -7
- data/lib/puppet/reports.rb +0 -0
- data/lib/puppet/reports/rrdgraph.rb +3 -2
- data/lib/puppet/sslcertificates.rb +0 -0
- data/lib/puppet/sslcertificates/inventory.rb +3 -2
- data/lib/puppet/sslcertificates/support.rb +3 -0
- data/lib/puppet/transaction/report.rb +1 -7
- data/lib/puppet/transportable.rb +10 -7
- data/lib/puppet/type.rb +2110 -14
- data/lib/puppet/type/cron.rb +0 -0
- data/lib/puppet/type/exec.rb +0 -0
- data/lib/puppet/type/file.rb +12 -2
- data/lib/puppet/type/file/checksum.rb +4 -0
- data/lib/puppet/type/file/content.rb +0 -0
- data/lib/puppet/type/file/ensure.rb +0 -0
- data/lib/puppet/type/file/group.rb +30 -43
- data/lib/puppet/type/file/mode.rb +0 -0
- data/lib/puppet/type/file/owner.rb +0 -0
- data/lib/puppet/type/file/selcontext.rb +104 -0
- data/lib/puppet/type/file/source.rb +0 -0
- data/lib/puppet/type/file/type.rb +0 -0
- data/lib/puppet/type/filebucket.rb +0 -0
- data/lib/puppet/type/group.rb +0 -8
- data/lib/puppet/type/host.rb +0 -0
- data/lib/puppet/type/mailalias.rb +0 -0
- data/lib/puppet/type/maillist.rb +0 -0
- data/lib/puppet/type/mount.rb +0 -0
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/port.rb +0 -0
- data/lib/puppet/type/schedule.rb +0 -0
- data/lib/puppet/type/selboolean.rb +31 -0
- data/lib/puppet/type/selmodule.rb +54 -0
- data/lib/puppet/type/ssh_authorized_key.rb +3 -3
- data/lib/puppet/type/sshkey.rb +0 -0
- data/lib/puppet/type/tidy.rb +0 -0
- data/lib/puppet/type/user.rb +153 -137
- data/lib/puppet/type/yumrepo.rb +18 -2
- data/lib/puppet/type/zone.rb +5 -1
- data/lib/puppet/util.rb +7 -7
- data/lib/puppet/util/filetype.rb +7 -0
- data/lib/puppet/util/instance_loader.rb +0 -0
- data/lib/puppet/util/ldap/connection.rb +11 -1
- data/lib/puppet/util/ldap/manager.rb +1 -1
- data/lib/puppet/util/loadedfile.rb +0 -0
- data/lib/puppet/util/log.rb +42 -43
- data/lib/puppet/util/metric.rb +23 -9
- data/lib/puppet/util/posix.rb +69 -18
- data/lib/puppet/util/selinux.rb +139 -0
- data/lib/puppet/util/settings.rb +5 -7
- data/lib/puppet/util/user_attr.rb +21 -0
- data/test/certmgr/ca.rb +0 -0
- data/test/certmgr/certmgr.rb +0 -0
- data/test/certmgr/inventory.rb +0 -0
- data/test/certmgr/support.rb +0 -0
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys1 +3 -0
- data/test/data/snippets/append.pp +11 -0
- data/test/data/snippets/arithmetic_expression.pp +8 -0
- data/test/data/snippets/arraytrailingcomma.pp +3 -0
- data/test/data/snippets/emptyifelse.pp +9 -0
- data/test/data/snippets/funccomma.pp +5 -0
- data/test/data/snippets/ifexpression.rb +6 -0
- data/test/data/snippets/subclass_name_duplication.pp +0 -0
- data/test/executables/filebucket.rb +0 -0
- data/test/executables/puppetbin.rb +0 -0
- data/test/executables/puppetca.rb +0 -0
- data/test/executables/puppetd.rb +0 -0
- data/test/executables/puppetmasterd.rb +0 -0
- data/test/executables/puppetmodule.rb +0 -0
- data/test/language/ast.rb +0 -0
- data/test/language/ast/casestatement.rb +0 -0
- data/test/language/ast/resource.rb +0 -0
- data/test/language/ast/resource_reference.rb +0 -28
- data/test/language/ast/selector.rb +0 -0
- data/test/language/ast/variable.rb +0 -0
- data/test/language/functions.rb +91 -12
- data/test/language/parser.rb +21 -0
- data/test/language/resource.rb +0 -0
- data/test/language/scope.rb +28 -0
- data/test/language/snippets.rb +14 -0
- data/test/language/transportable.rb +0 -0
- data/test/lib/puppettest.rb +0 -0
- data/test/lib/puppettest/reporttesting.rb +0 -2
- data/test/lib/puppettest/runnable_test.rb +2 -0
- data/test/lib/puppettest/support/resources.rb +0 -0
- data/test/network/authconfig.rb +0 -0
- data/test/network/authorization.rb +0 -0
- data/test/network/authstore.rb +0 -0
- data/test/network/client/ca.rb +0 -0
- data/test/network/client/client.rb +0 -0
- data/test/network/client/dipper.rb +0 -0
- data/test/network/client/master.rb +2 -6
- data/test/network/client/resource.rb +0 -0
- data/test/network/client_request.rb +0 -0
- data/test/network/daemon.rb +0 -0
- data/test/network/handler/bucket.rb +0 -0
- data/test/network/handler/ca.rb +0 -0
- data/test/network/handler/fileserver.rb +8 -0
- data/test/network/handler/handler.rb +0 -0
- data/test/network/handler/master.rb +3 -1
- data/test/network/handler/report.rb +0 -0
- data/test/network/handler/resource.rb +0 -0
- data/test/network/handler/runner.rb +0 -0
- data/test/network/rights.rb +0 -0
- data/test/network/server/mongrel_test.rb +0 -0
- data/test/network/server/webrick.rb +0 -0
- data/test/network/xmlrpc/client.rb +0 -0
- data/test/network/xmlrpc/processor.rb +0 -0
- data/test/network/xmlrpc/server.rb +0 -0
- data/test/network/xmlrpc/webrick_servlet.rb +0 -0
- data/test/other/dsl.rb +0 -0
- data/test/other/events.rb +0 -0
- data/test/other/overrides.rb +0 -0
- data/test/other/provider.rb +0 -0
- data/test/other/puppet.rb +0 -0
- data/test/other/relationships.rb +0 -0
- data/test/other/report.rb +2 -4
- data/test/other/transactions.rb +1 -1
- data/test/puppet/conffiles.rb +0 -0
- data/test/puppet/defaults.rb +0 -0
- data/test/puppet/errortest.rb +0 -0
- data/test/puppet/tc_suidmanager.rb +0 -0
- data/test/rails/ast.rb +0 -0
- data/test/rails/configuration.rb +0 -0
- data/test/rails/host.rb +0 -0
- data/test/rails/rails.rb +0 -0
- data/test/rails/railsparameter.rb +0 -0
- data/test/rails/railsresource.rb +0 -0
- data/test/ral/manager/attributes.rb +0 -0
- data/test/ral/manager/instances.rb +0 -0
- data/test/ral/manager/manager.rb +0 -0
- data/test/ral/manager/provider.rb +0 -0
- data/test/ral/manager/type.rb +0 -0
- data/test/ral/providers/cron/crontab.rb +0 -0
- data/test/ral/providers/group.rb +14 -13
- data/test/ral/providers/host/netinfo.rb +0 -0
- data/test/ral/providers/host/parsed.rb +0 -0
- data/test/ral/providers/mailalias/aliases.rb +0 -0
- data/test/ral/providers/mount/netinfo.rb +0 -0
- data/test/ral/providers/nameservice.rb +0 -0
- data/test/ral/providers/package.rb +0 -31
- data/test/ral/providers/package/aptitude.rb +1 -2
- data/test/ral/providers/package/aptrpm.rb +2 -2
- data/test/ral/providers/parsedfile.rb +0 -0
- data/test/ral/providers/port/parsed.rb +0 -0
- data/test/ral/providers/provider.rb +0 -0
- data/test/ral/providers/service/base.rb +0 -0
- data/test/ral/providers/service/debian.rb +0 -0
- data/test/ral/providers/sshkey/parsed.rb +0 -0
- data/test/ral/providers/user.rb +8 -8
- data/test/ral/providers/user/useradd.rb +0 -0
- data/test/ral/type/basic.rb +0 -0
- data/test/ral/type/cron.rb +0 -0
- data/test/ral/type/exec.rb +0 -0
- data/test/ral/type/file.rb +0 -0
- data/test/ral/type/file/target.rb +0 -0
- data/test/ral/type/filebucket.rb +0 -0
- data/test/ral/type/fileignoresource.rb +0 -0
- data/test/ral/type/filesources.rb +1 -3
- data/test/ral/type/group.rb +0 -0
- data/test/ral/type/host.rb +0 -0
- data/test/ral/type/mailalias.rb +1 -2
- data/test/ral/type/parameter.rb +0 -0
- data/test/ral/type/port.rb +0 -0
- data/test/ral/type/property.rb +0 -0
- data/test/ral/type/resources.rb +0 -0
- data/test/ral/type/service.rb +0 -0
- data/test/ral/type/sshkey.rb +0 -0
- data/test/ral/type/tidy.rb +0 -0
- data/test/ral/type/user.rb +0 -50
- data/test/ral/type/yumrepo.rb +7 -1
- data/test/ral/type/zone.rb +0 -0
- data/test/test +0 -0
- data/test/util/autoload.rb +0 -0
- data/test/util/classgen.rb +0 -0
- data/test/util/execution.rb +0 -0
- data/test/util/features.rb +0 -0
- data/test/util/fileparsing.rb +0 -0
- data/test/util/filetype.rb +0 -0
- data/test/util/inifile.rb +0 -0
- data/test/util/instance_loader.rb +0 -0
- data/test/util/log.rb +0 -59
- data/test/util/metrics.rb +0 -0
- data/test/util/package.rb +0 -0
- data/test/util/pidlock.rb +0 -0
- data/test/util/settings.rb +0 -0
- data/test/util/storage.rb +0 -0
- data/test/util/subclass_loader.rb +0 -0
- data/test/util/utiltest.rb +0 -0
- metadata +54 -19
- data/lib/puppet/metatype/attributes.rb +0 -685
- data/lib/puppet/metatype/closure.rb +0 -49
- data/lib/puppet/metatype/container.rb +0 -50
- data/lib/puppet/metatype/evaluation.rb +0 -163
- data/lib/puppet/metatype/instances.rb +0 -305
- data/lib/puppet/metatype/metaparams.rb +0 -423
- data/lib/puppet/metatype/providers.rb +0 -247
- data/lib/puppet/metatype/relationships.rb +0 -115
- data/lib/puppet/metatype/schedules.rb +0 -33
- data/lib/puppet/metatype/tags.rb +0 -38
- data/lib/puppet/util/plist.rb +0 -23
- data/lib/puppet/util/plist/generator.rb +0 -225
- data/lib/puppet/util/plist/parser.rb +0 -226
- data/test/ral/providers/package/apt.rb +0 -169
- data/test/ral/providers/package/dpkg.rb +0 -64
- data/test/util/posixtest.rb +0 -169
File without changes
|
@@ -0,0 +1,154 @@
|
|
1
|
+
# Daemontools service management
|
2
|
+
#
|
3
|
+
# author Brice Figureau <brice-puppet@daysofwonder.com>
|
4
|
+
Puppet::Type.type(:service).provide :daemontools, :parent => :base do
|
5
|
+
desc "Daemontools service management.
|
6
|
+
This provider manages daemons running supervised by D.J.Bernstein daemontools.
|
7
|
+
It tries to detect the service directory, with by order of preference:
|
8
|
+
* /service
|
9
|
+
* /etc/service
|
10
|
+
* /var/lib/svscan
|
11
|
+
The daemon directory should be placed in a directory that can be
|
12
|
+
by default in:
|
13
|
+
* /var/lib/service
|
14
|
+
* /etc
|
15
|
+
or this can be overriden in the service resource parameters:
|
16
|
+
service {
|
17
|
+
\"myservice\":
|
18
|
+
provider => \"daemontools\", path => \"/path/to/daemons\";
|
19
|
+
}
|
20
|
+
|
21
|
+
This provider supports out of the box:
|
22
|
+
* start/stop (mapped to enable/disable)
|
23
|
+
* enable/disable
|
24
|
+
* restart
|
25
|
+
* status"
|
26
|
+
|
27
|
+
commands :svc => "/usr/bin/svc"
|
28
|
+
commands :svstat => "/usr/bin/svstat"
|
29
|
+
|
30
|
+
class << self
|
31
|
+
attr_writer :defpath
|
32
|
+
|
33
|
+
# this is necessary to autodetect a valid resource
|
34
|
+
# default path, since there is no standard for such directory.
|
35
|
+
def defpath
|
36
|
+
unless defined?(@defpath) and @defpath
|
37
|
+
["/var/lib/service", "/etc"].each do |path|
|
38
|
+
if FileTest.exist?(path)
|
39
|
+
@defpath = path
|
40
|
+
break
|
41
|
+
end
|
42
|
+
end
|
43
|
+
raise "Could not find the daemon directory (tested [/var/lib/service,/etc])" unless @defpath
|
44
|
+
end
|
45
|
+
@defpath
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
attr_writer :servicedir
|
50
|
+
|
51
|
+
# returns all providers for all existing services in @defpath
|
52
|
+
# ie enabled or not
|
53
|
+
def self.instances
|
54
|
+
path = self.defpath
|
55
|
+
unless FileTest.directory?(path)
|
56
|
+
Puppet.notice "Service path %s does not exist" % path
|
57
|
+
next
|
58
|
+
end
|
59
|
+
|
60
|
+
# reject entries that aren't either a directory
|
61
|
+
# or don't contain a run file
|
62
|
+
Dir.entries(path).reject { |e|
|
63
|
+
fullpath = File.join(path, e)
|
64
|
+
e =~ /^\./ or ! FileTest.directory?(fullpath) or ! FileTest.exist?(File.join(fullpath,"run"))
|
65
|
+
}.collect do |name|
|
66
|
+
new(:name => name, :path => path)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# returns the daemon dir on this node
|
71
|
+
def self.daemondir
|
72
|
+
self.defpath
|
73
|
+
end
|
74
|
+
|
75
|
+
# find the service dir on this node
|
76
|
+
def servicedir
|
77
|
+
unless defined?(@servicedir) and @servicedir
|
78
|
+
["/service", "/etc/service","/var/lib/svscan"].each do |path|
|
79
|
+
if FileTest.exist?(path)
|
80
|
+
@servicedir = path
|
81
|
+
break
|
82
|
+
end
|
83
|
+
end
|
84
|
+
raise "Could not find service directory" unless @servicedir
|
85
|
+
end
|
86
|
+
@servicedir
|
87
|
+
end
|
88
|
+
|
89
|
+
# returns the full path of this service when enabled
|
90
|
+
# (ie in the service directory)
|
91
|
+
def service
|
92
|
+
File.join(self.servicedir, resource[:name])
|
93
|
+
end
|
94
|
+
|
95
|
+
# returns the full path to the current daemon directory
|
96
|
+
# note that this path can be overriden in the resource
|
97
|
+
# definition
|
98
|
+
def daemon
|
99
|
+
File.join(resource[:path], resource[:name])
|
100
|
+
end
|
101
|
+
|
102
|
+
def restartcmd
|
103
|
+
[ command(:svc), "-t", self.service]
|
104
|
+
end
|
105
|
+
|
106
|
+
# The start command does nothing, service are automatically started
|
107
|
+
# when enabled by svscan. But, forces an enable if necessary
|
108
|
+
def start
|
109
|
+
# to start make sure the sevice is enabled
|
110
|
+
self.enable
|
111
|
+
# start is then automatic
|
112
|
+
end
|
113
|
+
|
114
|
+
def status
|
115
|
+
begin
|
116
|
+
output = svstat self.service
|
117
|
+
return :running if output =~ /\bup\b/
|
118
|
+
rescue Puppet::ExecutionFailure => detail
|
119
|
+
raise Puppet::Error.new( "Could not get status for service %s: %s" % [ resource.ref, detail] )
|
120
|
+
end
|
121
|
+
return :stopped
|
122
|
+
end
|
123
|
+
|
124
|
+
# unfortunately it is not possible
|
125
|
+
# to stop without disabling the service
|
126
|
+
def stop
|
127
|
+
self.disable
|
128
|
+
end
|
129
|
+
|
130
|
+
# disable by stopping the service
|
131
|
+
# and removing the symlink so that svscan
|
132
|
+
# doesn't restart our service behind our back
|
133
|
+
def disable
|
134
|
+
# should stop the service
|
135
|
+
# stop the log subservice if any
|
136
|
+
log = File.join(self.service, "log")
|
137
|
+
texecute("stop log", [ command(:svc) , '-dx', log] ) if FileTest.directory?(log)
|
138
|
+
|
139
|
+
# stop the main resource
|
140
|
+
texecute("stop", [command(:svc), '-dx', self.service] )
|
141
|
+
|
142
|
+
# unlink the daemon symlink to disable it
|
143
|
+
File.unlink(self.service) if FileTest.symlink?(self.service)
|
144
|
+
end
|
145
|
+
|
146
|
+
def enabled?
|
147
|
+
FileTest.symlink?(self.service)
|
148
|
+
end
|
149
|
+
|
150
|
+
def enable
|
151
|
+
File.symlink(self.daemon, self.service) if ! FileTest.symlink?(self.service)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
@@ -5,7 +5,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
|
|
5
5
|
is that this supports service enabling and disabling via ``update-rc.d``."
|
6
6
|
|
7
7
|
commands :update => "/usr/sbin/update-rc.d"
|
8
|
-
defaultfor :operatingsystem => :debian
|
8
|
+
defaultfor :operatingsystem => [:debian, :ubuntu]
|
9
9
|
|
10
10
|
def self.defpath
|
11
11
|
superclass.defpath
|
@@ -2,6 +2,8 @@
|
|
2
2
|
Puppet::Type.type(:service).provide :freebsd, :parent => :init do
|
3
3
|
desc "FreeBSD's (and probably NetBSD?) form of ``init``-style service
|
4
4
|
management; uses ``rc.conf.d`` for service enabling and disabling."
|
5
|
+
|
6
|
+
confine :operatingsystem => [:freebsd, :netbsd, :openbsd]
|
5
7
|
|
6
8
|
defaultfor :operatingsystem => :freebsd
|
7
9
|
|
File without changes
|
@@ -6,7 +6,7 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init do
|
|
6
6
|
|
7
7
|
commands :chkconfig => "/sbin/chkconfig", :service => "/sbin/service"
|
8
8
|
|
9
|
-
defaultfor :operatingsystem => [:redhat, :fedora, :suse, :centos]
|
9
|
+
defaultfor :operatingsystem => [:redhat, :fedora, :suse, :centos, :sles]
|
10
10
|
|
11
11
|
def self.defpath
|
12
12
|
superclass.defpath
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# Daemontools service management
|
2
|
+
#
|
3
|
+
# author Brice Figureau <brice-puppet@daysofwonder.com>
|
4
|
+
Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
|
5
|
+
desc "Runit service management.
|
6
|
+
This provider manages daemons running supervised by Runit.
|
7
|
+
It tries to detect the service directory, with by order of preference:
|
8
|
+
* /service
|
9
|
+
* /var/service
|
10
|
+
* /etc/service
|
11
|
+
The daemon directory should be placed in a directory that can be
|
12
|
+
by default in:
|
13
|
+
* /etc/sv
|
14
|
+
or this can be overriden in the service resource parameters:
|
15
|
+
service {
|
16
|
+
\"myservice\":
|
17
|
+
provider => \"runit\", path => \"/path/to/daemons\";
|
18
|
+
}
|
19
|
+
|
20
|
+
This provider supports out of the box:
|
21
|
+
* start/stop
|
22
|
+
* enable/disable
|
23
|
+
* restart
|
24
|
+
* status"
|
25
|
+
|
26
|
+
commands :sv => "/usr/bin/sv"
|
27
|
+
|
28
|
+
class << self
|
29
|
+
# this is necessary to autodetect a valid resource
|
30
|
+
# default path, since there is no standard for such directory.
|
31
|
+
def defpath
|
32
|
+
unless defined?(@defpath) and @defpath
|
33
|
+
["/etc/sv", "/var/lib/service"].each do |path|
|
34
|
+
if FileTest.exist?(path)
|
35
|
+
@defpath = path
|
36
|
+
break
|
37
|
+
end
|
38
|
+
end
|
39
|
+
raise "Could not find the daemon directory (tested [/var/lib/service,/etc])" unless @defpath
|
40
|
+
end
|
41
|
+
@defpath
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# find the service dir on this node
|
46
|
+
def servicedir
|
47
|
+
unless defined?(@servicedir) and @servicedir
|
48
|
+
["/service", "/etc/service","/var/service"].each do |path|
|
49
|
+
if FileTest.exist?(path)
|
50
|
+
@servicedir = path
|
51
|
+
break
|
52
|
+
end
|
53
|
+
end
|
54
|
+
raise "Could not find service directory" unless @servicedir
|
55
|
+
end
|
56
|
+
@servicedir
|
57
|
+
end
|
58
|
+
|
59
|
+
def restartcmd
|
60
|
+
[ command(:sv), "restart", self.service]
|
61
|
+
end
|
62
|
+
|
63
|
+
def status
|
64
|
+
begin
|
65
|
+
output = sv "status", self.daemon
|
66
|
+
return :running if output =~ /^run: /
|
67
|
+
rescue Puppet::ExecutionFailure => detail
|
68
|
+
unless detail.message =~ /(warning: |runsv not running$)/
|
69
|
+
raise Puppet::Error.new( "Could not get status for service %s: %s" % [ resource.ref, detail] )
|
70
|
+
end
|
71
|
+
end
|
72
|
+
return :stopped
|
73
|
+
end
|
74
|
+
|
75
|
+
# relay to the stopcmd
|
76
|
+
def stop
|
77
|
+
ucommand( :stop )
|
78
|
+
end
|
79
|
+
|
80
|
+
def stopcmd
|
81
|
+
[ command(:sv), "stop", self.service]
|
82
|
+
end
|
83
|
+
|
84
|
+
# disable by removing the symlink so that runit
|
85
|
+
# doesn't restart our service behind our back
|
86
|
+
# note that runit doesn't need to perform a stop
|
87
|
+
# before a disable
|
88
|
+
def disable
|
89
|
+
# unlink the daemon symlink to disable it
|
90
|
+
File.unlink(self.service) if FileTest.symlink?(self.service)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
@@ -14,7 +14,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed,
|
|
14
14
|
:fields => %w{options type key name},
|
15
15
|
:optional => %w{options},
|
16
16
|
:rts => /^\s+/,
|
17
|
-
:match => /^(?:(
|
17
|
+
:match => /^(?:(.+) )?(ssh-dss|ssh-rsa) ([^ ]+)(?: (.+))?$/,
|
18
18
|
:post_parse => proc { |record|
|
19
19
|
if record[:options].nil?
|
20
20
|
record[:options] = [:absent]
|
@@ -30,6 +30,12 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed,
|
|
30
30
|
end
|
31
31
|
}
|
32
32
|
|
33
|
+
record_line :key_v1,
|
34
|
+
:fields => %w{options bits exponent modulus name},
|
35
|
+
:optional => %w{options},
|
36
|
+
:rts => /^\s+/,
|
37
|
+
:match => /^(?:(.+) )?(\d+) (\d+) (\d+)(?: (.+))?$/
|
38
|
+
|
33
39
|
def prefetch
|
34
40
|
# This was done in the type class but path expansion was failing for
|
35
41
|
# not yet existing users, the only workaround I found was to move that
|
File without changes
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
2
|
+
desc "User management for hp-ux! Undocumented switch to special usermod because HP-UX regular usermod is TOO STUPID to change stuff while the user is logged in."
|
3
|
+
|
4
|
+
defaultfor :operatingsystem => "hp-ux"
|
5
|
+
confine :operatingsystem => "hp-ux"
|
6
|
+
|
7
|
+
commands :modify => "/usr/sam/lbin/usermod.sam", :delete => "/usr/sam/lbin/userdel.sam", :add => "/usr/sbin/useradd"
|
8
|
+
options :comment, :method => :gecos
|
9
|
+
options :groups, :flag => "-G"
|
10
|
+
options :home, :flag => "-d", :method => :dir
|
11
|
+
|
12
|
+
verify :gid, "GID must be an integer" do |value|
|
13
|
+
value.is_a? Integer
|
14
|
+
end
|
15
|
+
|
16
|
+
verify :groups, "Groups must be comma-separated" do |value|
|
17
|
+
value !~ /\s/
|
18
|
+
end
|
19
|
+
|
20
|
+
has_features :manages_homedir, :allows_duplicates
|
21
|
+
|
22
|
+
def deletecmd
|
23
|
+
super.insert(1,"-F")
|
24
|
+
end
|
25
|
+
|
26
|
+
def modifycmd(param,value)
|
27
|
+
super.insert(1,"-F")
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'puppet/util/user_attr'
|
2
|
+
|
3
|
+
Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd do
|
4
|
+
|
5
|
+
desc "User management inherits ``useradd`` and adds logic to manage roles on Solaris using roleadd."
|
6
|
+
|
7
|
+
defaultfor :operatingsystem => :solaris
|
8
|
+
|
9
|
+
commands :add => "useradd", :delete => "userdel", :modify => "usermod", :role_add => "roleadd", :role_delete => "roledel", :role_modify => "rolemod"
|
10
|
+
options :home, :flag => "-d", :method => :dir
|
11
|
+
options :comment, :method => :gecos
|
12
|
+
options :groups, :flag => "-G"
|
13
|
+
options :roles, :flag => "-R"
|
14
|
+
options :auths, :flag => "-A"
|
15
|
+
options :profiles, :flag => "-P"
|
16
|
+
|
17
|
+
verify :gid, "GID must be an integer" do |value|
|
18
|
+
value.is_a? Integer
|
19
|
+
end
|
20
|
+
|
21
|
+
verify :groups, "Groups must be comma-separated" do |value|
|
22
|
+
value !~ /\s/
|
23
|
+
end
|
24
|
+
|
25
|
+
has_features :manages_homedir, :allows_duplicates, :manages_solaris_rbac
|
26
|
+
|
27
|
+
if Puppet.features.libshadow?
|
28
|
+
has_feature :manages_passwords
|
29
|
+
end
|
30
|
+
|
31
|
+
#must override this to hand the keyvalue pairs
|
32
|
+
def add_properties
|
33
|
+
cmd = []
|
34
|
+
Puppet::Type.type(:user).validproperties.each do |property|
|
35
|
+
next if property == :ensure
|
36
|
+
# the value needs to be quoted, mostly because -c might
|
37
|
+
# have spaces in it
|
38
|
+
if value = @resource.should(property) and value != ""
|
39
|
+
if property == :keys
|
40
|
+
cmd += build_keys_cmd(value)
|
41
|
+
else
|
42
|
+
cmd << flag(property) << value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
cmd
|
47
|
+
end
|
48
|
+
|
49
|
+
def user_attributes
|
50
|
+
@user_attributes ||= UserAttr.get_attributes_by_name(@resource[:name])
|
51
|
+
end
|
52
|
+
|
53
|
+
def flush
|
54
|
+
@user_attributes = nil
|
55
|
+
end
|
56
|
+
|
57
|
+
def command(cmd)
|
58
|
+
if is_role? or (!exists? and @resource[:ensure] == :role)
|
59
|
+
cmd = ("role_" + cmd.to_s).intern
|
60
|
+
end
|
61
|
+
super(cmd)
|
62
|
+
end
|
63
|
+
|
64
|
+
def is_role?
|
65
|
+
user_attributes and user_attributes[:type] == "role"
|
66
|
+
end
|
67
|
+
|
68
|
+
def run(cmd, msg)
|
69
|
+
begin
|
70
|
+
execute(cmd)
|
71
|
+
rescue Puppet::ExecutionFailure => detail
|
72
|
+
raise Puppet::Error, "Could not %s %s %s: %s" %
|
73
|
+
[msg, @resource.class.name, @resource.name, detail]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def transition(type)
|
78
|
+
cmd = [command(:modify)]
|
79
|
+
cmd << "-K" << "type=#{type}"
|
80
|
+
cmd += add_properties
|
81
|
+
cmd << @resource[:name]
|
82
|
+
end
|
83
|
+
|
84
|
+
def create
|
85
|
+
if is_role?
|
86
|
+
run(transition("normal"), "transition role to")
|
87
|
+
else
|
88
|
+
run(addcmd, "create")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def destroy
|
93
|
+
run(deletecmd, "delete "+ (is_role? ? "role" : "user"))
|
94
|
+
end
|
95
|
+
|
96
|
+
def create_role
|
97
|
+
if exists? and !is_role?
|
98
|
+
run(transition("role"), "transition user to")
|
99
|
+
else
|
100
|
+
run(addcmd, "create role")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def roles
|
105
|
+
if user_attributes
|
106
|
+
user_attributes[:roles]
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def auths
|
111
|
+
if user_attributes
|
112
|
+
user_attributes[:auths]
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def profiles
|
117
|
+
if user_attributes
|
118
|
+
user_attributes[:profiles]
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def project
|
123
|
+
if user_attributes
|
124
|
+
user_attributes[:project]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def managed_attributes
|
129
|
+
[:name, :type, :roles, :auths, :profiles, :project]
|
130
|
+
end
|
131
|
+
|
132
|
+
def remove_managed_attributes
|
133
|
+
managed = managed_attributes
|
134
|
+
user_attributes.select { |k,v| !managed.include?(k) }.inject({}) { |hash, array| hash[array[0]] = array[1]; hash }
|
135
|
+
end
|
136
|
+
|
137
|
+
def keys
|
138
|
+
if user_attributes
|
139
|
+
#we have to get rid of all the keys we are managing another way
|
140
|
+
remove_managed_attributes
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def build_keys_cmd(keys_hash)
|
145
|
+
cmd = []
|
146
|
+
keys_hash.each do |k,v|
|
147
|
+
cmd << "-K" << "#{k}=#{v}"
|
148
|
+
end
|
149
|
+
cmd
|
150
|
+
end
|
151
|
+
|
152
|
+
def keys=(keys_hash)
|
153
|
+
run([command(:modify)] + build_keys_cmd(keys_hash) << @resource[:name], "modify attribute key pairs")
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|