Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2016.4.x
- Puppet >= 4.10.0 < 9.0.0
- , , , , , , SmartOS, , , DragonFly, OpenBSD
Start using this module
Add this module to your Puppetfile:
mod 'ssm-munin', '0.5.0'Learn more about managing modules with a PuppetfileDocumentation
Puppet module ssm-munin
Overview
Configure munin master, node and plugins.
Module Description
This module installs the munin master using the munin::master class, munin
node using the munin::node class, and can install, configure and manage munin
plugins using the munin::plugin defined type.
Munin nodes are automatically exported by the munin nodes, and collected on the munin master. (Requires puppetdb)
Setup
Add the Classify all nodes with munin::node, and classify at least one node
with munin::master. Use the munin::plugin defined type to control plugin
installation and configuration.
Setup requirements
Munin should be available in most distributions. For RedHat OS Family, you need to install the EPEL source.
The munin::master class does not manage any web server configuration. The
munin package installed might add some.
If your munin master is not on the same host as the munin node, you need to use
the allow parameter on the munin::node class.
Usage
On each node, include the munin::node class. This will install munin-node,
and export a node definition to the Puppet DB that puppet will collect on the
munin server.
Use the allow parameter to permit the munin server to connect. In this
example, 192.0.2.1 and 2001:db8::1 are the IP addresses of the munin
server.
class {'munin::node':
allow => ['192.0.2.1', '2001:db8::1'],
}
On the munin server, include the munin::master class. This will collect the
node definitions from Puppet DB and configure munin to connect to nodes to
collect metrics.
To define additional nodes to collect metrics from, use the
munin::master::node_definition defined resource type.
You can define a set of node definitions for the node_definitions parameter
to the munin::master class. Defined in Hiera with YAML it may look something
like this:
---
munin::master::node_definitions:
foo.example.com:
address: 192.0.2.12
bar.example.com:
address: 192.0.2.13
config:
- load.graph_future 30
- load.load.trend yes
- load.load.predict 86400,12
For advanced usage and additional examples, see the ssm-munin reference.
Reference
Table of Contents
Classes
Public Classes
munin::master: configure a munin mastermunin::node: configure a munin node
Private Classes
munin::master::collect: Helper class to collect the exported munin nodes.munin::node::export: Helper class to export the munin node.
Defined types
munin::master::node_definition: Configure information about a munin node on the munin mastermunin::plugin: Install and configure munin plugins
Classes
munin::master
The munin master will install munin, and collect all exported munin node definitions as files into /etc/munin/munin-conf.d/.
Examples
Basic usage
include munin::master
With TLS
class { 'munin::master':
tls => 'enabled',
tls_certificate => '/path/to/tls/certificate',
tls_private_key => '/path/to/tls/key',
}
Parameters
The following parameters are available in the munin::master class:
node_definitionshost_namegraph_strategyhtml_strategyconfig_rootfile_groupcollect_nodesdbdirhtmldirrundirlogdirpackage_nametlstls_certificatetls_private_keytls_verify_certificateextra_config
node_definitions
Data type: Hash
A hash of node definitions used by create_resources to make static node definitions.
host_name
Data type: Stdlib::Host
A host name for this munin master, matched with munin::node::mastername for collecting nodes. Defaults to $::fqdn
This is used for collecting munin::master::node_definition resources exported by nodes using the munin::node class.
graph_strategy
Data type: Enum['cgi', 'cron']
Controls if munin-graph graphs all services ('cron') or if graphing is done by munin-cgi-graph (which must configured seperatly)
html_strategy
Data type: Enum['cgi', 'cron']
Controls if munin-html will recreate all html pages every run interval ('cron') or if html pages are generated by munin-cgi-graph (which must configured seperatly). Defaults to "cgi".
config_root
Data type: Stdlib::Absolutepath
The root directory of the munin master configuration. Default: /etc/munin on most platforms.
file_group
Data type: String
The group name for configuration file permissions.
collect_nodes
Data type: Enum['enabled', 'disabled', 'mine', 'unclaimed']
Controls which nodes to collect.
'enabled' (default) makes the munin master collect all exported node_definitions.
'disabled' disables collection.
'mine' makes the munin master collect nodes matching the $host_name parameter.
'unclaimed' makes the munin master collect nodes not tagged with a host name.
This is used for collecting munin::master::node_definition resources exported by nodes using the munin::node class.
dbdir
Data type: Optional[Stdlib::Absolutepath]
Path to the munin dbdir, where munin stores everything.
htmldir
Data type: Optional[Stdlib::Absolutepath]
Path to where munin will generate HTML documents and graphs, used if graph_strategy is cron.
rundir
Data type: Optional[Stdlib::Absolutepath]
Path to directory munin uses for pid and lock files.
logdir
Data type: Optional[Stdlib::Absolutepath]
Path to directory munin uses for log files.
package_name
Data type: Variant[String,Array[String]]
The package name used for installing the munin master.
tls
Data type: Enum['enabled', 'disabled']
Controls the use of TLS globally for master to node communications. Default 'disabled'.
tls_certificate
Data type: Stdlib::Absolutepath
Path to a file containing a TLS certificate. No default. Required if tls is enabled.
tls_private_key
Data type: Stdlib::Absolutepath
Path to a file containing a TLS key. No default. Required if tls is enabled.
tls_verify_certificate
Data type: Enum['yes','no']
If TLS is used, verify the certificate. Defaults to 'yes'.
extra_config
Data type: Array[String]
Extra lines of config to put in munin.conf.
munin::node
Configure a munin node, and export configuration a munin master can collect.
List of IPv4 and IPv6 addresses and networks to allow remote munin masters to connect. By default, the munin node only permits connections from the local host.
Examples
Basic usage
include munin::node
Permitting a remote munin server to connect
class {'munin::node':
allow => ['192.0.2.1', '2001:db8::1'],
}
Parameters
The following parameters are available in the munin::node class:
allowconfig_rootnodeconfighost_namelog_dirlog_filelog_destinationpurge_configssyslog_facilityexport_nodemasterconfigmasternamemastergrouppluginsaddressbind_addressbind_portpackage_nameservice_nameservice_ensurefile_grouptimeoutplugin_share_dir
allow
Data type: Array
config_root
Data type: Stdlib::Absolutepath
Root directory for munin configuration.
nodeconfig
Data type: Array
List of lines to append to the munin node configuration.
host_name
Data type: Stdlib::Host
The host name munin node identifies as. Defaults to the $::fqdn fact.
log_dir
Data type: Stdlib::Absolutepath
The log directory for the munin node process. Defaults change according to osfamily, see munin::params::node for details.
log_file
Data type: String
File name for the log file, this is appended to "log_dir". Defaults to "munin-node.log".
log_destination
Data type: Enum['file','syslog']
Configures the log destination. Defaults to "file". If set to "syslog", the "logfile" and "log_dir" parameters are ignored, and the "syslog*" parameters are used if set.
purge_configs
Data type: Boolean
Removes all munin plugins and munin plugin configuration files not managed by Puppet. Defaults to false.
syslog_facility
Data type:
Optional[
Variant[
Integer[0,23],
Enum[
'kern','user','mail','daemon','auth','syslog','lpr','news','uucp',
'authpriv','ftp','cron','local0','local1','local2','local3','local4',
'local5','local6','local7'
]]]
Defaults to undef, which makes munin-node use the perl Net::Server module default of "daemon". Possible values are any syslog facility by number, or lowercase name.
export_node
Data type: Enum['enabled','disabled']
Causes the node config to be exported to puppetmaster. Defaults to "enabled".
This is used for exporting a munin::master::node_definition, to be collected by a node with munin::master.
masterconfig
Data type: Array
List of configuration lines to append to the munin master node definition.
This is used for exporting a munin::master::node_definition, to be collected by a node with munin::master.
mastername
Data type: Optional[Stdlib::Host]
The name of the munin master server which will collect the node definition.
This is used for exporting a munin::master::node_definition, to be collected by a node with munin::master.
mastergroup
Data type: Optional[String]
The group used on the master to construct a FQN for this node. Defaults to "", which in turn makes munin master use the domain. Note: changing this for a node also means you need to move rrd files on the master, or graph history will be lost.
This is used for exporting a munin::master::node_definition, to be collected by a node with munin::master.
plugins
Data type: Hash
A hash used by create_resources to create munin::plugin instances.
address
Data type: String
The address used in the munin master node definition.
bind_address
Data type: Variant[Enum['*'],Stdlib::Host]
The IP address the munin-node process listens on. Defaults: *.
bind_port
Data type: Stdlib::Port
The port number the munin-node process listens on.
package_name
Data type: String
The name of the munin node package to install.
service_name
Data type: String
The name of the munin node service.
service_ensure
Data type: Enum['running','stopped']
Used as parameter "ensure" for the munin node service.
file_group
Data type: String
The UNIX group name owning the configuration files, log files, etc.
timeout
Data type: Optional[Integer[0]]
Set the global plugin runtime timeout for this node. Defaults to undef, which lets munin-node use its default of 10 seconds.
Default value: $munin::params::node::timeout
plugin_share_dir
Data type: Stdlib::Absolutepath
Defined types
munin::master::node_definition
This will add configuration for the munin master to connect to a munin node, and ask for data from its munin plugins.
The resource title is used as the munin FQN, or "fully qualified name". This defines the node name and group. It is common to use the host's fully qualified domain name, where the domain name will be implicitly used as the node group.
Note: By default, using munin::node on a node will create a export a munin::master::node_definition to PuppetDB. The node classified with munin::master will collect all these exported instances.
Examples
A minimal, static node definition
munin::master::node_definition { 'foo.example.com':
address => '192.0.2.1',
}
A node definition with configuration
munin::master::node_definition { 'bar.example.com':
address => '192.0.2.2',
config => [ 'load.graph_future 30',
'load.load.trend yes',
'load.load.predict 86400,12' ],
}
Using a group in the FQN
munin::master::node_definition { 'webservers;web01.example.com':
address => '192.0.2.3',
}
Parameters
The following parameters are available in the munin::master::node_definition defined type:
address
Data type: String
The address of the munin node. A hostname, an IP address, or a ssh:// uri for munin-async node.
mastername
Data type: Optional[String]
The name of the munin master server which will collect the node definition. This is used when exporting and collecting munin::master::node_definition resources between hosts.
Default value: ''
config
Data type: Array[String]
An array of configuration lines to be added to the node definition.
Default value: []
fqn
Data type: String
The Munin FQN (Fully Qualified Name) of the node. This should be 'hostname', 'group;hostname', 'group;subgroup;hostname').
If a group is not set, munin will by default use the domain of the node as a group, if the node name is a fully qualified host name.
The title of the defined resource should be a munin FQN. See the "fqn" parameter
Default value: $title
munin::plugin
Install and configure munin plugins
Examples
Activate a packaged plugin
munin::plugin { 'cpu':
ensure => link,
}
Activate a packaged wildcard plugin
munin::plugin { 'foo_bar':
ensure => link,
target => 'foo_',
}
Install and activate a plugin
munin::plugin { 'gazonk':
ensure => present,
source => 'puppet:///modules/profile/foo/monitoring/gazonk',
}
A plugin with configuration
munin::plugin { 'bletch':
ensure => link,
config => ['env.database thing', 'user bletch'],
}
A plugin configuration file, but no plugin
munin::plugin { 'slapd':
config => ['env.rootdn cn=admin,dc=example,dc=org'],
config_label => 'slapd_*',
}
Parameters
The following parameters are available in the munin::plugin defined type:
ensure
Data type: Enum['','present','absent','link']
The ensure parameter is mandatory for installing a plugin.
With "ensure => link", a symlink is created in the munin plugin directory to where the plugin file is installed.
With "ensure => present", the plugin is installed in the munin plugin directory, and the "source" or "content" parameter is required to provide a source for the plugin.
With "ensure => absent", remove the munin plugin.
When ensure is not set, a plugin will not be installed, but extra plugin configuration can be managed with the config and config_label parameters.
Default value: ''
source
Data type: Optional[String]
When ensure => present, path to a source file
Default value: undef
content
Data type: Optional[String[1]]
When ensure => present, content of the plugin.
Default value: undef
checksum
Data type: Optional[String[1]]
Checksum type for the plugin file.
Default value: undef
checksum_value
Data type: Optional[String[1]]
Checksum value for the plugin file.
Default value: undef
target
Data type: String
When "ensure => link", Add a link in the plugin directory to the link target.
If target is an absolute path (starts with "/") it is used directly.
If target is a relative path, $munin::node::plugin_share_dir is prepended.
If target is unset, a link is created to a plugin with the same name in the packaged $munin::node:: plugin_share_dir directory. (In other words, activate a plugin that is already installed)
Default value: ''
config
Data type: Optional[Array[String]]
Lines for the munin plugin config.
Default value: []
config_label
Data type: String
Label for munin plugin config
Default value: $title
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.5.0] - 2024-09-16
Added
- Support Munin master on OpenBSD using 'munin-server' (Pull request #76)
Fixed
- Fix collect_nodes=mine and collect_nodes=unclaimed (Bug #70) (Pull request #78)
- Fix variable lookup method (Pull request #77)
0.4.0 - 2022-04-21
Fixed
- Fix hiera lookup invocation syntax (#75)
- Fix TLS configuration (#74)
- Fix Archlinux hiera data file name (#72)
Added
- Add parameters
content,checksumandchecksum_valueto themunin::plugindefine. (#73)
0.3.0 - 2020-06-29
Changed
- Replaced params classes with module hieradata.
- Replaced function based parameter validation with Puppet Types.
- Require
puppetlabs/stdlibversion4.25.0to support the types used. - Allow
puppetlabs/stdlib< 7.0.0. - Allow Puppet version
< 7.0.0. - Changed parameter
munin::plugin::configdefault value fromundefto[]. - Converted some templates from
erbtoepp.
Added
- New parameter
munin::master::node_definition::fqn. This is the namevar for the defined type, and will default to the value of the title. - Added support for osfamily RedHat version 8
- Added Puppet Strings documentation
Deprecated
- Module is no longer supported on Puppet versions before 4.10.0
- Module is no longer supported on osfamily RedHat version 5
- Module is no longer supported on osfamily RedHat version 6
- Module is no longer supported on Ubuntu 14.04
0.2.0 - 2019-03-03
Added
- Support for DragonFly BSD (#46)
- Support for FreeBSD as master (#46)
- Export additional nodes with
munin::node::export::node_definitionsifmunin::node::export_nodeis enabled. (#44) - New parameter
munin::master::package_name - New parameter
munin::master::file_group - New parameter
munin::master::config_root
Changed
- Support puppet 4 and newer. (#49)
- Scaffolding updated with PDK 1.9.0
Fixed
- Support for Arch Linux (#53)
- Fixed bug with parameter
munin::master::node_definitions
Deprecated
- Module is no longer tested with Puppet 3.x and 2.x
- Module is no longer tested on Ruby < 2.1.9
0.1.0 - 2015-12-12
- Added support for Archlinux (#40)
- Added acceptance tests
- Added CONTRIBUTING.md for how to contribute to the module (#41)
- Document all parameters in README.md
munin::node
- Two new parameters: bind_address and bind_port (#37)
- Bugfix: Rescue InvalidAddressError only if ruby is capable (#38)
contributors
Contributors to this release: David Hayes, Julien Pivotto, Stig Sandbeck Mathisen, Victor Engmark
0.0.10 - 2015-08-01
- Bugfix: Add missing dependency for the "munin-node" package when $munin::node::purge_configs is true. (#34)
Contributors to this release: Martin Meinhold
0.0.9 - 2015-07-29
-
Bugfix: The mastergroup, if used in the node's FQN (Fully Qualified Name), should no longer be empty on Puppet 4.0. (#27)
-
Bugfix: Using munin::master and munin::node with export and collect disabled should no longer trigger warnings about missing storeconfigs. (#30, #33)
munin::master
- Add FreeBSD support.
munin::node
-
New feature: Log to syslog with the "log_destination" and "syslog_facility" parameters. (#23, #24, #25)
-
New feature: Set the plugin runtime timeout with the "timeout" parameter. (#29, #32)
-
New feature: Purge unmanaged plugins and plugin configuration with the "purge_configs" parameter. (#28, #31)
0.0.8 - 2015-02-06
Support the future parser.
Contributors to this release: Rike-Benjamin Schuppner, Stig Sandbeck Mathisen
0.0.7 - 2014-12-05
This release adds support for DragonFly BSD, FreeBSD, OpenBSD.
Other changes listed below, per component.
Contributors to this release: Alex Hornung, Chris Roddy, Frank Groeneveld, Fredrik Thulin, Julien Pivotto, Martin Jackson, Sebastian Wiesinger, Stig Sandbeck Mathisen
munin::node
-
Add "host_name" parameter to override the host name of the munin node.
-
Add "file_group" parameter, used for configuration and log files.
-
Add "log_dir" parameter.
-
Improved handling of "allow" ACL parameter.
munin::master
-
Improved collection logic. Set "collect_nodes" to "mine" to collect nodes which are targeted for this master, or "unclaimed" to pick up nodes not aimed a specific master.
-
Add global tls_* parameters for connecting to nodes.
-
Add "dbdir", "htmldir", "rundir" parameters.
-
Add "extra_config" parameter, which takes an array of extra configuration lines for munin.conf.
munin::plugin
- Support absolute paths as target for a plugin.
0.0.6 - 2014-12-05
- Retracted, had a breaking bug on older (3.4.x) puppet versions.
0.0.5 - 2014-03-19
-
Support multiple masters with different nodes (Thanks: Cristian Gae)
-
Support older (1.4.6) munin versions (Thanks: Sergio Oliveira)
-
Update for compatibility with puppet 3.4 (Thanks: Harald Skoglund)
-
Easier configuration with more parameters. All parameters have trivial validation.
munin::master
- new parameter "config_root". Defaults should match supported operating systems.
munin::plugin
- new parameter "config_root". Defaults should match supported operating systems.
munin::node
-
new parameter "address". Default is $::fqdn. This will be used as the "address" when registering with the munin master.
-
new parameter "config_root". Defaults should match supported operating systems.
-
new parameter "package_name". Default should match supported operating systems.
-
new parameter "service_name". Default should match supported operating systems.
-
new parameter "service_ensure". Default is "". Possible values: "", "running" or "stopped".
munin::params
- new class
0.0.4 - 2013-08-13
Bugfix for the munin::plugin define.
-
Bugfix: Ensure that we can run tests on ruby 1.8.
-
Bugfix: No longer requires the class
Munin::Plugins, which does not exist in this module. (#3) -
The
ensureattribute no longer defaults to "link". If not set, a potentially existing plugin with the same name is not touched. -
Plugin and configuration directories are now configurable.
-
Improved rspec tests, which now actually match the documentation.
0.0.2 - 2013-06-31
A few pull requests
-
Bugfix: Install munin package before creating munin-conf.d directory (#1)
-
Make graph strategy configurable (#2)
-
Improve documentation
0.0.1 - 2013-06-02
Initial release
Dependencies
- puppetlabs/stdlib (>= 4.25.0 < 10.0.0)
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
