summaryrefslogtreecommitdiffstats
path: root/lib/puppet/defaults.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/defaults.rb')
-rw-r--r--lib/puppet/defaults.rb1578
1 files changed, 789 insertions, 789 deletions
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index 18d045693..0af40f2cb 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -1,795 +1,795 @@
# The majority of the system configuration parameters are set in this file.
module Puppet
- setdefaults(:main,
- :confdir => [Puppet.run_mode.conf_dir, "The main Puppet configuration directory. The default for this parameter is calculated based on the user. If the process
- is running as root or the user that ``puppet master`` is supposed to run as, it defaults to a system directory, but if it's running as any other user,
- it defaults to being in ``~``."],
- :vardir => [Puppet.run_mode.var_dir, "Where Puppet stores dynamic and growing data. The default for this parameter is calculated specially, like `confdir`_."],
- :name => [Puppet.application_name.to_s, "The name of the application, if we are running as one. The
- default is essentially $0 without the path or ``.rb``."],
- :mode => [Puppet.run_mode.name.to_s, "The effective 'run mode' of the application: master, agent, or user."]
- )
-
- setdefaults(:main, :logdir => Puppet.run_mode.logopts)
-
- setdefaults(:main,
- :trace => [false, "Whether to print stack traces on some errors"],
- :autoflush => [false, "Whether log files should always flush to disk."],
- :syslogfacility => ["daemon", "What syslog facility to use when logging to
- syslog. Syslog has a fixed list of valid facilities, and you must
- choose one of those; you cannot just make one up."],
- :statedir => { :default => "$vardir/state",
- :mode => 01755,
- :desc => "The directory where Puppet state is stored. Generally,
- this directory can be removed without causing harm (although it
- might result in spurious service restarts)."
- },
- :rundir => {
- :default => Puppet.run_mode.run_dir,
- :mode => 01777,
- :desc => "Where Puppet PID files are kept."
- },
- :genconfig => [false,
- "Whether to just print a configuration to stdout and exit. Only makes
- sense when used interactively. Takes into account arguments specified
- on the CLI."],
- :genmanifest => [false,
- "Whether to just print a manifest to stdout and exit. Only makes
- sense when used interactively. Takes into account arguments specified
- on the CLI."],
- :configprint => ["",
- "Print the value of a specific configuration parameter. If a
- parameter is provided for this, then the value is printed and puppet
- exits. Comma-separate multiple values. For a list of all values,
- specify 'all'. This feature is only available in Puppet versions
- higher than 0.18.4."],
- :color => ["ansi", "Whether to use colors when logging to the console.
- Valid values are ``ansi`` (equivalent to ``true``), ``html`` (mostly
- used during testing with TextMate), and ``false``, which produces
- no color."],
- :mkusers => [false,
- "Whether to create the necessary user and group that puppet agent will
- run as."],
- :manage_internal_file_permissions => [true,
- "Whether Puppet should manage the owner, group, and mode of files
- it uses internally"
- ],
- :onetime => [false,
- "Run the configuration once, rather than as a long-running
- daemon. This is useful for interactively running puppetd."
- ],
- :path => {:default => "none",
- :desc => "The shell search path. Defaults to whatever is inherited
- from the parent process.",
- :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
- :hook => proc do |value|
- ENV["PATH"] = "" if ENV["PATH"].nil?
- ENV["PATH"] = value unless value == "none"
- paths = ENV["PATH"].split(File::PATH_SEPARATOR)
- %w{/usr/sbin /sbin}.each do |path|
- ENV["PATH"] += File::PATH_SEPARATOR + path unless paths.include?(path)
- end
- value
- end
- },
- :libdir => {:default => "$vardir/lib",
- :desc => "An extra search path for Puppet. This is only useful
- for those files that Puppet will load on demand, and is only
- guaranteed to work for those cases. In fact, the autoload
- mechanism is responsible for making sure this directory
- is in Ruby's search path",
- :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
- :hook => proc do |value|
- $LOAD_PATH.delete(@oldlibdir) if defined?(@oldlibdir) and $LOAD_PATH.include?(@oldlibdir)
- @oldlibdir = value
- $LOAD_PATH << value
- end
- },
- :ignoreimport => [false, "A parameter that can be used in commit
- hooks, since it enables you to parse-check a single file rather
- than requiring that all files exist."],
- :authconfig => [ "$confdir/namespaceauth.conf",
- "The configuration file that defines the rights to the different
- namespaces and methods. This can be used as a coarse-grained
- authorization system for both ``puppet agent`` and ``puppet master``."
- ],
- :environment => {:default => "production", :desc => "The environment Puppet is running in. For clients
- (e.g., ``puppet agent``) this determines the environment itself, which
- is used to find modules and much more. For servers (i.e., ``puppet master``) this provides the default environment for nodes
- we know nothing about."
- },
- :diff_args => ["-u", "Which arguments to pass to the diff command when printing differences between files."],
- :diff => ["diff", "Which diff command to use when printing differences between files."],
- :show_diff => [false, "Whether to print a contextual diff when files are being replaced. The diff
- is printed on stdout, so this option is meaningless unless you are running Puppet interactively.
- This feature currently requires the ``diff/lcs`` Ruby library."],
- :daemonize => { :default => true,
- :desc => "Send the process into the background. This is the default.",
- :short => "D"
- },
- :maximum_uid => [4294967290, "The maximum allowed UID. Some platforms use negative UIDs
- but then ship with tools that do not know how to handle signed ints, so the UIDs show up as
- huge numbers that can then not be fed back into the system. This is a hackish way to fail in a
- slightly more useful way when that happens."],
- :node_terminus => ["plain", "Where to find information about nodes."],
- :catalog_terminus => ["compiler", "Where to get node catalogs. This is useful to change if, for instance,
- you'd like to pre-compile catalogs and store them in memcached or some other easily-accessed store."],
- :facts_terminus => ["facter", "Where to get node facts."],
- :httplog => { :default => "$logdir/http.log",
- :owner => "root",
- :mode => 0640,
- :desc => "Where the puppet agent web server logs."
- },
- :http_proxy_host => ["none",
- "The HTTP proxy host to use for outgoing connections. Note: You
- may need to use a FQDN for the server hostname when using a proxy."],
- :http_proxy_port => [3128, "The HTTP proxy port to use for outgoing connections"],
- :filetimeout => [ 15,
- "The minimum time to wait (in seconds) between checking for updates in
- configuration files. This timeout determines how quickly Puppet checks whether
- a file (such as manifests or templates) has changed on disk."
- ],
- :queue_type => ["stomp", "Which type of queue to use for asynchronous processing."],
- :queue_type => ["stomp", "Which type of queue to use for asynchronous processing."],
- :queue_source => ["stomp://localhost:61613/", "Which type of queue to use for asynchronous processing. If your stomp server requires
- authentication, you can include it in the URI as long as your stomp client library is at least 1.1.1"],
- :async_storeconfigs => {:default => false, :desc => "Whether to use a queueing system to provide asynchronous database integration.
- Requires that ``puppetqd`` be running and that 'PSON' support for ruby be installed.",
- :hook => proc do |value|
- if value
- # This reconfigures the terminii for Node, Facts, and Catalog
- Puppet.settings[:storeconfigs] = true
-
- # But then we modify the configuration
- Puppet::Resource::Catalog.cache_class = :queue
- else
- raise "Cannot disable asynchronous storeconfigs in a running process"
- end
- end
- },
- :thin_storeconfigs => {:default => false, :desc =>
- "Boolean; wether storeconfigs store in the database only the facts and exported resources.
- If true, then storeconfigs performance will be higher and still allow exported/collected
- resources, but other usage external to Puppet might not work",
- :hook => proc do |value|
- Puppet.settings[:storeconfigs] = true if value
- end
- },
- :config_version => ["", "How to determine the configuration version. By default, it will be the
- time that the configuration is parsed, but you can provide a shell script to override how the
- version is determined. The output of this script will be added to every log message in the
- reports, allowing you to correlate changes on your hosts to the source version on the server."],
- :zlib => [true,
- "Boolean; whether to use the zlib library",
- ],
- :prerun_command => ["", "A command to run before every agent run. If this command returns a non-zero
- return code, the entire Puppet run will fail."],
- :postrun_command => ["", "A command to run after every agent run. If this command returns a non-zero
- return code, the entire Puppet run will be considered to have failed, even though it might have
- performed work during the normal run."],
- :freeze_main => [false, "Freezes the 'main' class, disallowing any code to be added to it. This
- essentially means that you can't have any code outside of a node, class, or definition other
- than in the site manifest."]
- )
-
- hostname = Facter["hostname"].value
- domain = Facter["domain"].value
- if domain and domain != ""
- fqdn = [hostname, domain].join(".")
- else
- fqdn = hostname
- end
-
-
- Puppet.setdefaults(
- :main,
-
- # We have to downcase the fqdn, because the current ssl stuff (as oppsed to in master) doesn't have good facilities for
- # manipulating naming.
- :certname => {:default => fqdn.downcase, :desc => "The name to use when handling certificates. Defaults
- to the fully qualified domain name.",
- :call_on_define => true, # Call our hook with the default value, so we're always downcased
- :hook => proc { |value| raise(ArgumentError, "Certificate names must be lower case; see #1168") unless value == value.downcase }},
- :certdnsnames => ['', "The DNS names on the Server certificate as a colon-separated list.
- If it's anything other than an empty string, it will be used as an alias in the created
- certificate. By default, only the server gets an alias set up, and only for 'puppet'."],
- :certdir => {
- :default => "$ssldir/certs",
- :owner => "service",
- :desc => "The certificate directory."
- },
- :ssldir => {
- :default => "$confdir/ssl",
- :mode => 0771,
- :owner => "service",
- :desc => "Where SSL certificates are kept."
- },
- :publickeydir => {
- :default => "$ssldir/public_keys",
- :owner => "service",
- :desc => "The public key directory."
- },
- :requestdir => {
- :default => "$ssldir/certificate_requests",
- :owner => "service",
- :desc => "Where host certificate requests are stored."
- },
- :privatekeydir => { :default => "$ssldir/private_keys",
- :mode => 0750,
- :owner => "service",
- :desc => "The private key directory."
- },
- :privatedir => { :default => "$ssldir/private",
- :mode => 0750,
- :owner => "service",
- :desc => "Where the client stores private certificate information."
- },
- :passfile => { :default => "$privatedir/password",
- :mode => 0640,
- :owner => "service",
- :desc => "Where puppet agent stores the password for its private key.
- Generally unused."
- },
- :hostcsr => { :default => "$ssldir/csr_$certname.pem",
- :mode => 0644,
- :owner => "service",
- :desc => "Where individual hosts store and look for their certificate requests."
- },
- :hostcert => { :default => "$certdir/$certname.pem",
- :mode => 0644,
- :owner => "service",
- :desc => "Where individual hosts store and look for their certificates."
- },
- :hostprivkey => { :default => "$privatekeydir/$certname.pem",
- :mode => 0600,
- :owner => "service",
- :desc => "Where individual hosts store and look for their private key."
- },
- :hostpubkey => { :default => "$publickeydir/$certname.pem",
- :mode => 0644,
- :owner => "service",
- :desc => "Where individual hosts store and look for their public key."
- },
- :localcacert => { :default => "$certdir/ca.pem",
- :mode => 0644,
- :owner => "service",
- :desc => "Where each client stores the CA certificate."
- },
- :hostcrl => { :default => "$ssldir/crl.pem",
- :mode => 0644,
- :owner => "service",
- :desc => "Where the host's certificate revocation list can be found.
- This is distinct from the certificate authority's CRL."
- },
- :certificate_revocation => [true, "Whether certificate revocation should be supported by downloading a Certificate Revocation List (CRL)
- to all clients. If enabled, CA chaining will almost definitely not work."]
- )
+ setdefaults(:main,
+ :confdir => [Puppet.run_mode.conf_dir, "The main Puppet configuration directory. The default for this parameter is calculated based on the user. If the process
+ is running as root or the user that ``puppet master`` is supposed to run as, it defaults to a system directory, but if it's running as any other user,
+ it defaults to being in ``~``."],
+ :vardir => [Puppet.run_mode.var_dir, "Where Puppet stores dynamic and growing data. The default for this parameter is calculated specially, like `confdir`_."],
+ :name => [Puppet.application_name.to_s, "The name of the application, if we are running as one. The
+ default is essentially $0 without the path or ``.rb``."],
+ :mode => [Puppet.run_mode.name.to_s, "The effective 'run mode' of the application: master, agent, or user."]
+ )
+
+ setdefaults(:main, :logdir => Puppet.run_mode.logopts)
+
+ setdefaults(:main,
+ :trace => [false, "Whether to print stack traces on some errors"],
+ :autoflush => [false, "Whether log files should always flush to disk."],
+ :syslogfacility => ["daemon", "What syslog facility to use when logging to
+ syslog. Syslog has a fixed list of valid facilities, and you must
+ choose one of those; you cannot just make one up."],
+ :statedir => { :default => "$vardir/state",
+ :mode => 01755,
+ :desc => "The directory where Puppet state is stored. Generally,
+ this directory can be removed without causing harm (although it
+ might result in spurious service restarts)."
+ },
+ :rundir => {
+ :default => Puppet.run_mode.run_dir,
+ :mode => 01777,
+ :desc => "Where Puppet PID files are kept."
+ },
+ :genconfig => [false,
+ "Whether to just print a configuration to stdout and exit. Only makes
+ sense when used interactively. Takes into account arguments specified
+ on the CLI."],
+ :genmanifest => [false,
+ "Whether to just print a manifest to stdout and exit. Only makes
+ sense when used interactively. Takes into account arguments specified
+ on the CLI."],
+ :configprint => ["",
+ "Print the value of a specific configuration parameter. If a
+ parameter is provided for this, then the value is printed and puppet
+ exits. Comma-separate multiple values. For a list of all values,
+ specify 'all'. This feature is only available in Puppet versions
+ higher than 0.18.4."],
+ :color => ["ansi", "Whether to use colors when logging to the console.
+ Valid values are ``ansi`` (equivalent to ``true``), ``html`` (mostly
+ used during testing with TextMate), and ``false``, which produces
+ no color."],
+ :mkusers => [false,
+ "Whether to create the necessary user and group that puppet agent will
+ run as."],
+ :manage_internal_file_permissions => [true,
+ "Whether Puppet should manage the owner, group, and mode of files
+ it uses internally"
+ ],
+ :onetime => [false,
+ "Run the configuration once, rather than as a long-running
+ daemon. This is useful for interactively running puppetd."
+ ],
+ :path => {:default => "none",
+ :desc => "The shell search path. Defaults to whatever is inherited
+ from the parent process.",
+ :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
+ :hook => proc do |value|
+ ENV["PATH"] = "" if ENV["PATH"].nil?
+ ENV["PATH"] = value unless value == "none"
+ paths = ENV["PATH"].split(File::PATH_SEPARATOR)
+ %w{/usr/sbin /sbin}.each do |path|
+ ENV["PATH"] += File::PATH_SEPARATOR + path unless paths.include?(path)
+ end
+ value
+ end
+ },
+ :libdir => {:default => "$vardir/lib",
+ :desc => "An extra search path for Puppet. This is only useful
+ for those files that Puppet will load on demand, and is only
+ guaranteed to work for those cases. In fact, the autoload
+ mechanism is responsible for making sure this directory
+ is in Ruby's search path",
+ :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
+ :hook => proc do |value|
+ $LOAD_PATH.delete(@oldlibdir) if defined?(@oldlibdir) and $LOAD_PATH.include?(@oldlibdir)
+ @oldlibdir = value
+ $LOAD_PATH << value
+ end
+ },
+ :ignoreimport => [false, "A parameter that can be used in commit
+ hooks, since it enables you to parse-check a single file rather
+ than requiring that all files exist."],
+ :authconfig => [ "$confdir/namespaceauth.conf",
+ "The configuration file that defines the rights to the different
+ namespaces and methods. This can be used as a coarse-grained
+ authorization system for both ``puppet agent`` and ``puppet master``."
+ ],
+ :environment => {:default => "production", :desc => "The environment Puppet is running in. For clients
+ (e.g., ``puppet agent``) this determines the environment itself, which
+ is used to find modules and much more. For servers (i.e., ``puppet master``) this provides the default environment for nodes
+ we know nothing about."
+ },
+ :diff_args => ["-u", "Which arguments to pass to the diff command when printing differences between files."],
+ :diff => ["diff", "Which diff command to use when printing differences between files."],
+ :show_diff => [false, "Whether to print a contextual diff when files are being replaced. The diff
+ is printed on stdout, so this option is meaningless unless you are running Puppet interactively.
+ This feature currently requires the ``diff/lcs`` Ruby library."],
+ :daemonize => { :default => true,
+ :desc => "Send the process into the background. This is the default.",
+ :short => "D"
+ },
+ :maximum_uid => [4294967290, "The maximum allowed UID. Some platforms use negative UIDs
+ but then ship with tools that do not know how to handle signed ints, so the UIDs show up as
+ huge numbers that can then not be fed back into the system. This is a hackish way to fail in a
+ slightly more useful way when that happens."],
+ :node_terminus => ["plain", "Where to find information about nodes."],
+ :catalog_terminus => ["compiler", "Where to get node catalogs. This is useful to change if, for instance,
+ you'd like to pre-compile catalogs and store them in memcached or some other easily-accessed store."],
+ :facts_terminus => ["facter", "Where to get node facts."],
+ :httplog => { :default => "$logdir/http.log",
+ :owner => "root",
+ :mode => 0640,
+ :desc => "Where the puppet agent web server logs."
+ },
+ :http_proxy_host => ["none",
+ "The HTTP proxy host to use for outgoing connections. Note: You
+ may need to use a FQDN for the server hostname when using a proxy."],
+ :http_proxy_port => [3128, "The HTTP proxy port to use for outgoing connections"],
+ :filetimeout => [ 15,
+ "The minimum time to wait (in seconds) between checking for updates in
+ configuration files. This timeout determines how quickly Puppet checks whether
+ a file (such as manifests or templates) has changed on disk."
+ ],
+ :queue_type => ["stomp", "Which type of queue to use for asynchronous processing."],
+ :queue_type => ["stomp", "Which type of queue to use for asynchronous processing."],
+ :queue_source => ["stomp://localhost:61613/", "Which type of queue to use for asynchronous processing. If your stomp server requires
+ authentication, you can include it in the URI as long as your stomp client library is at least 1.1.1"],
+ :async_storeconfigs => {:default => false, :desc => "Whether to use a queueing system to provide asynchronous database integration.
+ Requires that ``puppetqd`` be running and that 'PSON' support for ruby be installed.",
+ :hook => proc do |value|
+ if value
+ # This reconfigures the terminii for Node, Facts, and Catalog
+ Puppet.settings[:storeconfigs] = true
+
+ # But then we modify the configuration
+ Puppet::Resource::Catalog.cache_class = :queue
+ else
+ raise "Cannot disable asynchronous storeconfigs in a running process"
+ end
+ end
+ },
+ :thin_storeconfigs => {:default => false, :desc =>
+ "Boolean; wether storeconfigs store in the database only the facts and exported resources.
+ If true, then storeconfigs performance will be higher and still allow exported/collected
+ resources, but other usage external to Puppet might not work",
+ :hook => proc do |value|
+ Puppet.settings[:storeconfigs] = true if value
+ end
+ },
+ :config_version => ["", "How to determine the configuration version. By default, it will be the
+ time that the configuration is parsed, but you can provide a shell script to override how the
+ version is determined. The output of this script will be added to every log message in the
+ reports, allowing you to correlate changes on your hosts to the source version on the server."],
+ :zlib => [true,
+ "Boolean; whether to use the zlib library",
+ ],
+ :prerun_command => ["", "A command to run before every agent run. If this command returns a non-zero
+ return code, the entire Puppet run will fail."],
+ :postrun_command => ["", "A command to run after every agent run. If this command returns a non-zero
+ return code, the entire Puppet run will be considered to have failed, even though it might have
+ performed work during the normal run."],
+ :freeze_main => [false, "Freezes the 'main' class, disallowing any code to be added to it. This
+ essentially means that you can't have any code outside of a node, class, or definition other
+ than in the site manifest."]
+ )
+
+ hostname = Facter["hostname"].value
+ domain = Facter["domain"].value
+ if domain and domain != ""
+ fqdn = [hostname, domain].join(".")
+ else
+ fqdn = hostname
+ end
+
+
+ Puppet.setdefaults(
+ :main,
+
+ # We have to downcase the fqdn, because the current ssl stuff (as oppsed to in master) doesn't have good facilities for
+ # manipulating naming.
+ :certname => {:default => fqdn.downcase, :desc => "The name to use when handling certificates. Defaults
+ to the fully qualified domain name.",
+ :call_on_define => true, # Call our hook with the default value, so we're always downcased
+ :hook => proc { |value| raise(ArgumentError, "Certificate names must be lower case; see #1168") unless value == value.downcase }},
+ :certdnsnames => ['', "The DNS names on the Server certificate as a colon-separated list.
+ If it's anything other than an empty string, it will be used as an alias in the created
+ certificate. By default, only the server gets an alias set up, and only for 'puppet'."],
+ :certdir => {
+ :default => "$ssldir/certs",
+ :owner => "service",
+ :desc => "The certificate directory."
+ },
+ :ssldir => {
+ :default => "$confdir/ssl",
+ :mode => 0771,
+ :owner => "service",
+ :desc => "Where SSL certificates are kept."
+ },
+ :publickeydir => {
+ :default => "$ssldir/public_keys",
+ :owner => "service",
+ :desc => "The public key directory."
+ },
+ :requestdir => {
+ :default => "$ssldir/certificate_requests",
+ :owner => "service",
+ :desc => "Where host certificate requests are stored."
+ },
+ :privatekeydir => { :default => "$ssldir/private_keys",
+ :mode => 0750,
+ :owner => "service",
+ :desc => "The private key directory."
+ },
+ :privatedir => { :default => "$ssldir/private",
+ :mode => 0750,
+ :owner => "service",
+ :desc => "Where the client stores private certificate information."
+ },
+ :passfile => { :default => "$privatedir/password",
+ :mode => 0640,
+ :owner => "service",
+ :desc => "Where puppet agent stores the password for its private key.
+ Generally unused."
+ },
+ :hostcsr => { :default => "$ssldir/csr_$certname.pem",
+ :mode => 0644,
+ :owner => "service",
+ :desc => "Where individual hosts store and look for their certificate requests."
+ },
+ :hostcert => { :default => "$certdir/$certname.pem",
+ :mode => 0644,
+ :owner => "service",
+ :desc => "Where individual hosts store and look for their certificates."
+ },
+ :hostprivkey => { :default => "$privatekeydir/$certname.pem",
+ :mode => 0600,
+ :owner => "service",
+ :desc => "Where individual hosts store and look for their private key."
+ },
+ :hostpubkey => { :default => "$publickeydir/$certname.pem",
+ :mode => 0644,
+ :owner => "service",
+ :desc => "Where individual hosts store and look for their public key."
+ },
+ :localcacert => { :default => "$certdir/ca.pem",
+ :mode => 0644,
+ :owner => "service",
+ :desc => "Where each client stores the CA certificate."
+ },
+ :hostcrl => { :default => "$ssldir/crl.pem",
+ :mode => 0644,
+ :owner => "service",
+ :desc => "Where the host's certificate revocation list can be found.
+ This is distinct from the certificate authority's CRL."
+ },
+ :certificate_revocation => [true, "Whether certificate revocation should be supported by downloading a Certificate Revocation List (CRL)
+ to all clients. If enabled, CA chaining will almost definitely not work."]
+ )
+
+
+ setdefaults(
+ :ca,
+ :ca_name => ["$certname", "The name to use the Certificate Authority certificate."],
+ :cadir => { :default => "$ssldir/ca",
+ :owner => "service",
+ :group => "service",
+ :mode => 0770,
+ :desc => "The root directory for the certificate authority."
+ },
+ :cacert => { :default => "$cadir/ca_crt.pem",
+ :owner => "service",
+ :group => "service",
+ :mode => 0660,
+ :desc => "The CA certificate."
+ },
+ :cakey => { :default => "$cadir/ca_key.pem",
+ :owner => "service",
+ :group => "service",
+ :mode => 0660,
+ :desc => "The CA private key."
+ },
+ :capub => { :default => "$cadir/ca_pub.pem",
+ :owner => "service",
+ :group => "service",
+ :desc => "The CA public key."
+ },
+ :cacrl => { :default => "$cadir/ca_crl.pem",
+ :owner => "service",
+ :group => "service",
+ :mode => 0664,
+
+ :desc => "The certificate revocation list (CRL) for the CA. Will be used if present but otherwise ignored.",
+ :hook => proc do |value|
+ if value == 'false'
+ Puppet.warning "Setting the :cacrl to 'false' is deprecated; Puppet will just ignore the crl if yours is missing"
+ end
+ end
+ },
+ :caprivatedir => { :default => "$cadir/private",
+ :owner => "service",
+ :group => "service",
+ :mode => 0770,
+ :desc => "Where the CA stores private certificate information."
+ },
+ :csrdir => { :default => "$cadir/requests",
+ :owner => "service",
+ :group => "service",
+ :desc => "Where the CA stores certificate requests"
+ },
+ :signeddir => { :default => "$cadir/signed",
+ :owner => "service",
+ :group => "service",
+ :mode => 0770,
+ :desc => "Where the CA stores signed certificates."
+ },
+ :capass => { :default => "$caprivatedir/ca.pass",
+ :owner => "service",
+ :group => "service",
+ :mode => 0660,
+ :desc => "Where the CA stores the password for the private key"
+ },
+ :serial => { :default => "$cadir/serial",
+ :owner => "service",
+ :group => "service",
+ :mode => 0644,
+ :desc => "Where the serial number for certificates is stored."
+ },
+ :autosign => { :default => "$confdir/autosign.conf",
+ :mode => 0644,
+ :desc => "Whether to enable autosign. Valid values are true (which
+ autosigns any key request, and is a very bad idea), false (which
+ never autosigns any key request), and the path to a file, which
+ uses that configuration file to determine which keys to sign."},
+ :ca_days => ["", "How long a certificate should be valid.
+ This parameter is deprecated, use ca_ttl instead"],
+ :ca_ttl => ["5y", "The default TTL for new certificates; valid values
+ must be an integer, optionally followed by one of the units
+ 'y' (years of 365 days), 'd' (days), 'h' (hours), or
+ 's' (seconds). The unit defaults to seconds. If this parameter
+ is set, ca_days is ignored. Examples are '3600' (one hour)
+ and '1825d', which is the same as '5y' (5 years) "],
+ :ca_md => ["md5", "The type of hash used in certificates."],
+ :req_bits => [2048, "The bit length of the certificates."],
+ :keylength => [1024, "The bit length of keys."],
+ :cert_inventory => {
+ :default => "$cadir/inventory.txt",
+ :mode => 0644,
+ :owner => "service",
+ :group => "service",
+ :desc => "A Complete listing of all certificates"
+ }
+ )
+
+ # Define the config default.
+
+ setdefaults(
+ Puppet.settings[:name],
+ :config => ["$confdir/puppet.conf",
+ "The configuration file for #{Puppet[:name]}."],
+ :pidfile => ["$rundir/$name.pid", "The pid file"],
+ :bindaddress => ["", "The address a listening server should bind to. Mongrel servers
+ default to 127.0.0.1 and WEBrick defaults to 0.0.0.0."],
+ :servertype => {:default => "webrick", :desc => "The type of server to use. Currently supported
+ options are webrick and mongrel. If you use mongrel, you will need
+ a proxy in front of the process or processes, since Mongrel cannot
+ speak SSL.",
+
+ :call_on_define => true, # Call our hook with the default value, so we always get the correct bind address set.
+ :hook => proc { |value| value == "webrick" ? Puppet.settings[:bindaddress] = "0.0.0.0" : Puppet.settings[:bindaddress] = "127.0.0.1" if Puppet.settings[:bindaddress] == "" }
+ }
+ )
+
+ setdefaults(:master,
+ :user => ["puppet", "The user puppet master should run as."],
+ :group => ["puppet", "The group puppet master should run as."],
+ :manifestdir => ["$confdir/manifests", "Where puppet master looks for its manifests."],
+ :manifest => ["$manifestdir/site.pp", "The entry-point manifest for puppet master."],
+ :code => ["", "Code to parse directly. This is essentially only used
+ by ``puppet``, and should only be set if you're writing your own Puppet
+ executable"],
+ :masterlog => { :default => "$logdir/puppetmaster.log",
+ :owner => "service",
+ :group => "service",
+ :mode => 0660,
+ :desc => "Where puppet master logs. This is generally not used,
+ since syslog is the default log destination."
+ },
+ :masterhttplog => { :default => "$logdir/masterhttp.log",
+ :owner => "service",
+ :group => "service",
+ :mode => 0660,
+ :create => true,
+ :desc => "Where the puppet master web server logs."
+ },
+ :masterport => [8140, "Which port puppet master listens on."],
+ :parseonly => [false, "Just check the syntax of the manifests."],
+ :node_name => ["cert", "How the puppetmaster determines the client's identity
+ and sets the 'hostname', 'fqdn' and 'domain' facts for use in the manifest,
+ in particular for determining which 'node' statement applies to the client.
+ Possible values are 'cert' (use the subject's CN in the client's
+ certificate) and 'facter' (use the hostname that the client
+ reported in its facts)"],
+ :bucketdir => {
+ :default => "$vardir/bucket",
+ :mode => 0750,
+ :owner => "service",
+ :group => "service",
+ :desc => "Where FileBucket files are stored."
+ },
+ :rest_authconfig => [ "$confdir/auth.conf",
+ "The configuration file that defines the rights to the different
+ rest indirections. This can be used as a fine-grained
+ authorization system for ``puppet master``."
+ ],
+ :ca => [true, "Wether the master should function as a certificate authority."],
+ :modulepath => {:default => "$confdir/modules:/usr/share/puppet/modules",
+ :desc => "The search path for modules as a colon-separated list of
+ directories.", :type => :setting }, # We don't want this to be considered a file, since it's multiple files.
+ :ssl_client_header => ["HTTP_X_CLIENT_DN", "The header containing an authenticated
+ client's SSL DN. Only used with Mongrel. This header must be set by the proxy
+ to the authenticated client's SSL DN (e.g., ``/CN=puppet.puppetlabs.com``).
+ See http://projects.puppetlabs.com/projects/puppet/wiki/Using_Mongrel for more information."],
+ :ssl_client_verify_header => ["HTTP_X_CLIENT_VERIFY", "The header containing the status
+ message of the client verification. Only used with Mongrel. This header must be set by the proxy
+ to 'SUCCESS' if the client successfully authenticated, and anything else otherwise.
+ See http://projects.puppetlabs.com/projects/puppet/wiki/Using_Mongrel for more information."],
+ # To make sure this directory is created before we try to use it on the server, we need
+ # it to be in the server section (#1138).
+ :yamldir => {:default => "$vardir/yaml", :owner => "service", :group => "service", :mode => "750",
+ :desc => "The directory in which YAML data is stored, usually in a subdirectory."},
+ :server_datadir => {:default => "$vardir/server_data", :owner => "service", :group => "service", :mode => "750",
+ :desc => "The directory in which serialized data is stored, usually in a subdirectory."},
+ :reports => ["store",
+ "The list of reports to generate. All reports are looked for
+ in puppet/reports/name.rb, and multiple report names should be
+ comma-separated (whitespace is okay)."
+ ],
+ :fileserverconfig => ["$confdir/fileserver.conf", "Where the fileserver configuration is stored."],
+ :rrddir => {:default => "$vardir/rrd",
+ :owner => "service",
+ :group => "service",
+ :desc => "The directory where RRD database files are stored.
+ Directories for each reporting host will be created under
+ this directory."
+ },
+ :rrdinterval => ["$runinterval", "How often RRD should expect data.
+ This should match how often the hosts report back to the server."],
+ :strict_hostname_checking => [false, "Whether to only search for the complete
+ hostname as it is in the certificate when searching for node information
+ in the catalogs."]
+ )
+
+ setdefaults(:agent,
+ :localconfig => { :default => "$statedir/localconfig",
+ :owner => "root",
+ :mode => 0660,
+ :desc => "Where puppet agent caches the local configuration. An
+ extension indicating the cache format is added automatically."},
+ :statefile => { :default => "$statedir/state.yaml",
+ :mode => 0660,
+ :desc => "Where puppet agent and puppet master store state associated
+ with the running configuration. In the case of puppet master,
+ this file reflects the state discovered through interacting
+ with clients."
+ },
+ :clientyamldir => {:default => "$vardir/client_yaml", :mode => "750", :desc => "The directory in which client-side YAML data is stored."},
+ :client_datadir => {:default => "$vardir/client_data", :mode => "750", :desc => "The directory in which serialized data is stored on the client."},
+ :classfile => { :default => "$statedir/classes.txt",
+ :owner => "root",
+ :mode => 0644,
+ :desc => "The file in which puppet agent stores a list of the classes
+ associated with the retrieved configuration. Can be loaded in
+ the separate ``puppet`` executable using the ``--loadclasses``
+ option."},
+ :puppetdlog => { :default => "$logdir/puppetd.log",
+ :owner => "root",
+ :mode => 0640,
+ :desc => "The log file for puppet agent. This is generally not used."
+ },
+ :server => ["puppet", "The server to which server puppet agent should connect"],
+ :ignoreschedules => [false,
+ "Boolean; whether puppet agent should ignore schedules. This is useful
+ for initial puppet agent runs."],
+ :puppetport => [8139, "Which port puppet agent listens on."],
+ :noop => [false, "Whether puppet agent should be run in noop mode."],
+ :runinterval => [1800, # 30 minutes
+ "How often puppet agent applies the client configuration; in seconds."],
+ :listen => [false, "Whether puppet agent should listen for
+ connections. If this is true, then by default only the
+ ``runner`` server is started, which allows remote authorized
+ and authenticated nodes to connect and trigger ``puppet agent``
+ runs."],
+ :ca_server => ["$server", "The server to use for certificate
+ authority requests. It's a separate server because it cannot
+ and does not need to horizontally scale."],
+ :ca_port => ["$masterport", "The port to use for the certificate authority."],
+ :catalog_format => {
+ :default => "",
+ :desc => "(Deprecated for 'preferred_serialization_format') What format to
+ use to dump the catalog. Only supports 'marshal' and 'yaml'. Only
+ matters on the client, since it asks the server for a specific format.",
+ :hook => proc { |value|
+ if value
+ Puppet.warning "Setting 'catalog_format' is deprecated; use 'preferred_serialization_format' instead."
+ Puppet.settings[:preferred_serialization_format] = value
+ end
+ }
+ },
+ :preferred_serialization_format => ["pson", "The preferred means of serializing
+ ruby instances for passing over the wire. This won't guarantee that all
+ instances will be serialized using this method, since not all classes
+ can be guaranteed to support this format, but it will be used for all
+ classes that support it."],
+ :puppetdlockfile => [ "$statedir/puppetdlock", "A lock file to temporarily stop puppet agent from doing anything."],
+ :usecacheonfailure => [true,
+ "Whether to use the cached configuration when the remote
+ configuration will not compile. This option is useful for testing
+ new configurations, where you want to fix the broken configuration
+ rather than reverting to a known-good one."
+ ],
+ :use_cached_catalog => [false,
+ "Whether to only use the cached catalog rather than compiling a new catalog
+ on every run. Puppet can be run with this enabled by default and then selectively
+ disabled when a recompile is desired."],
+ :ignorecache => [false,
+ "Ignore cache and always recompile the configuration. This is
+ useful for testing new configurations, where the local cache may in
+ fact be stale even if the timestamps are up to date - if the facts
+ change or if the server changes."
+ ],
+ :downcasefacts => [false, "Whether facts should be made all lowercase when sent to the server."],
+ :dynamicfacts => ["memorysize,memoryfree,swapsize,swapfree",
+ "Facts that are dynamic; these facts will be ignored when deciding whether
+ changed facts should result in a recompile. Multiple facts should be
+ comma-separated."],
+ :splaylimit => ["$runinterval",
+ "The maximum time to delay before runs. Defaults to being the same as the
+ run interval."],
+ :splay => [false,
+ "Whether to sleep for a pseudo-random (but consistent) amount of time before
+ a run."],
+ :clientbucketdir => {
+ :default => "$vardir/clientbucket",
+ :mode => 0750,
+ :desc => "Where FileBucket files are stored locally."
+ },
+ :configtimeout => [120,
+ "How long the client should wait for the configuration to be retrieved
+ before considering it a failure. This can help reduce flapping if too
+ many clients contact the server at one time."
+ ],
+ :reportserver => {
+ :default => "$server",
+ :call_on_define => false,
+ :desc => "(Deprecated for 'report_server') The server to which to send transaction reports.",
+ :hook => proc do |value|
+ Puppet.settings[:report_server] = value if value
+ end
+ },
+ :report_server => ["$server",
+ "The server to which to send transaction reports."
+ ],
+ :report_port => ["$masterport",
+ "The port to communicate with the report_server."
+ ],
+ :report => [false,
+ "Whether to send reports after every transaction."
+ ],
+ :graph => [false, "Whether to create dot graph files for the different
+ configuration graphs. These dot files can be interpreted by tools
+ like OmniGraffle or dot (which is part of ImageMagick)."],
+ :graphdir => ["$statedir/graphs", "Where to store dot-outputted graphs."],
+ :http_compression => [false, "Allow http compression in REST communication with the master.
+ This setting might improve performance for agent -> master communications over slow WANs.
+ Your puppetmaster needs to support compression (usually by activating some settings in a reverse-proxy
+ in front of the puppetmaster, which rules out webrick).
+ It is harmless to activate this settings if your master doesn't support
+ compression, but if it supports it, this setting might reduce performance on high-speed LANs."]
+ )
+
+ # Plugin information.
+
+ setdefaults(
+ :main,
+ :plugindest => ["$libdir",
+ "Where Puppet should store plugins that it pulls down from the central
+ server."],
+ :pluginsource => ["puppet://$server/plugins",
+ "From where to retrieve plugins. The standard Puppet ``file`` type
+ is used for retrieval, so anything that is a valid file source can
+ be used here."],
+ :pluginsync => [false, "Whether plugins should be synced with the central server."],
+
+ :pluginsignore => [".svn CVS .git", "What files to ignore when pulling down plugins."]
+ )
+
+ # Central fact information.
+
+ setdefaults(
+ :main,
+ :factpath => {:default => "$vardir/lib/facter/${File::PATH_SEPARATOR}$vardir/facts",
+ :desc => "Where Puppet should look for facts. Multiple directories should
+ be colon-separated, like normal PATH variables.",
+
+ :call_on_define => true, # Call our hook with the default value, so we always get the value added to facter.
+ :type => :setting, # Don't consider it a file, because it could be multiple colon-separated files
+ :hook => proc { |value| Facter.search(value) if Facter.respond_to?(:search) }},
+ :factdest => ["$vardir/facts/",
+ "Where Puppet should store facts that it pulls down from the central
+ server."],
+ :factsource => ["puppet://$server/facts/",
+ "From where to retrieve facts. The standard Puppet ``file`` type
+ is used for retrieval, so anything that is a valid file source can
+ be used here."],
+ :factsync => [false, "Whether facts should be synced with the central server."],
+ :factsignore => [".svn CVS", "What files to ignore when pulling down facts."],
+ :reportdir => {:default => "$vardir/reports",
+ :mode => 0750,
+ :owner => "service",
+ :group => "service",
+ :desc => "The directory in which to store reports
+ received from the client. Each client gets a separate
+ subdirectory."},
+ :reporturl => ["http://localhost:3000/reports",
+ "The URL used by the http reports processor to send reports"]
+ )
+
+
+ setdefaults(
+ :tagmail,
+ :tagmap => ["$confdir/tagmail.conf", "The mapping between reporting tags and email addresses."],
+ :sendmail => [%x{which sendmail 2>/dev/null}.chomp, "Where to find the sendmail binary with which to send email."],
+
+ :reportfrom => ["report@" + [Facter["hostname"].value, Facter["domain"].value].join("."), "The 'from' email address for the reports."],
+ :smtpserver => ["none", "The server through which to send email reports."]
+ )
+
+
+ setdefaults(
+ :rails,
+ :dblocation => { :default => "$statedir/clientconfigs.sqlite3",
+ :mode => 0660,
+ :owner => "service",
+ :group => "service",
+ :desc => "The database cache for client configurations. Used for
+ querying within the language."
+ },
+ :dbadapter => [ "sqlite3", "The type of database to use." ],
+ :dbmigrate => [ false, "Whether to automatically migrate the database." ],
+ :dbname => [ "puppet", "The name of the database to use." ],
+ :dbserver => [ "localhost", "The database server for caching. Only
+ used when networked databases are used."],
+ :dbport => [ "", "The database password for caching. Only
+ used when networked databases are used."],
+ :dbuser => [ "puppet", "The database user for caching. Only
+ used when networked databases are used."],
+ :dbpassword => [ "puppet", "The database password for caching. Only
+ used when networked databases are used."],
+ :dbsocket => [ "", "The database socket location. Only used when networked
+ databases are used. Will be ignored if the value is an empty string."],
+ :dbconnections => [ 0, "The number of database connections. Only used when
+ networked databases are used. Will be ignored if the value is an empty
+ string or is less than 1."],
+ :railslog => {:default => "$logdir/rails.log",
+ :mode => 0600,
+ :owner => "service",
+ :group => "service",
+ :desc => "Where Rails-specific logs are sent"
+ },
+
+ :rails_loglevel => ["info", "The log level for Rails connections. The value must be
+ a valid log level within Rails. Production environments normally use ``info``
+ and other environments normally use ``debug``."]
+ )
+
+
+ setdefaults(
+ :couchdb,
+
+ :couchdb_url => ["http://127.0.0.1:5984/puppet", "The url where the puppet couchdb database will be created"]
+ )
+
+
+ setdefaults(
+ :transaction,
+ :tags => ["", "Tags to use to find resources. If this is set, then
+ only resources tagged with the specified tags will be applied.
+ Values must be comma-separated."],
+ :evaltrace => [false, "Whether each resource should log when it is
+ being evaluated. This allows you to interactively see exactly
+ what is being done."],
+ :summarize => [false,
+
+ "Whether to print a transaction summary."
+ ]
+ )
+
+
+ setdefaults(
+ :main,
+ :external_nodes => ["none",
+
+ "An external command that can produce node information. The output
+ must be a YAML dump of a hash, and that hash must have one or both of
+ ``classes`` and ``parameters``, where ``classes`` is an array and
+ ``parameters`` is a hash. For unknown nodes, the commands should
+ exit with a non-zero exit code.
+
+ This command makes it straightforward to store your node mapping
+ information in other data sources like databases."])
setdefaults(
- :ca,
- :ca_name => ["$certname", "The name to use the Certificate Authority certificate."],
- :cadir => { :default => "$ssldir/ca",
- :owner => "service",
- :group => "service",
- :mode => 0770,
- :desc => "The root directory for the certificate authority."
- },
- :cacert => { :default => "$cadir/ca_crt.pem",
- :owner => "service",
- :group => "service",
- :mode => 0660,
- :desc => "The CA certificate."
- },
- :cakey => { :default => "$cadir/ca_key.pem",
- :owner => "service",
- :group => "service",
- :mode => 0660,
- :desc => "The CA private key."
- },
- :capub => { :default => "$cadir/ca_pub.pem",
- :owner => "service",
- :group => "service",
- :desc => "The CA public key."
- },
- :cacrl => { :default => "$cadir/ca_crl.pem",
- :owner => "service",
- :group => "service",
- :mode => 0664,
-
- :desc => "The certificate revocation list (CRL) for the CA. Will be used if present but otherwise ignored.",
- :hook => proc do |value|
- if value == 'false'
- Puppet.warning "Setting the :cacrl to 'false' is deprecated; Puppet will just ignore the crl if yours is missing"
- end
- end
- },
- :caprivatedir => { :default => "$cadir/private",
- :owner => "service",
- :group => "service",
- :mode => 0770,
- :desc => "Where the CA stores private certificate information."
- },
- :csrdir => { :default => "$cadir/requests",
- :owner => "service",
- :group => "service",
- :desc => "Where the CA stores certificate requests"
- },
- :signeddir => { :default => "$cadir/signed",
- :owner => "service",
- :group => "service",
- :mode => 0770,
- :desc => "Where the CA stores signed certificates."
- },
- :capass => { :default => "$caprivatedir/ca.pass",
- :owner => "service",
- :group => "service",
- :mode => 0660,
- :desc => "Where the CA stores the password for the private key"
- },
- :serial => { :default => "$cadir/serial",
- :owner => "service",
- :group => "service",
- :mode => 0644,
- :desc => "Where the serial number for certificates is stored."
- },
- :autosign => { :default => "$confdir/autosign.conf",
- :mode => 0644,
- :desc => "Whether to enable autosign. Valid values are true (which
- autosigns any key request, and is a very bad idea), false (which
- never autosigns any key request), and the path to a file, which
- uses that configuration file to determine which keys to sign."},
- :ca_days => ["", "How long a certificate should be valid.
- This parameter is deprecated, use ca_ttl instead"],
- :ca_ttl => ["5y", "The default TTL for new certificates; valid values
- must be an integer, optionally followed by one of the units
- 'y' (years of 365 days), 'd' (days), 'h' (hours), or
- 's' (seconds). The unit defaults to seconds. If this parameter
- is set, ca_days is ignored. Examples are '3600' (one hour)
- and '1825d', which is the same as '5y' (5 years) "],
- :ca_md => ["md5", "The type of hash used in certificates."],
- :req_bits => [2048, "The bit length of the certificates."],
- :keylength => [1024, "The bit length of keys."],
- :cert_inventory => {
- :default => "$cadir/inventory.txt",
- :mode => 0644,
- :owner => "service",
- :group => "service",
- :desc => "A Complete listing of all certificates"
- }
- )
-
- # Define the config default.
-
- setdefaults(
- Puppet.settings[:name],
- :config => ["$confdir/puppet.conf",
- "The configuration file for #{Puppet[:name]}."],
- :pidfile => ["$rundir/$name.pid", "The pid file"],
- :bindaddress => ["", "The address a listening server should bind to. Mongrel servers
- default to 127.0.0.1 and WEBrick defaults to 0.0.0.0."],
- :servertype => {:default => "webrick", :desc => "The type of server to use. Currently supported
- options are webrick and mongrel. If you use mongrel, you will need
- a proxy in front of the process or processes, since Mongrel cannot
- speak SSL.",
-
- :call_on_define => true, # Call our hook with the default value, so we always get the correct bind address set.
- :hook => proc { |value| value == "webrick" ? Puppet.settings[:bindaddress] = "0.0.0.0" : Puppet.settings[:bindaddress] = "127.0.0.1" if Puppet.settings[:bindaddress] == "" }
- }
- )
-
- setdefaults(:master,
- :user => ["puppet", "The user puppet master should run as."],
- :group => ["puppet", "The group puppet master should run as."],
- :manifestdir => ["$confdir/manifests", "Where puppet master looks for its manifests."],
- :manifest => ["$manifestdir/site.pp", "The entry-point manifest for puppet master."],
- :code => ["", "Code to parse directly. This is essentially only used
- by ``puppet``, and should only be set if you're writing your own Puppet
- executable"],
- :masterlog => { :default => "$logdir/puppetmaster.log",
- :owner => "service",
- :group => "service",
- :mode => 0660,
- :desc => "Where puppet master logs. This is generally not used,
- since syslog is the default log destination."
- },
- :masterhttplog => { :default => "$logdir/masterhttp.log",
- :owner => "service",
- :group => "service",
- :mode => 0660,
- :create => true,
- :desc => "Where the puppet master web server logs."
- },
- :masterport => [8140, "Which port puppet master listens on."],
- :parseonly => [false, "Just check the syntax of the manifests."],
- :node_name => ["cert", "How the puppetmaster determines the client's identity
- and sets the 'hostname', 'fqdn' and 'domain' facts for use in the manifest,
- in particular for determining which 'node' statement applies to the client.
- Possible values are 'cert' (use the subject's CN in the client's
- certificate) and 'facter' (use the hostname that the client
- reported in its facts)"],
- :bucketdir => {
- :default => "$vardir/bucket",
- :mode => 0750,
- :owner => "service",
- :group => "service",
- :desc => "Where FileBucket files are stored."
- },
- :rest_authconfig => [ "$confdir/auth.conf",
- "The configuration file that defines the rights to the different
- rest indirections. This can be used as a fine-grained
- authorization system for ``puppet master``."
- ],
- :ca => [true, "Wether the master should function as a certificate authority."],
- :modulepath => {:default => "$confdir/modules:/usr/share/puppet/modules",
- :desc => "The search path for modules as a colon-separated list of
- directories.", :type => :setting }, # We don't want this to be considered a file, since it's multiple files.
- :ssl_client_header => ["HTTP_X_CLIENT_DN", "The header containing an authenticated
- client's SSL DN. Only used with Mongrel. This header must be set by the proxy
- to the authenticated client's SSL DN (e.g., ``/CN=puppet.puppetlabs.com``).
- See http://projects.puppetlabs.com/projects/puppet/wiki/Using_Mongrel for more information."],
- :ssl_client_verify_header => ["HTTP_X_CLIENT_VERIFY", "The header containing the status
- message of the client verification. Only used with Mongrel. This header must be set by the proxy
- to 'SUCCESS' if the client successfully authenticated, and anything else otherwise.
- See http://projects.puppetlabs.com/projects/puppet/wiki/Using_Mongrel for more information."],
- # To make sure this directory is created before we try to use it on the server, we need
- # it to be in the server section (#1138).
- :yamldir => {:default => "$vardir/yaml", :owner => "service", :group => "service", :mode => "750",
- :desc => "The directory in which YAML data is stored, usually in a subdirectory."},
- :server_datadir => {:default => "$vardir/server_data", :owner => "service", :group => "service", :mode => "750",
- :desc => "The directory in which serialized data is stored, usually in a subdirectory."},
- :reports => ["store",
- "The list of reports to generate. All reports are looked for
- in puppet/reports/name.rb, and multiple report names should be
- comma-separated (whitespace is okay)."
- ],
- :fileserverconfig => ["$confdir/fileserver.conf", "Where the fileserver configuration is stored."],
- :rrddir => {:default => "$vardir/rrd",
- :owner => "service",
- :group => "service",
- :desc => "The directory where RRD database files are stored.
- Directories for each reporting host will be created under
- this directory."
- },
- :rrdinterval => ["$runinterval", "How often RRD should expect data.
- This should match how often the hosts report back to the server."],
- :strict_hostname_checking => [false, "Whether to only search for the complete
- hostname as it is in the certificate when searching for node information
- in the catalogs."]
- )
-
- setdefaults(:agent,
- :localconfig => { :default => "$statedir/localconfig",
- :owner => "root",
- :mode => 0660,
- :desc => "Where puppet agent caches the local configuration. An
- extension indicating the cache format is added automatically."},
- :statefile => { :default => "$statedir/state.yaml",
- :mode => 0660,
- :desc => "Where puppet agent and puppet master store state associated
- with the running configuration. In the case of puppet master,
- this file reflects the state discovered through interacting
- with clients."
- },
- :clientyamldir => {:default => "$vardir/client_yaml", :mode => "750", :desc => "The directory in which client-side YAML data is stored."},
- :client_datadir => {:default => "$vardir/client_data", :mode => "750", :desc => "The directory in which serialized data is stored on the client."},
- :classfile => { :default => "$statedir/classes.txt",
- :owner => "root",
- :mode => 0644,
- :desc => "The file in which puppet agent stores a list of the classes
- associated with the retrieved configuration. Can be loaded in
- the separate ``puppet`` executable using the ``--loadclasses``
- option."},
- :puppetdlog => { :default => "$logdir/puppetd.log",
- :owner => "root",
- :mode => 0640,
- :desc => "The log file for puppet agent. This is generally not used."
- },
- :server => ["puppet", "The server to which server puppet agent should connect"],
- :ignoreschedules => [false,
- "Boolean; whether puppet agent should ignore schedules. This is useful
- for initial puppet agent runs."],
- :puppetport => [8139, "Which port puppet agent listens on."],
- :noop => [false, "Whether puppet agent should be run in noop mode."],
- :runinterval => [1800, # 30 minutes
- "How often puppet agent applies the client configuration; in seconds."],
- :listen => [false, "Whether puppet agent should listen for
- connections. If this is true, then by default only the
- ``runner`` server is started, which allows remote authorized
- and authenticated nodes to connect and trigger ``puppet agent``
- runs."],
- :ca_server => ["$server", "The server to use for certificate
- authority requests. It's a separate server because it cannot
- and does not need to horizontally scale."],
- :ca_port => ["$masterport", "The port to use for the certificate authority."],
- :catalog_format => {
- :default => "",
- :desc => "(Deprecated for 'preferred_serialization_format') What format to
- use to dump the catalog. Only supports 'marshal' and 'yaml'. Only
- matters on the client, since it asks the server for a specific format.",
- :hook => proc { |value|
- if value
- Puppet.warning "Setting 'catalog_format' is deprecated; use 'preferred_serialization_format' instead."
- Puppet.settings[:preferred_serialization_format] = value
- end
- }
- },
- :preferred_serialization_format => ["pson", "The preferred means of serializing
- ruby instances for passing over the wire. This won't guarantee that all
- instances will be serialized using this method, since not all classes
- can be guaranteed to support this format, but it will be used for all
- classes that support it."],
- :puppetdlockfile => [ "$statedir/puppetdlock", "A lock file to temporarily stop puppet agent from doing anything."],
- :usecacheonfailure => [true,
- "Whether to use the cached configuration when the remote
- configuration will not compile. This option is useful for testing
- new configurations, where you want to fix the broken configuration
- rather than reverting to a known-good one."
- ],
- :use_cached_catalog => [false,
- "Whether to only use the cached catalog rather than compiling a new catalog
- on every run. Puppet can be run with this enabled by default and then selectively
- disabled when a recompile is desired."],
- :ignorecache => [false,
- "Ignore cache and always recompile the configuration. This is
- useful for testing new configurations, where the local cache may in
- fact be stale even if the timestamps are up to date - if the facts
- change or if the server changes."
- ],
- :downcasefacts => [false, "Whether facts should be made all lowercase when sent to the server."],
- :dynamicfacts => ["memorysize,memoryfree,swapsize,swapfree",
- "Facts that are dynamic; these facts will be ignored when deciding whether
- changed facts should result in a recompile. Multiple facts should be
- comma-separated."],
- :splaylimit => ["$runinterval",
- "The maximum time to delay before runs. Defaults to being the same as the
- run interval."],
- :splay => [false,
- "Whether to sleep for a pseudo-random (but consistent) amount of time before
- a run."],
- :clientbucketdir => {
- :default => "$vardir/clientbucket",
- :mode => 0750,
- :desc => "Where FileBucket files are stored locally."
- },
- :configtimeout => [120,
- "How long the client should wait for the configuration to be retrieved
- before considering it a failure. This can help reduce flapping if too
- many clients contact the server at one time."
- ],
- :reportserver => {
- :default => "$server",
- :call_on_define => false,
- :desc => "(Deprecated for 'report_server') The server to which to send transaction reports.",
- :hook => proc do |value|
- Puppet.settings[:report_server] = value if value
- end
- },
- :report_server => ["$server",
- "The server to which to send transaction reports."
- ],
- :report_port => ["$masterport",
- "The port to communicate with the report_server."
- ],
- :report => [false,
- "Whether to send reports after every transaction."
- ],
- :graph => [false, "Whether to create dot graph files for the different
- configuration graphs. These dot files can be interpreted by tools
- like OmniGraffle or dot (which is part of ImageMagick)."],
- :graphdir => ["$statedir/graphs", "Where to store dot-outputted graphs."],
- :http_compression => [false, "Allow http compression in REST communication with the master.
- This setting might improve performance for agent -> master communications over slow WANs.
- Your puppetmaster needs to support compression (usually by activating some settings in a reverse-proxy
- in front of the puppetmaster, which rules out webrick).
- It is harmless to activate this settings if your master doesn't support
- compression, but if it supports it, this setting might reduce performance on high-speed LANs."]
- )
-
- # Plugin information.
-
- setdefaults(
- :main,
- :plugindest => ["$libdir",
- "Where Puppet should store plugins that it pulls down from the central
- server."],
- :pluginsource => ["puppet://$server/plugins",
- "From where to retrieve plugins. The standard Puppet ``file`` type
- is used for retrieval, so anything that is a valid file source can
- be used here."],
- :pluginsync => [false, "Whether plugins should be synced with the central server."],
-
- :pluginsignore => [".svn CVS .git", "What files to ignore when pulling down plugins."]
- )
-
- # Central fact information.
-
- setdefaults(
- :main,
- :factpath => {:default => "$vardir/lib/facter/${File::PATH_SEPARATOR}$vardir/facts",
- :desc => "Where Puppet should look for facts. Multiple directories should
- be colon-separated, like normal PATH variables.",
-
- :call_on_define => true, # Call our hook with the default value, so we always get the value added to facter.
- :type => :setting, # Don't consider it a file, because it could be multiple colon-separated files
- :hook => proc { |value| Facter.search(value) if Facter.respond_to?(:search) }},
- :factdest => ["$vardir/facts/",
- "Where Puppet should store facts that it pulls down from the central
- server."],
- :factsource => ["puppet://$server/facts/",
- "From where to retrieve facts. The standard Puppet ``file`` type
- is used for retrieval, so anything that is a valid file source can
- be used here."],
- :factsync => [false, "Whether facts should be synced with the central server."],
- :factsignore => [".svn CVS", "What files to ignore when pulling down facts."],
- :reportdir => {:default => "$vardir/reports",
- :mode => 0750,
- :owner => "service",
- :group => "service",
- :desc => "The directory in which to store reports
- received from the client. Each client gets a separate
- subdirectory."},
- :reporturl => ["http://localhost:3000/reports",
- "The URL used by the http reports processor to send reports"]
- )
-
-
- setdefaults(
- :tagmail,
- :tagmap => ["$confdir/tagmail.conf", "The mapping between reporting tags and email addresses."],
- :sendmail => [%x{which sendmail 2>/dev/null}.chomp, "Where to find the sendmail binary with which to send email."],
-
- :reportfrom => ["report@" + [Facter["hostname"].value, Facter["domain"].value].join("."), "The 'from' email address for the reports."],
- :smtpserver => ["none", "The server through which to send email reports."]
- )
-
-
- setdefaults(
- :rails,
- :dblocation => { :default => "$statedir/clientconfigs.sqlite3",
- :mode => 0660,
- :owner => "service",
- :group => "service",
- :desc => "The database cache for client configurations. Used for
- querying within the language."
- },
- :dbadapter => [ "sqlite3", "The type of database to use." ],
- :dbmigrate => [ false, "Whether to automatically migrate the database." ],
- :dbname => [ "puppet", "The name of the database to use." ],
- :dbserver => [ "localhost", "The database server for caching. Only
- used when networked databases are used."],
- :dbport => [ "", "The database password for caching. Only
- used when networked databases are used."],
- :dbuser => [ "puppet", "The database user for caching. Only
- used when networked databases are used."],
- :dbpassword => [ "puppet", "The database password for caching. Only
- used when networked databases are used."],
- :dbsocket => [ "", "The database socket location. Only used when networked
- databases are used. Will be ignored if the value is an empty string."],
- :dbconnections => [ 0, "The number of database connections. Only used when
- networked databases are used. Will be ignored if the value is an empty
- string or is less than 1."],
- :railslog => {:default => "$logdir/rails.log",
- :mode => 0600,
- :owner => "service",
- :group => "service",
- :desc => "Where Rails-specific logs are sent"
- },
-
- :rails_loglevel => ["info", "The log level for Rails connections. The value must be
- a valid log level within Rails. Production environments normally use ``info``
- and other environments normally use ``debug``."]
- )
-
-
- setdefaults(
- :couchdb,
-
- :couchdb_url => ["http://127.0.0.1:5984/puppet", "The url where the puppet couchdb database will be created"]
- )
-
-
- setdefaults(
- :transaction,
- :tags => ["", "Tags to use to find resources. If this is set, then
- only resources tagged with the specified tags will be applied.
- Values must be comma-separated."],
- :evaltrace => [false, "Whether each resource should log when it is
- being evaluated. This allows you to interactively see exactly
- what is being done."],
- :summarize => [false,
-
- "Whether to print a transaction summary."
- ]
- )
-
-
- setdefaults(
- :main,
- :external_nodes => ["none",
-
- "An external command that can produce node information. The output
- must be a YAML dump of a hash, and that hash must have one or both of
- ``classes`` and ``parameters``, where ``classes`` is an array and
- ``parameters`` is a hash. For unknown nodes, the commands should
- exit with a non-zero exit code.
-
- This command makes it straightforward to store your node mapping
- information in other data sources like databases."])
-
-
- setdefaults(
- :ldap,
- :ldapnodes => [false,
- "Whether to search for node configurations in LDAP. See
- http://projects.puppetlabs.com/projects/puppet/wiki/LDAP_Nodes for more information."],
- :ldapssl => [false,
- "Whether SSL should be used when searching for nodes.
- Defaults to false because SSL usually requires certificates
- to be set up on the client side."],
- :ldaptls => [false,
- "Whether TLS should be used when searching for nodes.
- Defaults to false because TLS usually requires certificates
- to be set up on the client side."],
- :ldapserver => ["ldap",
- "The LDAP server. Only used if ``ldapnodes`` is enabled."],
- :ldapport => [389,
- "The LDAP port. Only used if ``ldapnodes`` is enabled."],
-
- :ldapstring => ["(&(objectclass=puppetClient)(cn=%s))",
- "The search string used to find an LDAP node."],
- :ldapclassattrs => ["puppetclass",
- "The LDAP attributes to use to define Puppet classes. Values
- should be comma-separated."],
- :ldapstackedattrs => ["puppetvar",
- "The LDAP attributes that should be stacked to arrays by adding
- the values in all hierarchy elements of the tree. Values
- should be comma-separated."],
- :ldapattrs => ["all",
- "The LDAP attributes to include when querying LDAP for nodes. All
- returned attributes are set as variables in the top-level scope.
- Multiple values should be comma-separated. The value 'all' returns
- all attributes."],
- :ldapparentattr => ["parentnode",
- "The attribute to use to define the parent node."],
- :ldapuser => ["",
- "The user to use to connect to LDAP. Must be specified as a
- full DN."],
- :ldappassword => ["", "The password to use to connect to LDAP."],
- :ldapbase => ["",
- "The search base for LDAP searches. It's impossible to provide
- a meaningful default here, although the LDAP libraries might
- have one already set. Generally, it should be the 'ou=Hosts'
- branch under your main directory."]
- )
-
- setdefaults(:master,
- :storeconfigs => {:default => false, :desc => "Whether to store each client's configuration. This
- requires ActiveRecord from Ruby on Rails.",
- :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
- :hook => proc do |value|
- require 'puppet/node'
- require 'puppet/node/facts'
- if value
- require 'puppet/rails'
- raise "StoreConfigs not supported without ActiveRecord 2.1 or higher" unless Puppet.features.rails?
- Puppet::Resource::Catalog.cache_class = :active_record unless Puppet.settings[:async_storeconfigs]
- Puppet::Node::Facts.cache_class = :active_record
- Puppet::Node.cache_class = :active_record
- end
- end
- }
- )
-
- # This doesn't actually work right now.
-
- setdefaults(
- :parser,
-
- :lexical => [false, "Whether to use lexical scoping (vs. dynamic)."],
- :templatedir => ["$vardir/templates",
- "Where Puppet looks for template files. Can be a list of colon-seperated
- directories."
- ]
- )
+ :ldap,
+ :ldapnodes => [false,
+ "Whether to search for node configurations in LDAP. See
+ http://projects.puppetlabs.com/projects/puppet/wiki/LDAP_Nodes for more information."],
+ :ldapssl => [false,
+ "Whether SSL should be used when searching for nodes.
+ Defaults to false because SSL usually requires certificates
+ to be set up on the client side."],
+ :ldaptls => [false,
+ "Whether TLS should be used when searching for nodes.
+ Defaults to false because TLS usually requires certificates
+ to be set up on the client side."],
+ :ldapserver => ["ldap",
+ "The LDAP server. Only used if ``ldapnodes`` is enabled."],
+ :ldapport => [389,
+ "The LDAP port. Only used if ``ldapnodes`` is enabled."],
+
+ :ldapstring => ["(&(objectclass=puppetClient)(cn=%s))",
+ "The search string used to find an LDAP node."],
+ :ldapclassattrs => ["puppetclass",
+ "The LDAP attributes to use to define Puppet classes. Values
+ should be comma-separated."],
+ :ldapstackedattrs => ["puppetvar",
+ "The LDAP attributes that should be stacked to arrays by adding
+ the values in all hierarchy elements of the tree. Values
+ should be comma-separated."],
+ :ldapattrs => ["all",
+ "The LDAP attributes to include when querying LDAP for nodes. All
+ returned attributes are set as variables in the top-level scope.
+ Multiple values should be comma-separated. The value 'all' returns
+ all attributes."],
+ :ldapparentattr => ["parentnode",
+ "The attribute to use to define the parent node."],
+ :ldapuser => ["",
+ "The user to use to connect to LDAP. Must be specified as a
+ full DN."],
+ :ldappassword => ["", "The password to use to connect to LDAP."],
+ :ldapbase => ["",
+ "The search base for LDAP searches. It's impossible to provide
+ a meaningful default here, although the LDAP libraries might
+ have one already set. Generally, it should be the 'ou=Hosts'
+ branch under your main directory."]
+ )
+
+ setdefaults(:master,
+ :storeconfigs => {:default => false, :desc => "Whether to store each client's configuration. This
+ requires ActiveRecord from Ruby on Rails.",
+ :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
+ :hook => proc do |value|
+ require 'puppet/node'
+ require 'puppet/node/facts'
+ if value
+ require 'puppet/rails'
+ raise "StoreConfigs not supported without ActiveRecord 2.1 or higher" unless Puppet.features.rails?
+ Puppet::Resource::Catalog.cache_class = :active_record unless Puppet.settings[:async_storeconfigs]
+ Puppet::Node::Facts.cache_class = :active_record
+ Puppet::Node.cache_class = :active_record
+ end
+ end
+ }
+ )
+
+ # This doesn't actually work right now.
+
+ setdefaults(
+ :parser,
+
+ :lexical => [false, "Whether to use lexical scoping (vs. dynamic)."],
+ :templatedir => ["$vardir/templates",
+ "Where Puppet looks for template files. Can be a list of colon-seperated
+ directories."
+ ]
+ )
end