Version information
This version is compatible with:
- Puppet Enterprise 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
- Puppet >= 5.5.8 < 7.0.0
- , ,
Start using this module
Add this module to your Puppetfile:
mod 'katello-pulp', '8.2.0'
Learn more about managing modules with a PuppetfileDocumentation
Table of Contents
- Overview
- Usage - The basics of getting started with pulp
- Development - Guide for contributing to the module
Overview
This module can be used to install and manage several aspects of a pulp installation.
Pulp
Installation
The main pulp server installation. This includes the Apache configuration and the various daemons.
include pulp
Note that you need EPEL and a Pulp repository. For this we recommend stahnma/epel and use of the pulp::repo::upstream
class.
include epel
include pulp::repo::upstream
class { '::pulp':
require => Class['epel', 'pulp::repo::upstream'],
}
Plugins can be enabled as well:
class { '::pulp':
enable_docker => true,
enable_ostree => true,
enable_puppet => true,
enable_python => true,
enable_rpm => true,
}
By default a user admin will be created with a randomized password. This is configurable with the default_login
and default_password
parameters:
class { '::pulp':
default_login => 'user',
default_password => 'secret',
}
Security and external services
By default the MongoDB database is managed, but the manage_db
parameter can be used to change this behaviour.
Likewise the broker is managed by default, but manage_broker
is there. The implementation can be switched from the default qpid
to rabbitmq
.
There are various types that can be used to manage providers, assuming the correct plugin is installed.
For security certificates can be used. For example on the webservice:
class { '::pulp':
https_cert => '/path/to/public_key.pem',
https_key => '/path/to/private_key.pem',
https_chain => '/path/to/ca_chain.pem',
# Optionally you can change the accepted protocols
ssl_protocol => ['all', '-SSLv3', '-TLSv1', '-TLSv1.1'],
}
The connection to the MongoDB server can also be encrypted:
class { '::pulp':
db_ssl => true,
db_ssl_keyfile => '/path/to/private_key.pem',
db_ssl_certfile => '/path/to/public_key.pem',
db_ca_path => '/path/to/ca.pem',
}
Similarly the connection to the message broker can be encrypted:
class { '::pulp':
broker_url => 'qpid://user:password@broker.example.com:5671',
broker_use_ssl => true,
}
The email behaviour is configurable as well:
class { '::pulp':
email_host => 'localhost',
email_port => 25,
email_from => 'admin@example.com',
email_enabled => true,
}
In case you need to connect through a proxy you can specify the host, port, username and password. Note the proxy_url
parameter actually maps to the proxy_host
parameter in the configs.
class { '::pulp':
proxy_url => 'proxy.example.com',
proxy_port => 80,
proxy_username => 'user',
proxy_password => 'secret',
}
RPM provider
pulp_rpmrepo { 'scl_ruby22_el7':
checksum_type => 'sha256',
display_name => 'scl_ruby22_el7',
feed => 'https://www.softwarecollections.org/repos/rhscl/rh-ruby22/epel-7-x86_64/',
relative_url => 'scl_ruby22/7Server',
remove_missing => true,
retain_old_count => 1,
serve_http => true,
serve_https => true,
validate => true,
}
Puppet provider
pulp_puppetrepo { 'company_puppet_forge':
display_name => 'company_puppet_forge',
max_downloads => 10,
serve_http => true,
serve_https => true,
validate => true,
verify_feed_ssl => false,
}
ISO provider
pulp_isorepo { 'optymyze_thirdparty':
display_name => 'files_thirdparty',
feed => 'https://pulp-server.company.net/pulp/isos/files_thirdparty/',
max_downloads => 10,
remove_missing => false,
serve_http => true,
serve_https => true,
validate => true,
verify_feed_ssl => false,
}
Schedule provider
pulp_schedule { 'scl_ruby22_el7':
enabled => 'true',
schedule_time => '2000-W01-6T12:00Z/P1W',
}
# force schedules to be added after the repos are created
Pulp_rpmrepo <| |> -> Pulp_schedule <| |>
Pulp admin
The easiest is to use enable_admin
parameter. This ensures all plugins have their admin component installed as well as configuring the client to talk to the server using the default_login
and default_password
parameters.
class { 'pulp':
enable_admin => true,
}
On standalone machines it is also possible to only install the admin utility by directly using pulp::admin
:
include pulp::admin
In this case plugins need to be managed explicitly.
class { 'pulp::admin':
enable_docker => true,
enable_ostree => true,
enable_puppet => true,
enable_python => true,
enable_nodes => true
enable_rpm => true,
}
Pulp Child
Manage a pulp child installation.
include pulp::child
Pulp consumer
Manage pulp consumers.
Installation
include pulp::consumer
Register consumer
pulp_register { $facts['fqdn']:
user => 'admin',
pass => 'admin',
}
Pulp Crane
Manage pulp crane, a minimal docker registry.
You can either deploy it standalone:
include pulp::crane
Or as part of a full Pulp installation:
class { 'pulp':
enable_crane => true,
}
Role provider
pulp_role { 'repo_admin':
ensure => 'present',
users => ['alice', 'bob'],
permissions => {'/' => ['READ', 'CREATE'], '/v2/repositories/scl_ruby22_el7/' => ['READ', 'EXECUTE', 'UPDATE', 'CREATE', 'DELETE']},
}
Development
See the CONTRIBUTING guide for steps on how to make a change and get it accepted upstream.
Reference
Table of Contents
Classes
Public Classes
pulp
: Install and configure pulppulp::admin
: Install and configure Pulp adminpulp::consumer
: Install and configure Pulp consumerspulp::crane
: Install and configure Crane
Private Classes
pulp::admin::config
: Pulp Admin Configurationpulp::admin::install
: Pulp Admin Install Packagespulp::admin::login
: Ensure the user is logged in to execute commandspulp::admin::params
: Pulp Admin Paramspulp::apache
: configure apachepulp::broker
: Set up the brokerpulp::child
: Install and configure Pulp nodepulp::child::apache
: Define an Apache config for a Pulp node deploymentpulp::child::config
: Pulp Node Configurationpulp::child::install
: Pulp Node Install Packagespulp::child::service
: Pulp Node Servicepulp::config
: Pulp Master Configurationpulp::consumer::config
: Pulp Consumer Configurationpulp::consumer::install
: Pulp Consumer Install Packagespulp::consumer::params
: Pulp Consumer Paramspulp::consumer::service
: Pulp Consumer Service Packagespulp::crane::apache
: Sets up Apache for Cranepulp::crane::config
: Configure Cranepulp::crane::install
: Install Crane and dependenciespulp::database
: Set up the pulp databasepulp::install
: Pulp Installation Packagespulp::params
: Pulp Master Paramspulp::repo::upstream
: Create the yum repo definition for the upstream repositorypulp::service
: Pulp Master Servicepulp::squid
: The class to manage squid. This is used by pulp streamer.
Defined types
Public Defined types
pulp::apache::fragment
: Provides the ability to specify fragments for the ssl virtual host defined for a Pulp serverpulp::child::fragment
: provides the ability to specify fragments for the ssl virtual host defined for a pulp nodepulp::scheduled_repo
: A wrapper that creates a pulp_Xrepo resource with and an associated pulp_schedule resource
Private Defined types
pulp::apache_plugin
: Define a the Apache config for a plugin
Resource types
pulp_isorepo
: docpulp_puppetrepo
: docpulp_register
pulp_role
: docpulp_rpmbind
: Bind/unbind to an RPM repopulp_rpmrepo
: docpulp_schedule
: doc
Functions
Public Functions
Private Functions
pulp::daily_schedule
Data types
Pulp::Iso8601TimeInterval
: https://en.wikipedia.org/wiki/ISO_8601#Time_intervals TODO: Actually implement a regex.
Classes
pulp
Install and configure pulp
Parameters
The following parameters are available in the pulp
class:
version
crane_debug
crane_port
crane_data_dir
manage_repo
oauth_key
oauth_secret
oauth_enabled
messaging_url
messaging_transport
messaging_ca_cert
messaging_client_cert
messaging_version
broker_url
broker_use_ssl
tasks_login_method
ca_cert
ca_key
db_name
db_seeds
db_username
db_password
db_replica_set
db_ssl
db_ssl_keyfile
db_ssl_certfile
db_verify_ssl
db_ca_path
db_unsafe_autoretry
db_write_concern
server_name
key_url
ks_url
debugging_mode
log_level
log_type
server_working_directory
rsa_key
rsa_pub
https_cert
https_key
https_ca_cert
https_chain
ssl_username
consumers_crl
user_cert_expiration
default_login
default_password
repo_auth
consumer_cert_expiration
disabled_authenticators
additional_wsgi_scripts
reset_cache
ssl_verify_client
ssl_protocol
serial_number_path
consumer_history_lifetime
messaging_auth_enabled
messaging_topic_exchange
messaging_event_notifications_enabled
messaging_event_notification_url
email_host
email_port
email_from
email_enabled
manage_squid
lazy_redirect_host
lazy_redirect_port
lazy_redirect_path
lazy_https_retrieval
lazy_download_interval
lazy_download_concurrency
proxy_url
proxy_port
proxy_username
proxy_password
yum_max_speed
yum_gpg_sign_repo_metadata
yum_gpg_key_id
yum_gpg_cmd
yum_remove_old_repodata_count
num_workers
enable_admin
enable_katello
enable_crane
max_tasks_per_child
enable_rpm
enable_deb
enable_iso
enable_docker
enable_puppet
enable_python
enable_ostree
enable_parent_node
enable_http
http_port
https_port
manage_httpd
manage_plugins_httpd
manage_broker
manage_db
node_certificate
node_verify_ssl
node_server_ca_cert
node_oauth_effective_user
node_oauth_key
node_oauth_secret
max_keep_alive
wsgi_processes
wsgi_max_requests
puppet_wsgi_processes
migrate_db_timeout
show_conf_diff
enable_profiling
profiling_directory
ldap_url
ldap_bind_dn
ldap_bind_password
ldap_remote_user_attribute
worker_timeout
version
Data type: String
pulp package version, it's passed to ensure parameter of package resource can be set to specific version number, 'latest', 'present' etc.
Default value: $pulp::params::version
crane_debug
Data type: Boolean
Whether to enable crane debug logging
Default value: $pulp::params::crane_debug
crane_port
Data type: Integer[1, 65535]
Port for Crane to run on
Default value: $pulp::params::crane_port
crane_data_dir
Data type: Stdlib::Absolutepath
Directory containing docker v1/v2 artifacts published by pulp
Default value: $pulp::params::crane_data_dir
manage_repo
Data type: Boolean
Whether to manage the pulp repository
Default value: $pulp::params::manage_repo
oauth_key
Data type: String
Key to enable OAuth style authentication
Default value: $pulp::params::oauth_key
oauth_secret
Data type: String
Shared secret that can be used for OAuth style authentication
Default value: $pulp::params::oauth_secret
oauth_enabled
Data type: Boolean
Controls whether OAuth authentication is enabled
Default value: $pulp::params::oauth_enabled
messaging_url
Data type: String
the url used to contact the broker: ://:/ Supported values are 'tcp' or 'ssl' depending on if SSL should be used or not. The is optional, and is only applicable to RabbitMQ broker environments.
Default value: $pulp::params::messaging_url
messaging_transport
Data type: Enum['qpid', 'rabbitmq']
The type of broker you are connecting to.
Default value: $pulp::params::messaging_transport
messaging_ca_cert
Data type: Optional[Stdlib::Absolutepath]
Absolute path to PEM encoded CA certificate file, used by Pulp to validate the identity of the broker using SSL.
Default value: $pulp::params::messaging_ca_cert
messaging_client_cert
Data type: Optional[Stdlib::Absolutepath]
Absolute path to PEM encoded file containing both the private key and certificate Pulp should present to the broker to be authenticated by the broker.
Default value: $pulp::params::messaging_client_cert
messaging_version
Data type: String
Determines the version of packages related to the 'messaging transport protocol'.
Default value: $pulp::params::messaging_version
broker_url
Data type: String
A URL to a broker that Celery can use to queue tasks: qpid://:@:/
Default value: $pulp::params::broker_url
broker_use_ssl
Data type: Boolean
Whether to require SSL.
Default value: $pulp::params::broker_use_ssl
tasks_login_method
Data type: Optional[String]
Select the SASL login method used to connect to the broker. This should be left unset except in special cases such as SSL client certificate authentication.
Default value: $pulp::params::tasks_login_method
ca_cert
Data type: Stdlib::Absolutepath
Full path to the CA certificate that will be used to sign consumer and admin identification certificates
Default value: $pulp::params::ca_cert
ca_key
Data type: Stdlib::Absolutepath
Path to the private key for the above CA certificate
Default value: $pulp::params::ca_key
db_name
Data type: String
Name of the database to use
Default value: $pulp::params::db_name
db_seeds
Data type: String
Comma-separated list of hostname:port of database replica seed hosts
Default value: $pulp::params::db_seeds
db_username
Data type: Optional[String]
The user name to use for authenticating to the MongoDB server
Default value: $pulp::params::db_username
db_password
Data type: Optional[String]
The password to use for authenticating to the MongoDB server
Default value: $pulp::params::db_password
db_replica_set
Data type: Optional[String]
The name of replica set configured in MongoDB, if one is in use
Default value: $pulp::params::db_replica_set
db_ssl
Data type: Boolean
Whether to connect to the database server using SSL.
Default value: $pulp::params::db_ssl
db_ssl_keyfile
Data type: Optional[Stdlib::Absolutepath]
A path to the private keyfile used to identify the local connection against mongod. If included with the certfile then only the ssl_certfile is needed.
Default value: $pulp::params::db_ssl_keyfile
db_ssl_certfile
Data type: Optional[Stdlib::Absolutepath]
The certificate file used to identify the local connection against mongod.
Default value: $pulp::params::db_ssl_certfile
db_verify_ssl
Data type: Boolean
Specifies whether a certificate is required from the other side of the connection, and whether it will be validated if provided. If it is true, then the ca_certs parameter must point to a file of CA certificates used to validate the connection.
Default value: $pulp::params::db_verify_ssl
db_ca_path
Data type: Stdlib::Absolutepath
The ca_certs file contains a set of concatenated "certification authority" certificates, which are used to validate certificates passed from the other end of the connection.
Default value: $pulp::params::db_ca_path
db_unsafe_autoretry
Data type: Boolean
If true, retry commands to the database if there is a connection error. Warning: if set to true, this setting can result in duplicate records.
Default value: $pulp::params::db_unsafe_autoretry
db_write_concern
Data type: Optional[Enum['majority', 'all']]
Write concern of 'majority' or 'all'. When 'all' is specified, 'w' is set to number of seeds specified. For version of MongoDB < 2.6, replica_set must also be specified. Please note that 'all' will cause Pulp to halt if any of the replica set members is not available. 'majority' is used by default
Default value: $pulp::params::db_write_concern
server_name
Data type: String
Hostname the admin client and consumers should use when accessing the server
Default value: $pulp::params::server_name
key_url
Data type: String
Path within the URL to use for GPG keys
Default value: $pulp::params::key_url
ks_url
Data type: String
Path within the URL to use for kickstart trees
Default value: $pulp::params::ks_url
debugging_mode
Data type: Boolean
Whether to enable Pulp's debugging capabilities
Default value: $pulp::params::debugging_mode
log_level
Data type: Enum['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET']
The desired logging level.
Default value: $pulp::params::log_level
log_type
Data type: Enum['syslog', 'console']
The desired logging type
Default value: $pulp::params::log_type
server_working_directory
Data type: Optional[Stdlib::Absolutepath]
Path to where pulp workers can create working directories needed to complete tasks
Default value: $pulp::params::server_working_directory
rsa_key
Data type: Stdlib::Absolutepath
The RSA private key used for authentication.
Default value: $pulp::params::rsa_key
rsa_pub
Data type: Stdlib::Absolutepath
The RSA public key used for authentication.
Default value: $pulp::params::rsa_pub
https_cert
Data type: Optional[Stdlib::Absolutepath]
Apache public certificate for ssl
Default value: $pulp::params::https_cert
https_key
Data type: Optional[Stdlib::Absolutepath]
Apache private certificate for ssl
Default value: $pulp::params::https_key
https_ca_cert
Data type: Optional[Stdlib::Absolutepath]
Apache CA certificate for client authentication. Defaults to $ca_cert
Default value: $pulp::params::https_ca_cert
https_chain
Data type: Optional[Stdlib::Absolutepath]
apache chain file for ssl
Default value: $pulp::params::https_chain
ssl_username
Data type: Variant[String, Boolean]
Value to use for SSLUsername directive in apache vhost. Defaults to SSL_CLIENT_S_DN_CN. Set an empty string or false to unset directive.
Default value: $pulp::params::ssl_username
consumers_crl
Data type: Optional[Stdlib::Absolutepath]
Certificate revocation list for consumers which are no valid (have had their client certs revoked)
Default value: $pulp::params::consumers_crl
user_cert_expiration
Data type: Integer
Number of days a user certificate is valid
Default value: $pulp::params::user_cert_expiration
default_login
Data type: String
Default admin username of the Pulp server; this user will be the first time the server is started
Default value: $pulp::params::default_login
default_password
Data type: String
Default password for admin when it is first created; this should be changed once the server is operational
Default value: $pulp::params::default_password
repo_auth
Data type: Boolean
Whether to determine whether repos managed by pulp will require authentication.
Default value: $pulp::params::repo_auth
consumer_cert_expiration
Data type: Integer
Number of days a consumer certificate is valid
Default value: $pulp::params::consumer_cert_expiration
disabled_authenticators
Data type: Array[String]
List of repo authenticators to disable.
Default value: $pulp::params::disabled_authenticators
additional_wsgi_scripts
Data type: Hash[String, String]
Hash of additional paths and WSGI script locations for Pulp vhost
Default value: $pulp::params::additional_wsgi_scripts
reset_cache
Data type: Boolean
Whether to force a cache flush. Not recommend in a regular puppet environment.
Default value: $pulp::params::reset_cache
ssl_verify_client
Data type: Enum['none', 'optional', 'require', 'optional_no_ca']
Enforce use of SSL authentication for yum repos access
Default value: $pulp::params::ssl_verify_client
ssl_protocol
Data type: Optional[Variant[Array[String], String]]
Versions of the SSL/TLS protocol will be accepted in new connections
Default value: $pulp::params::ssl_protocol
serial_number_path
Data type: Stdlib::Absolutepath
Path to the serial number file
Default value: $pulp::params::serial_number_path
consumer_history_lifetime
Data type: Integer[-1]
number of days to store consumer events; events older than this will be purged; set to -1 to disable
Default value: $pulp::params::consumer_history_lifetime
messaging_auth_enabled
Data type: Boolean
Whether to enable message authentication.
Default value: $pulp::params::messaging_auth_enabled
messaging_topic_exchange
Data type: String
The name of the exchange to use. The exchange must be a topic exchange. The default 'amq.topic' is a default exchange that is guaranteed to exist on a Qpid broker.
Default value: $pulp::params::messaging_topic_exchange
messaging_event_notifications_enabled
Data type: Boolean
Whether to enable Pulp event notfications on the message bus.
Default value: $pulp::params::messaging_event_notifications_enabled
messaging_event_notification_url
Data type: Optional[String]
The AMQP URL for event notifications.
Default value: $pulp::params::messaging_event_notification_url
email_host
Data type: String
Hostname of the MTA pulp should relay through
Default value: $pulp::params::email_host
email_port
Data type: Integer[1, 65535]
Port of the MTA relay
Default value: $pulp::params::email_port
email_from
Data type: String
The "From" address of each email the system sends
Default value: $pulp::params::email_from
email_enabled
Data type: Boolean
Whether emails will be sent
Default value: $pulp::params::email_enabled
manage_squid
Data type: Boolean
Whether the Squid configuration is managed. This is used by Pulp Streamer. Requires the squid module.
Default value: $pulp::params::manage_squid
lazy_redirect_host
Data type: Optional[String]
The host FQDN or IP to which requests are redirected.
Default value: $pulp::params::lazy_redirect_host
lazy_redirect_port
Data type: Optional[Integer[1, 65535]]
The TCP port to which requests are redirected
Default value: $pulp::params::lazy_redirect_port
lazy_redirect_path
Data type: Optional[String]
The base path to which requests are redirected
Default value: $pulp::params::lazy_redirect_path
lazy_https_retrieval
Data type: Boolean
Controls whether Pulp uses HTTPS or HTTP to retrieve content from the streamer. WARNING: Setting this to 'false' is not safe if you wish to use Pulp to provide repository entitlement enforcement. It is strongly recommended to keep this set to 'true' and use certificates that are signed by a trusted authority on the web server that serves as the streamer reverse proxy.
Default value: $pulp::params::lazy_https_retrieval
lazy_download_interval
Data type: Integer[0]
The interval in minutes between checks for content cached by the Squid proxy.
Default value: $pulp::params::lazy_download_interval
lazy_download_concurrency
Data type: Integer[0]
The number of downloads to perform concurrently when downloading content from the Squid cache.
Default value: $pulp::params::lazy_download_concurrency
proxy_url
Data type: Optional[String]
URL of the proxy server
Default value: $pulp::params::proxy_url
proxy_port
Data type: Optional[Integer[1, 65535]]
Port the proxy is running on
Default value: $pulp::params::proxy_port
proxy_username
Data type: Optional[String]
Proxy username for authentication
Default value: $pulp::params::proxy_username
proxy_password
Data type: Optional[String]
Proxy password for authentication
Default value: $pulp::params::proxy_password
yum_max_speed
Data type: Optional[String]
The maximum download speed for RPM & ISO Pulp tasks, such as a sync. (e.g. "4 kb" or "1 Gb")
Default value: $pulp::params::yum_max_speed
yum_gpg_sign_repo_metadata
Data type: Boolean
Whether yum repo metadata GPG signing will be enabled
Default value: $pulp::params::yum_gpg_sign_repo_metadata
yum_gpg_key_id
Data type: Optional[String]
GPG Key ID to use for yum repo metadata signing
Default value: $pulp::params::yum_gpg_key_id
yum_gpg_cmd
Data type: Optional[String]
Custom GPG command/script to use for yum repo metadata signing
Default value: $pulp::params::yum_gpg_cmd
yum_remove_old_repodata_count
Data type: Integer[0,65535]
Number of older yum repodata files to keep around after each publish
Default value: $pulp::params::yum_remove_old_repodata_count
num_workers
Data type: Integer[0]
Number of Pulp workers to use.
Default value: $pulp::params::num_workers
enable_admin
Data type: Boolean
Whether to install and configure the admin command
Default value: $pulp::params::enable_admin
enable_katello
Data type: Boolean
Whether to enable pulp katello plugin.
Default value: $pulp::params::enable_katello
enable_crane
Data type: Boolean
Whether to enable crane docker repository
Default value: $pulp::params::enable_crane
max_tasks_per_child
Data type: Optional[Integer[0]]
Number of tasks after which the worker is restarted and the memory it allocated is returned to the system
Default value: $pulp::params::max_tasks_per_child
enable_rpm
Data type: Boolean
Whether to enable rpm plugin.
Default value: $pulp::params::enable_rpm
enable_deb
Data type: Boolean
Whether to enable deb plugin.
Default value: $pulp::params::enable_deb
enable_iso
Data type: Boolean
Whether to enable iso plugin.
Default value: $pulp::params::enable_iso
enable_docker
Data type: Boolean
Whether to enable docker plugin.
Default value: $pulp::params::enable_docker
enable_puppet
Data type: Boolean
Whether to enable puppet plugin.
Default value: $pulp::params::enable_puppet
enable_python
Data type: Boolean
Whether to enable python plugin.
Default value: $pulp::params::enable_python
enable_ostree
Data type: Boolean
Whether to enable ostree plugin.
Default value: $pulp::params::enable_ostree
enable_parent_node
Data type: Boolean
Whether to enable pulp parent nodes.
Default value: $pulp::params::enable_parent_node
enable_http
Data type: Boolean
Whether to enable http access to deb/rpm repos.
Default value: $pulp::params::enable_http
http_port
Data type: Integer[1, 65535]
HTTP port Apache will listen
Default value: $pulp::params::http_port
https_port
Data type: Integer[1, 65535]
HTTPS port Apache will listen
Default value: $pulp::params::https_port
manage_httpd
Data type: Boolean
Whether to install and configure the httpd server.
Default value: $pulp::params::manage_httpd
manage_plugins_httpd
Data type: Boolean
Whether to install the enabled pulp plugins apache configs even if $manage_httpd is false.
Default value: $pulp::params::manage_plugins_httpd
manage_broker
Data type: Boolean
Whether install and configure the qpid or rabbitmq broker.
Default value: $pulp::params::manage_broker
manage_db
Data type: Boolean
Boolean to install and configure the mongodb.
Default value: $pulp::params::manage_db
node_certificate
Data type: Stdlib::Absolutepath
The absolute path to the node SSL certificate
Default value: $pulp::params::node_certificate
node_verify_ssl
Data type: Boolean
Whether to verify node SSL
Default value: $pulp::params::node_verify_ssl
node_server_ca_cert
Data type: Stdlib::Absolutepath
Server cert for pulp node
Default value: $pulp::params::node_server_ca_cert
node_oauth_effective_user
Data type: String
Effective user for node OAuth
Default value: $pulp::params::node_oauth_effective_user
node_oauth_key
Data type: String
The oauth key used to authenticate to the parent node
Default value: $pulp::params::node_oauth_key
node_oauth_secret
Data type: String
The oauth secret used to authenticate to the parent node
Default value: $pulp::params::node_oauth_secret
max_keep_alive
Data type: Integer[0]
Configuration value for apache MaxKeepAliveRequests
Default value: $pulp::params::max_keep_alive
wsgi_processes
Data type: Integer[1]
Number of WSGI processes to spawn for pulp itself
Default value: $pulp::params::wsgi_processes
wsgi_max_requests
Data type: Integer[0]
Maximum number of requests for each wsgi worker to process before shutting down and restarting, useful to combat memory leaks.
Default value: $pulp::params::wsgi_max_requests
puppet_wsgi_processes
Data type: Integer[0]
Number of WSGI processes to spawn for the puppet webapp
Default value: $pulp::params::puppet_wsgi_processes
migrate_db_timeout
Data type: Integer[0]
Change the timeout for pulp-manage-db
Default value: $pulp::params::migrate_db_timeout
show_conf_diff
Data type: Boolean
Allow showing diff for changes in server.conf and importer.json. Warning: may display and log passwords contained in these files.
Default value: $pulp::params::show_conf_diff
enable_profiling
Data type: Boolean
Turns on cProfiling of tasks in Pulp
Default value: $pulp::params::enable_profiling
profiling_directory
Data type: Stdlib::Absolutepath
Directory to store task profiling data in
Default value: $pulp::params::profiling_directory
ldap_url
Data type: Optional[String]
URL to use for LDAP authentication. Defaults to undef (internal authentication is used)
Default value: $pulp::params::ldap_url
ldap_bind_dn
Data type: Optional[String]
LDAP Bind DN
Default value: $pulp::params::ldap_bind_dn
ldap_bind_password
Data type: Optional[String]
LDAP Password
Default value: $pulp::params::ldap_bind_password
ldap_remote_user_attribute
Data type: String
LDAP Remote User Attribute. Defaults to 'sAMAccountName'
Default value: $pulp::params::ldap_remote_user_attribute
worker_timeout
Data type: Integer[0]
The amount of time (in seconds) before considering a worker as missing. If Pulp's mongo database has slow I/O, then setting a higher number may resolve issues where workers are going missing incorrectly. Defaults to 30.
Default value: $pulp::params::worker_timeout
pulp::admin
Install and configure Pulp admin
Parameters
The following parameters are available in the pulp::admin
class:
version
host
port
api_prefix
verify_ssl
ca_path
upload_chunk_size
role
extensions_dir
id_cert_dir
id_cert_filename
upload_working_dir
log_filename
call_log_filename
poll_frequency_in_seconds
enable_color
wrap_to_terminal
wrap_width
enable_puppet
enable_deb
enable_docker
enable_nodes
enable_python
enable_ostree
enable_rpm
enable_iso
puppet_upload_working_dir
puppet_upload_chunk_size
login_method
username
password
version
Data type: String
Pulp admin package version, it's passed to ensure parameter of package resource can be set to specific version number, 'latest', 'present' etc.
Default value: $pulp::admin::params::version
host
Data type: String
The pulp server hostname
Default value: $pulp::admin::params::host
port
Data type: Integer[1, 65535]
The port providing the RESTful API
Default value: $pulp::admin::params::port
api_prefix
Data type: String
The REST API prefix.
Default value: $pulp::admin::params::api_prefix
verify_ssl
Data type: Boolean
Set this to False to configure the client not to verify that the server's SSL cert is signed by a trusted authority
Default value: $pulp::admin::params::verify_ssl
ca_path
Data type: Stdlib::Absolutepath
This is a path to a file of concatenated trusted CA certificates, or to a directory of trusted CA certificates (with openssl-style hashed symlinks, one certificate per file).
Default value: $pulp::admin::params::ca_path
upload_chunk_size
Data type: Integer[0]
upload_chunk_size
Default value: $pulp::admin::params::upload_chunk_size
role
Data type: String
The client role.
Default value: $pulp::admin::params::role
extensions_dir
Data type: Stdlib::Absolutepath
The location of admin client extensions.
Default value: $pulp::admin::params::extensions_dir
id_cert_dir
Data type: String
The location of the directory where the Pulp user ID certificate is stored.
Default value: $pulp::admin::params::id_cert_dir
id_cert_filename
Data type: String
The name of the file containing the PEM encoded client private key and X.509 certificate. This file is downloaded and stored here during login.
Default value: $pulp::admin::params::id_cert_filename
upload_working_dir
Data type: String
Directory where status files for in progress uploads will be stored
Default value: $pulp::admin::params::upload_working_dir
log_filename
Data type: String
The location of the admin client log file.
Default value: $pulp::admin::params::log_filename
call_log_filename
Data type: String
If present, the raw REST responses will be logged to the given file.
Default value: $pulp::admin::params::call_log_filename
poll_frequency_in_seconds
Data type: Integer[0]
Number of seconds between requests for any operation that repeatedly polls the server for data.
Default value: $pulp::admin::params::poll_frequency_in_seconds
enable_color
Data type: Boolean
Set this to false to disable all color escape sequences
Default value: $pulp::admin::params::enable_color
wrap_to_terminal
Data type: Boolean
If wrap_to_terminal is true, any text wrapping will use the current width of the terminal. If false, the value in wrap_width is used.
Default value: $pulp::admin::params::wrap_to_terminal
wrap_width
Data type: Integer[0]
The number of characters written before wrapping to the next line.
Default value: $pulp::admin::params::wrap_width
enable_puppet
Data type: Boolean
Install puppet extension. Defaults to false.
Default value: $pulp::admin::params::enable_puppet
enable_deb
Data type: Boolean
Install deb extension. Defaults to false.
Default value: $pulp::admin::params::enable_deb
enable_docker
Data type: Boolean
Install docker extension. Defaults to false.
Default value: $pulp::admin::params::enable_docker
enable_nodes
Data type: Boolean
Install nodes extension. Defaults to false.
Default value: $pulp::admin::params::enable_nodes
enable_python
Data type: Boolean
Install python extension. Defaults to false.
Default value: $pulp::admin::params::enable_python
enable_ostree
Data type: Boolean
Install ostree extension. Defaults to false.
Default value: $pulp::admin::params::enable_ostree
enable_rpm
Data type: Boolean
Install rpm extension. Defaults to true.
Default value: $pulp::admin::params::enable_rpm
enable_iso
Data type: Boolean
Install ISO extension. Defaults to true.
Default value: $pulp::admin::params::enable_iso
puppet_upload_working_dir
Data type: String
Directory where status files for in progress uploads will be stored
Default value: $pulp::admin::params::puppet_upload_working_dir
puppet_upload_chunk_size
Data type: Integer[0]
Maximum amount of data (in bytes) sent for an upload in a single request
Default value: $pulp::admin::params::puppet_upload_chunk_size
login_method
Data type: Enum['none', 'file', 'login']
The method to ensure root can use pulp-admin. Choose none to disable this behaviour.
Default value: $pulp::admin::params::login_method
username
Data type: String
The username to login with
Default value: $pulp::admin::params::username
password
Data type: Optional[String]
The password to login with. If left undefined then no login will be performed.
Default value: $pulp::admin::params::username
pulp::consumer
Install and configure Pulp consumers
Parameters
The following parameters are available in the pulp::consumer
class:
ca_path
version
enable_puppet
enable_nodes
enable_rpm
host
port
api_prefix
verify_ssl
rsa_server_pub
rsa_key
rsa_pub
role
extensions_dir
repo_file
mirror_list_dir
gpg_keys_dir
cert_dir
id_cert_dir
id_cert_filename
reboot_permit
reboot_delay
logging_filename
logging_call_log_filename
poll_frequency_in_seconds
enable_color
wrap_to_terminal
wrap_width
messaging_scheme
messaging_host
messaging_port
messaging_transport
messaging_vhost
messaging_version
messaging_cacert
messaging_clientcert
profile_minutes
package_profile_enabled
package_profile_verbose
ca_path
Data type: Stdlib::Absolutepath
Path to use for the CA
Default value: $pulp::consumer::params::ca_path
version
Data type: String
pulp admin package version, it's passed to ensure parameter of package resource can be set to specific version number, 'latest', 'present' etc.
Default value: $pulp::consumer::params::version
enable_puppet
Data type: Boolean
Install puppet extension
Default value: $pulp::consumer::params::enable_puppet
enable_nodes
Data type: Boolean
Install nodes extension
Default value: $pulp::consumer::params::enable_nodes
enable_rpm
Data type: Boolean
Install rpm extension
Default value: $pulp::consumer::params::enable_rpm
host
Data type: String
The pulp server hostname
Default value: $pulp::consumer::params::host
port
Data type: Integer
The port providing the RESTful API
Default value: $pulp::consumer::params::port
api_prefix
Data type: String
The REST API prefix.
Default value: $pulp::consumer::params::api_prefix
verify_ssl
Data type: Boolean
Set this to False to configure the client not to verify that the server's SSL cert is signed by a trusted authority
Default value: $pulp::consumer::params::verify_ssl
rsa_server_pub
Data type: Stdlib::Absolutepath
The pulp server public key used for authentication.
Default value: $pulp::consumer::params::rsa_server_pub
rsa_key
Data type: Stdlib::Absolutepath
The RSA private key used for authentication.
Default value: $pulp::consumer::params::rsa_key
rsa_pub
Data type: Stdlib::Absolutepath
The RSA public key used for authentication.
Default value: $pulp::consumer::params::rsa_pub
role
Data type: String
The client role.
Default value: $pulp::consumer::params::role
extensions_dir
Data type: Stdlib::Absolutepath
The location of consumer client extensions.
Default value: $pulp::consumer::params::extensions_dir
repo_file
Data type: Stdlib::Absolutepath
The location of the YUM repository file managed by pulp.
Default value: $pulp::consumer::params::repo_file
mirror_list_dir
Data type: Stdlib::Absolutepath
The location of the directory containing YUM mirror list files that are managed by Pulp.
Default value: $pulp::consumer::params::mirror_list_dir
gpg_keys_dir
Data type: Stdlib::Absolutepath
The location of downloaded GPG keys stored by Pulp. The path to the keys stored here are referenced by Pulp's YUM repository file.
Default value: $pulp::consumer::params::gpg_keys_dir
cert_dir
Data type: Stdlib::Absolutepath
The location of downloaded X.509 certificates stored by Pulp. The path to the certificates stored here are referenced by Pulp's YUM repository file.
Default value: $pulp::consumer::params::cert_dir
id_cert_dir
Data type: Stdlib::Absolutepath
The location of the directory where the Pulp consumer ID certificate is stored.
Default value: $pulp::consumer::params::id_cert_dir
id_cert_filename
Data type: String
The name of the file containing the PEM encoded consumer private key and X.509 certificate. This file is downloaded and stored here during registration.
Default value: $pulp::consumer::params::id_cert_filename
reboot_permit
Data type: Boolean
Permit reboots after package installs if requested.
Default value: $pulp::consumer::params::reboot_permit
reboot_delay
Data type: Integer
The reboot delay (minutes).
Default value: $pulp::consumer::params::reboot_delay
logging_filename
Data type: String
The location of the consumer client log file.
Default value: $pulp::consumer::params::logging_filename
logging_call_log_filename
Data type: String
If present, the raw REST responses will be logged to the given file.
Default value: $pulp::consumer::params::logging_call_log_filename
poll_frequency_in_seconds
Data type: Integer
Number of seconds between requests for any operation that repeatedly polls the server for data.
Default value: $pulp::consumer::params::poll_frequency_in_seconds
enable_color
Data type: Boolean
Set this to false to disable all color escape sequences
Default value: $pulp::consumer::params::enable_color
wrap_to_terminal
Data type: Boolean
If wrap_to_terminal is true, any text wrapping will use the current width of the terminal. If false, the value in wrap_width is used.
Default value: $pulp::consumer::params::wrap_to_terminal
wrap_width
Data type: Integer
The number of characters written before wrapping to the next line.
Default value: $pulp::consumer::params::wrap_width
messaging_scheme
Data type: String
The broker URL scheme. Either 'tcp' or 'ssl' can be used. The default is 'tcp'.
Default value: $pulp::consumer::params::messaging_scheme
messaging_host
Data type: String
The broker host (default: host defined in [server]).
Default value: $pulp::consumer::params::messaging_host
messaging_port
Data type: Integer[0, 65535]
The broker port number. The default is 5672.
Default value: $pulp::consumer::params::messaging_port
messaging_transport
Data type: String
The AMQP transport name. Valid options are 'qpid' or 'rabbitmq'. The default is 'qpid'.
Default value: $pulp::consumer::params::messaging_transport
messaging_vhost
Data type: Optional[String]
The (optional) broker vhost. This is only valid when using 'rabbitmq' as the messaging_transport.
Default value: $pulp::consumer::params::messaging_vhost
messaging_version
Data type: String
Determines the version of packages related to the 'messaging transport protocol'.
Default value: $pulp::consumer::params::messaging_version
messaging_cacert
Data type: Optional[Stdlib::Absolutepath]
The (optional) absolute path to a PEM encoded CA certificate to validate the identity of the broker.
Default value: $pulp::consumer::params::messaging_cacert
messaging_clientcert
Data type: Optional[Stdlib::Absolutepath]
The optional absolute path to PEM encoded key & certificate used to authenticate to the broker with. The id_cert_dir and id_cert_filename are used if this is not defined.
Default value: $pulp::consumer::params::messaging_clientcert
profile_minutes
Data type: Integer[0]
The interval in minutes for reporting the installed content profiles.
Default value: $pulp::consumer::params::profile_minutes
package_profile_enabled
Data type: Integer
Updates package profile information for a registered consumer on pulp server
Default value: $pulp::consumer::params::package_profile_enabled
package_profile_verbose
Data type: Integer
Set logging level
Default value: $pulp::consumer::params::package_profile_verbose
pulp::crane
Install and configure Crane
Parameters
The following parameters are available in the pulp::crane
class:
debug
Data type: Boolean
Enable debug logging
Default value: false
server_name
Data type: Stdlib::Fqdn
The server name on the vhost
Default value: $facts['networking']['fqdn']
key
Data type: Stdlib::Absolutepath
Path to the SSL key for https
cert
Data type: Stdlib::Absolutepath
Path to the SSL certificate for https
ca_cert
Data type: Stdlib::Absolutepath
Path to the SSL CA cert for https
ssl_chain
Data type: Optional[Stdlib::Absolutepath]
Path to the SSL chain file for https
Default value: undef
port
Data type: Stdlib::Port
Port for Crane to run on
Default value: 5000
data_dir
Data type: Stdlib::Absolutepath
Directory containing docker v1/v2 artifacts published by pulp
Default value: '/var/lib/crane/metadata'
data_dir_polling_interval
Data type: Integer[0]
The number of seconds between checks for updates to metadata files in the data_dir
Default value: 60
ssl_protocol
Data type: Optional[Variant[Array[String], String]]
SSLProtocol configuration to use
Default value: undef
Defined types
pulp::apache::fragment
Provides the ability to specify fragments for the ssl virtual host defined for a Pulp server
Parameters
The following parameters are available in the pulp::apache::fragment
defined type:
ssl_content
Data type: String
Content of the ssl virtual host fragment
order
Data type: Integer
The order in which to load the concat fragments
Default value: 15
pulp::child::fragment
provides the ability to specify fragments for the ssl virtual host defined for a pulp node
Parameters
The following parameters are available in the pulp::child::fragment
defined type:
ssl_content
Data type: Any
Content of the ssl virtual host fragment
Default value: undef
order
Data type: Any
The relative order compared to other fragments
Default value: 15
pulp::scheduled_repo
A wrapper that creates a pulp_Xrepo resource with and an associated pulp_schedule resource
Examples
Basic usage with default rpm
repo_type
and 'random' daily schedule
pulp::scheduled_repo { 'centos-7':
repo_config => {
'display_name' => 'CentOS 7 Base Repo',
'feed' => 'https://www.mirrorservice.org/sites/mirror.centos.org/7/os/x86_64',
},
}
Parameters
The following parameters are available in the pulp::scheduled_repo
defined type:
repo_type
Data type: Enum['rpm','puppet','iso']
Determines whether a pulp_rpmrepo
, pulp_puppetrepo
or pulp_isorepo
resource is created.
Default value: 'rpm'
repo_config
Data type: Hash
Defines a hash of parameters to pass to the pulp_Xrepo
resource.
Default value: {}
repo_schedule
Data type: Variant[Enum['daily'],Pulp::Iso8601TimeInterval]
An iso8601 schedule string or the special value 'daily'. Defaults to 'daily' which creates a pulp_schedule
with a pseudo-random daily schedule_time
.
Default value: 'daily'
Resource types
pulp_isorepo
doc
Properties
The following properties are available in the pulp_isorepo
type.
description
user-readable description (may contain i18n characters)
display_name
user-readable display name (may contain i18n characters)
ensure
Valid values: present
, absent
Create/Remove pulp iso repo.
Default value: present
feed
URL of the external source repository to sync
feed_ca_cert
full path to the CA certificate that should be used to verify the external repo server's SSL certificate
feed_cert
full path to the certificate to use for authorization when accessing the external feed
feed_key
full path to the private key for feed_cert
max_downloads
Valid values: /^\d+$/
maximum number of downloads that will run concurrently
max_speed
Valid values: /^\d+$/
maximum bandwidth used per download thread, in bytes/sec, when synchronizing the repo
note
adds/updates/deletes notes to programmatically identify the resource
proxy_host
proxy server url to use
proxy_pass
password used to authenticate with the proxy server
proxy_port
Valid values: /^\d+$/
port on the proxy server to make requests
proxy_user
username used to authenticate with the proxy server
remove_missing
if "true", units that were previously in the external feed but are no longer found will be removed from the repository
Default value: false
serve_http
if "true", the repository will be served over HTTP
Default value: false
serve_https
if "true", the repository will be served over HTTPS
Default value: true
validate
if "true", the size and checksum of each synchronized file will be verified against the repo metadata
Default value: false
verify_feed_ssl
if "true", the feed\'s SSL certificate will be verified against the feed_ca_cert
Default value: false
Parameters
The following parameters are available in the pulp_isorepo
type.
conf_file
path to pulp-admin's config file. Defaults to /etc/pulp/admin/admin.conf
Default value: /etc/pulp/admin/admin.conf
name
namevar
repo-id: uniquely identifies the rpm repo
provider
The specific backend to use for this pulp_isorepo
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
pulp_puppetrepo
doc
Properties
The following properties are available in the pulp_puppetrepo
type.
description
user-readable description (may contain i18n characters)
display_name
user-readable display name (may contain i18n characters)
ensure
Valid values: present
, absent
Create/Remove pulp rpm repo.
Default value: present
feed
URL of the external source repository to sync
feed_ca_cert
Full path to the CA certificate that should be used to verify the external repo server's SSL certificate
feed_cert
full path to the certificate to use for authorization when accessing the external feed
feed_key
full path to the private key for feed_cert
max_downloads
Valid values: /^\d+$/
maximum number of downloads that will run concurrently
max_speed
Valid values: /^\d+$/
maximum bandwidth used per download thread, in bytes/sec, when synchronizing the repo
note
adds/updates/deletes notes to programmatically identify the resource
proxy_host
proxy server url to use
proxy_pass
password used to authenticate with the proxy server
proxy_port
Valid values: /^\d+$/
port on the proxy server to make requests
proxy_user
username used to authenticate with the proxy server
queries
comma-separated list of queries to issue against the feed's modules.json file to scope which modules are imported. ignored when feed is static files.
serve_http
if "true", the repository will be served over HTTP
Default value: false
serve_https
if "true", the repository will be served over HTTPS
Default value: true
validate
Whether the size and checksum of each synchronized file will be verified against the repo metadata
Default value: false
verify_feed_ssl
Whether the feed\'s SSL certificate will be verified against the feed_ca_cert
Default value: false
Parameters
The following parameters are available in the pulp_puppetrepo
type.
conf_file
path to pulp-admin's config file. Defaults to /etc/pulp/admin/admin.conf
Default value: /etc/pulp/admin/admin.conf
name
namevar
repo-id: uniquely identifies the rpm repo
provider
The specific backend to use for this pulp_puppetrepo
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
pulp_register
The pulp_register type.
Properties
The following properties are available in the pulp_register
type.
description
user-readable description for the consumer
Default value: false
display_name
user-readable display name for the consumer
Default value: false
ensure
Valid values: present
, absent
Register/unregister a pulp consumer.
Default value: present
note
note
Default value: false
Parameters
The following parameters are available in the pulp_register
type.
keys
exchange public keys with the server
Default value: false
name
namevar
uniquely identifies the consumer; only alphanumeric, ., -, and _ allowed
pass
Default value: admin
provider
The specific backend to use for this pulp_register
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
user
Default value: admin
pulp_role
doc
Properties
The following properties are available in the pulp_role
type.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
permissions
resources/permissions to grant to this role
users
users to add to this role
Parameters
The following parameters are available in the pulp_role
type.
name
namevar
role-id: uniquely identifies the role
provider
The specific backend to use for this pulp_role
resource. You will seldom need to specify this --- Puppet will usually
discover the appropriate provider for your platform.
pulp_rpmbind
Bind/unbind to an RPM repo
Properties
The following properties are available in the pulp_rpmbind
type.
ensure
Valid values: present
, absent
Bind/unbind to an RPM repo
Default value: present
Parameters
The following parameters are available in the pulp_rpmbind
type.
provider
The specific backend to use for this pulp_rpmbind
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
repo_id
namevar
The repo-id
pulp_rpmrepo
doc
Properties
The following properties are available in the pulp_rpmrepo
type.
allowed_keys
List of allowed signature keys that imported packages can be signed with. Comma separated values.
auth_ca
full path to the CA certificate that should be used to verify client authentication certificates; setting this turns on client authentication for the repository
auth_cert
full path to the entitlement certificate that will be given to bound consumers to grant access to this repository
basicauth_pass
password used to authenticate with sync location via HTTP basic auth
basicauth_user
username used to authenticate with sync location via HTTP basic auth
checksum_type
type of checksum to use during metadata generation
description
user-readable description (may contain i18n characters)
display_name
user-readable display name (may contain i18n characters)
download_policy
Valid values: immediate
, background
, on_demand
content downloading policy
ensure
Valid values: present
, absent
Create/Remove pulp rpm repo.
Default value: present
feed
URL of the external source repository to sync
feed_ca_cert
full path to the CA certificate that should be used to verify the external repo server's SSL certificate
feed_cert
full path to the certificate to use for authorization when accessing the external feed
feed_key
full path to the private key for feed_cert
generate_sqlite
if "true", sqlite files will be generated for the repository metadata during publish
gpg_key
File containing public GPG keys used to validate the signatures of RPMs and metadata in this repository. These keys will be made available to consumers to use for verifying content in the repository. The value provided to this option must be the full path to a GPG key file containing one or more ASCII armored public keys.
host_ca
full path to the CA certificate that signed the repository hosts's SSL certificate when serving over HTTPS
max_downloads
Valid values: /^\d+$/
maximum number of downloads that will run concurrently
max_speed
Valid values: /^\d+$/
maximum bandwidth used per download thread, in bytes/sec, when synchronizing the repo
note
adds/updates/deletes notes to programmatically identify the resource
proxy_host
proxy server url to use
proxy_pass
password used to authenticate with the proxy server
proxy_port
Valid values: /^\d+$/
port on the proxy server to make requests
proxy_user
username used to authenticate with the proxy server
relative_url
relative path the repository will be served from. Only alphanumeric characters, forward slashes, underscores and dashes are allowed.
remove_missing
if "true", units that were previously in the external feed but are no longer found will be removed from the repository
repoview
if "true", static HTML files will be generated during publish by the repoview tool for faster browsing of the repository. Enables --generate-sqlite flag.
require_signature
if "Require that imported packages should be signed.
retain_old_count
Valid values: /^\d+$/
count indicating how many non-latest versions of a unit to keep in a repository
serve_http
if "true", the repository will be served over HTTP
serve_https
if "true", the repository will be served over HTTPS
skip
Valid values: rpm
, drpm
, distribution
, erratum
comma-separated list of types to omit when synchronizing, if not specified all types will be synchronized; valid values are: rpm, drpm, distribution, erratum
updateinfo_checksum_type
type of checksum to use during updateinfo.xml generation
validate
if "true", the size and checksum of each synchronized file will be verified against the repo metadata
verify_feed_ssl
if "true", the feed\'s SSL certificate will be verified against the feed_ca_cert
Parameters
The following parameters are available in the pulp_rpmrepo
type.
conf_file
path to pulp-admin's config file. Defaults to /etc/pulp/admin/admin.conf
Default value: /etc/pulp/admin/admin.conf
name
namevar
repo-id: uniquely identifies the rpm repo
provider
The specific backend to use for this pulp_rpmrepo
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
pulp_schedule
doc
Properties
The following properties are available in the pulp_schedule
type.
enabled
if "false", the schedule will exist but will not trigger any executions
Default value: true
ensure
Valid values: present
, absent
Create/Remove pulp repo schedules.
Default value: present
failure_threshold
Valid values: /^\d+$/
number of failures before the schedule is automatically disabled; unspecified means the schedule will never be automatically disabled
schedule_time
time to execute in iso8601 format (yyyy-mm-ddThh:mm:ssZ/PiuT); the number of recurrences may be specified in this value
Parameters
The following parameters are available in the pulp_schedule
type.
name
namevar
repo-id: uniquely identifies the rpm repo
provider
The specific backend to use for this pulp_schedule
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
Functions
Data types
Pulp::Iso8601TimeInterval
https://en.wikipedia.org/wiki/ISO_8601#Time_intervals TODO: Actually implement a regex.
Alias of
String[1]
Changelog
8.2.0 (2021-07-12)
Fixed bugs:
- Fixes #32966 - add remove_old_repodata option for yum #415 (jlsherrill)
8.1.1 (2021-06-09)
Fixed bugs:
- Fixes #32762 - Disable SSLInsecureRenegotiation #413 (pdudley)
- Remove duplicate parameter docs #407 (alexjfisher)
8.1.0 (2020-08-06)
Implemented enhancements:
- Improve validation of ldap parameters #403 (alexjfisher)
Fixed bugs:
8.0.0 (2020-05-15)
Breaking changes:
- Use modern facts #401
Implemented enhancements:
- Allow extlib 5.x #393 (mmoll)
- Refs #29052: Stop services before running database migrations #391 (ehelms)
- Fixes #29054: Run pulp migrations if any are pending #390 (ehelms)
7.0.0 (2020-02-12)
Breaking changes:
- Fixes #28813 - use /pulp2/content to not conflict with pulp 3 #388 (jlsherrill)
- Drop default ssl_protocol and pass it to crane #378 (ekohl)
Implemented enhancements:
- Move /etc/httpd/conf.d/{,10-}pulp.conf #385 (wbclark)
- Add support for different CA certificates for apache and pulp #381 (laugmanuel)
- Fix log_type parameter in init.pp #380 (lambda123)
- Add support for yum gpg_key_id and gpg_cmd parameters #321 (PaulSD)
Fixed bugs:
- Always manage pulp.conf in Apache #386 (ekohl)
- Fix https_ca_cert if a different location for ca_cert is used #382 (laugmanuel)
6.2.0 (2019-07-30)
Implemented enhancements:
Merged pull requests:
6.1.1 (2019-06-13)
Merged pull requests:
- Update dependencies to allow latest versions #368 (alexjfisher)
6.1.0 (2019-05-21)
Implemented enhancements:
Merged pull requests:
6.0.0 (2019-04-17)
Breaking changes:
- Drop Puppet 4 #364 (ekohl)
- Move vhosts80 to httpd conf.d #350 (ehelms)
- Fixes #22746 - Switch to voxpupuli/squid #331 (ekohl)
Implemented enhancements:
- Add
scheduled\_repo
wrapper defined type #361 (alexjfisher) - Improve pulp_rpmrepo gpg_key validation and docs #360 (alexjfisher)
- Refs #26103 - Make the crane server name configurable #358 (ekohl)
Merged pull requests:
5.8.1 (2019-04-11)
Fixed bugs:
5.8.0 (2019-01-14)
Implemented enhancements:
- Allow puppetlabs/apache 4.x #355 (ekohl)
- Use extlib namespaced functions #354 (ekohl)
- Allow extlib 3.x #351 (ekohl)
- Add log_type parameter #349 (ehelms)
- Add Puppet 6 support #348 (ekohl)
- Add max_speed to iso_importer #338 (sean797)
5.7.0 (2018-10-31)
Implemented enhancements:
5.6.0 (2018-10-08)
Implemented enhancements:
- Make crane use
$pulp::https\_chain
if specified #341 (alexjfisher) - Allow stdlib & concat 5.x #339 (ekohl)
- Remove Katello repos #336 (ekohl)
- Massively speed up providers and fix timeouts #334 (alexjfisher)
5.5.0 (2018-07-16)
Implemented enhancements:
5.4.2 (2018-05-30)
Merged pull requests:
5.4.1 (2018-05-23)
Fixed bugs:
- Fix wait_for_bind grep being poorly escaped #317 (alexjfisher)
- Fixes #23233 - updated yum_max_speed example to reflect to_bytes parsing #315 (chris1984)
- fixed wrong login parameter name in README #314 (pseiler)
5.4.0 (2018-02-28)
Implemented enhancements:
- Allow the setting of vhost in consumer messaging section. #311 (glbyers)
- Don't specify path to pulp-consumer #310 (alexjfisher)
- Make enable_iso not dependent on enable_rpm #309 (sean797)
5.3.0 (2018-01-25)
Implemented enhancements:
- Allow use of puppet-qpid 4.X #305 (ehelms)
- Allow puppet/mongodb 2.x #303 (ekohl)
- Add support for enabling repo metadata GPG signing #302 (PaulSD)
- Fixes #22338 - add worker_timeout param #299 (chris1984)
- Fixes #21957 - Pulp-Ostree.conf handle gpg content #298 (parthaa)
- Make ISO support optional #294 (sean797)
- Add /pulp/deb to the authority of repo_auth #293 (mdellweg)
- Switch to puppet/mongodb and correct puppet-extlib fixture #291 (ekohl)
Fixed bugs:
- Fixes #22392 - add restart on config change #304 (chris1984)
- Don't use type defaults for pulp_rpmrepo properties #284 (alexjfisher)
Closed issues:
Merged pull requests:
5.2.0
Closed issues:
- pulp_rpmbind resource creation 'succeeds' for repos that don't exist. #276
Merged pull requests:
- Allow extlib 2.0 #282 (ekohl)
- Add SSLProtocol configuration for crane #281 (ehelms)
- Fix bad pulp_role example in readme.md #280 (ccnifo)
- Verify successful bind when creating pulp_rpmbind #279 (alexjfisher)
5.1.0 (2017-09-15)
Closed issues:
Merged pull requests:
- Explicitly set ssl_certs_dir to an empty string #275 (ekohl)
- crane requires mod wsgi #274 (sean797)
- Fixes #20865 - correct profiling configuration #273 (iNecas)
- Add basic provider for Pulp roles #234 (ccnifo)
5.0.0 (2017-08-30)
Closed issues:
- EPEL and Pulp repos not deployed #164
- Update documentation with all settings available #143
- pulp_schedule broken #260
- How to use Pulp - need docs #241
- EPEL Dependency #247
- unable to add pulp_rpmrepo (undefined method `each' for nil:NilClass) #245
- Facts broken with some ruby versions #243
- Add pulp_rpmbind type #230
- Service refresh every run ? #223
- katello/puppet-katello using yum_max_speed which is not in current puppet-pulp release #207
- Authentification issue #206
- Idempotent repo creation #205
- pulp-admin-client #201
- OAuth enabled by default #175
- pulp::ssl_ca_cert is not defined #142
- mongodb_version not set on first run #141
- Wrong parameters in init #135
- pulp-nodes-parent is no longer installed by default #107
- Machines without the pulp class included still run queries for mongodb version #91
- adding nodes support #49
Merged pull requests:
- Contain pulp::crane if included #271 (ekohl)
- Allow repository management #270 (ekohl)
- Add a link to puppetmodule.info #269 (ekohl)
- Adding Pulp 2.14 changes #268 (parthaa)
- Allow puppetlabs-mongodb 1.0 #267 (ekohl)
- Allow newer puppetlabs-concat #266 (ekohl)
- Allow puppetlabs-apache 2.0 #265 (ekohl)
- msync: Puppet 5, parallel tests, .erb templates, cleanups, facter fix #263 (ekohl)
- Remove redundancy in repo_type definitions #262 (ekohl)
- Fix pulp_schedule and add tests #261 (ekohl)
- Update the README #242 (ekohl)
- Expand the admin login functionality #259 (ekohl)
- Allow katello/qpid 2.x #258 (ekohl)
- Bump qpid dependency #256 (ehelms)
- Fix tests #255 (ekohl)
- allow configuration of wsgi_processes and wsgi_max_requests #254 (SimonPe)
- Clean up types and providers #252 (ekohl)
- Disable oauth by default #249 (ekohl)
- Fixes GH-243 - Ruby 1.8 compatible syntax for facts #246 (ccnifo)
- Fix typo in apache manifest #244 (johnpmitsch)
- Refactor the class inclusions and chaining #239 (ekohl)
- Use the $pulp::ca_cert variable rather than hardcoding #237 (ekohl)
- Add pulp_consumer_id fact #233 (alexjfisher)
- Remove mongodb_version fact #232 (alexjfisher)
- Add pulp_rpmbind type #231 (alexjfisher)
- Add repo classes #229 (ekohl)
- Refactor pulp::child and use puppetlabs-apache vhost options #227 (ekohl)
- Remove EL6 compatiblity code #226 (ekohl)
- Refactor to Puppet 4 types #225 (ekohl)
- Use concat 2.2.1 in .fixtures #224 (alexjfisher)
- LDAP authentication support #221 (alexjfisher)
- Include mod_proxy_http apache module #220 (alexjfisher)
- Fix repo_auth parameter #219 (alexjfisher)
- Make SSL checking optional #214 (cristifalcas)
4.3.3 (2017-10-13)
Merged pull requests:
- Fixes #20865 - correct profiling configuration #273 (iNecas)
- fixes #19740 - pulp_docker.conf schema 2 #251 (thomasmckay)
4.3.2 (2017-08-28)
Merged pull requests:
4.3.1 (2017-07-13)
Merged pull requests:
4.3.0 (2017-04-07)
Merged pull requests:
- Expand ignore with generated files/directories #222 (ekohl)
- Modulesync update #218 (ekohl)
- Remove EL6 from README #217 (alexjfisher)
- Modulesync update #213 (ekohl)
- fix readme #210 (timogoebel)
- broker service may not run on the same node #209 (timogoebel)
- Fixes #17219 - bump squid3 to 1.0.2 #208 (Klaas-)
- Remove code to support EL6 #202 (ekohl)
4.2.0 (2017-03-10)
Merged pull requests:
- Use the correct variable for ca_cert #203 (ekohl)
- Fix linting errors #198 (ehelms)
- Messaging transport version #195 (khdevel)
- Fixes #18484 - Enables ostree-importer proxy settings #194 (parthaa)
- Update modulesync config #192 (ekohl)
- Fixes #16253 - Add max speed var to Katello #189 (chris1984)
- Refs #17298 - Add max tasks per Pulp worker #173 (mbacovsky)
4.1.0 (2017-01-24)
Merged pull requests:
- update documentation with examples of providers #188 (cristifalcas)
- add an schedule provider #187 (cristifalcas)
- add the posibility to install katello_agent #186 (cristifalcas)
- add an rpm provider #185 (cristifalcas)
- add an puppet provider #184 (cristifalcas)
- add an iso provider #183 (cristifalcas)
4.0.0 (2016-12-20)
Closed issues:
- show_diff on /etc/pulp/server.conf show passwords #171
Merged pull requests:
- Fixes #16941 - Check perms on Pulp key #182 (chris1984)
- Fixes #16946 - add step to verify Pulp CA #181 (chris1984)
- version compared as number #180 (PascalBourdier)
- Add Pulp profiling option #178 (ehelms)
- fixes #17590 - add repo_url_prefixes to repo_auth.conf #177 (stbenjam)
- module sync update #176 (jlsherrill)
- Remove potential for circular dependency when using Apache #174 (ehelms)
- fixes GH-171 - add a show_conf_diff param, defaults to false #172 (ccnifo)
- Move crane to puppet-pulp #170 (stbenjam)
- Modulesync #169 (stbenjam)
3.5.0 (2016-10-17)
Closed issues:
- Pulp v2.8 does not work with SSL_CLIENT_S_DN_CN #138
- ProviderConsumer: file /bin/pulp-consumer does not exist #55
Merged pull requests:
- Pin squid to 1.0.0 to prevent breakage on EL6 #168 (ehelms)
- allow to increase the timeout for the exec that does the db migration #167 (cristifalcas)
- Restrict SSLUsername to /pulp/api #166 (jlsherrill)
- ssl_protocol: customisable parameter and default avoids SSLv3 #165 (ccnifo)
- SSLUsername directive breaks FakeBasicAuth #163 (llabrat)
3.4.0 (2016-09-12)
Closed issues:
Merged pull requests:
- Fix typo in variable name in params.pp #162 (stbenjam)
- Modulesync update #161 (ehelms)
- Remove trailing spaces #160 (stbenjam)
- Fixes #16343 - Redirect fix for Atomic Hosts #158 (parthaa)
- Do not attempt to write
vhosts80
file too early #156 (beav) - allow configuration of puppet wsgi processes #155 (jlsherrill)
- fixes GH-150 - Eliminate duplicate, broken requires on mongodb #153 (ccnifo)
- Pin extlib since they dropped 1.8.7 support #152 (stbenjam)
- refs #15217 - puppet 4 support #151 (stbenjam)
- Mongodb fact refactor #115 (walkamongus)
3.3.1 (2016-06-10)
Merged pull requests:
- refs #15326 - remove mongo authentication #149 (stbenjam)
- allow adding chainfile for https certificate #148 (jlambert121)
- fixes #15014 - restore pulp db init flag #145 (stbenjam)
3.3.0 (2016-05-19)
Merged pull requests:
- refs #15058 - mongo auth only on newer mongos #147 (stbenjam)
- refs #15058 - support auth for mongo #146 (stbenjam)
- allow browsing root of repos #144 (jlambert121)
- Add paths for puppet-lint docs check #140 (stbenjam)
- Pulp streamer requires mod_proxy module #139 (ehelms)
3.2.1 (2016-03-28)
Merged pull requests:
- Fixes #14361 - Setting a couple missing squid options #137 (daviddavis)
- update to add defaultsite to squid conf #136 (beav)
3.2.0 (2016-03-16)
Merged pull requests:
- Modulesync #134 (stbenjam)
- Allow specifying custom fragment on httpd module #133 (ehelms)
- update vhosts80/rpm.conf to support http lazy sync #132 (jlsherrill)
3.1.0 (2016-02-23)
Merged pull requests:
- adds pulp streamer service #130 (cfouant)
- Add KeepAlive support #128 (jlsherrill)
- Refs #13625 - Install ostree via puppet-pulp #127 (parthaa)
- Fixes #13451 - enables lazy sync #122 (cfouant)
3.0.0 (2016-02-10)
Merged pull requests:
- do not specify ca cert in apache pulp.conf #126 (jlsherrill)
- Ensure JSON is wrapped in quotations #125 (ehelms)
- Fixes #13607 - Adding pulp.conf #124 (parthaa)
- Fix importer JSON to produce correct JSON #123 (ehelms)
- Fix wsgi paths for 2.8 #121 (ehelms)
- Include apache::mod::headers when using docker #120 (ehelms)
- Removes ssl_ca_cert parameter that duplicates the ca_cert parameter #119 (ehelms)
- fix template :undef checks and yum proxy variables #117 (walkamongus)
- Fixes #13431 - Apache changes for pulp 2.8 #116 (parthaa)
2.1.0 (2016-02-01)
Merged pull requests:
- Remove inclusion of concat_native #118 (ehelms)
- Fixes #13394 - Added xsendfile support for pulp 2.8 #113 (parthaa)
- fixes #13189 - allows authentication with username and certificate #112 (cfouant)
- Config file updates, ostree support, and bugfix #85 (beav)
2.0.0 (2015-11-20)
Merged pull requests:
- consolidate node parent params into one parameter #111 (jlsherrill)
1.0.2 (2015-10-21)
Merged pull requests:
1.0.1 (2015-10-15)
Closed issues:
- Severe lack of answers file documentation #105
- Unable to set pulp::num_workers in an answers file #104
- service.pp forces to use qpidd service #100
Merged pull requests:
- fixes #12094 Added parent param to ensure pulp-nodes-parent is installed #108 (johnpmitsch)
- Drop puppet-foreman in favor of extlib for cache_data #106 (ehelms)
- Remove direct references to Service['qpidd'] #103 (ehelms)
- fixes #12033: set topic_exchange using the messaging_topic_exchange param #102 (bbuckingham)
- Refs #11998 - support plugin httpd files without manage_httpd #101 (jlsherrill)
1.0.0 (2015-09-08)
Closed issues:
- Module is missing some apache configuration? #43
- pulp requires an encrypted connection to qpid, but the nssdb configuration is not performed. #38
- mongodb can't start on el7 #37
- Do not install qpid and mongodb from pulp #36
Merged pull requests:
0.1.3 (2015-08-11)
Merged pull requests:
- Ensure python-gofer-qpid is installed. #94 (ehelms)
- Add forge and travis badges to README #90 (stbenjam)
0.1.2 (2015-07-20)
Merged pull requests:
- Update 0.1-stable for modulesync #89 (stbenjam)
- Prepare puppet-pulp for release #88 (stbenjam)
- fix config.pp #87 (cristifalcas)
- fixes #10716 - migrate pulp when new pulp plugins are installed #86 (stbenjam)
- Consumer #83 (cristifalcas)
- Require qpidd to be started before migrating the database. #82 (ehelms)
- make pulp configurable #80 (cristifalcas)
- fix including apache configuration #79 (cristifalcas)
- autorequire the goferd service for the provider #77 (cristifalcas)
- Fixes #10885 - Allow customizing mongodb path #73 (adamruzicka)
- Fixes #10885 - Allow customizing mongodb path #72 (adamruzicka)
- Refs #10385: Don't redirect standard err to standard out for mongodb … #68 (ehelms)
- Refs #10616 - add ssl virt host fragment type #67 (jlsherrill)
- Refs #10616 - add ssl virt host fragment type #66 (jlsherrill)
- Remove qpid and mongodb declaration #65 (cristifalcas)
- move httpd config to a separate class #64 (cristifalcas)
- fix spaces #63 (cristifalcas)
- updates for consumer class #62 (cristifalcas)
- Refs #10385: repoquery doesn't omit the errors, so we account for that. #58 (ehelms)
- Fixing some documentation in admin.pp #57 (timhughes)
- Updates from modulesync. #56 (ehelms)
0.1.1 (2015-05-08)
Merged pull requests:
- Update to 0.1.1 #54 (ehelms)
- Fixes #10385: Omit errors from yum info when acquiring version. #53 (ehelms)
- Pin rspec version on 1.8.7 #47 (stbenjam)
- use preffix enable_ for extra packages #45 (cristifalcas)
- add consumer #41 (cristifalcas)
0.1.0 (2015-03-11)
Merged pull requests:
- fix services on el7 #42 (cristifalcas)
- fixes #9479: fix usage with centos #39 (dustints)
- fixes #9204 - fix failing tests due to qpid module's validations #34 (stbenjam)
- add initial admin support #33 (cristifalcas)
- Fixes #8478 - set the version of mongodb we are using #31 (iNecas)
- Fixes #8266: Allow setting the number of Pulp workers to be used. #30 (ehelms)
- refs #7779 - Updating to add support for pulp docker #29 (bbuckingham)
- fixes #7296, BZ1135127 - switching to relying on apache for cert validat... #28 (mccun934)
- Refs #6736: Updating to standard layout and basic tests. #27 (ehelms)
- fixes #7115 - specify cert options for nodes.conf #25 (jlsherrill)
- Refs #7077/BZ1127242: generate random password for pulp user. #24 (waldenraines)
- fixes #7006 - require mongo and qpidd before pulp-manage-db #23 (jlsherrill)
- Refs #6530: Ensure null for proxy_port if not defined. #22 (ehelms)
- Fixes #6530: Ensure proxy configs work if not all values specified. #21 (ehelms)
- Refs #6360 - enable pulp_manage_puppet selinux boolean #20 (lzap)
- Refs #5639: Adds proxy options for Pulp plugins. #19 (ehelms)
- Fixes 5992 and 5993 - update pulp-katello to install qpid-dependencies #18 (jmontleon)
- fixes #5845 - using new pulp httpd config files for 2.4 #17 (jlsherrill)
- Refs #5377: Ensure Pulp 2.4 services are run after config. #16 (ehelms)
- Refs #5377: Updates for Pulp 2.4 support. #15 (ehelms)
- Refs #5423 - fixes pulp node setting on the capsule #14 (iNecas)
- Fixing #5299: variables not used properly. #13 (omaciel)
- Fix mongodb error waiting for service. #12 (dgoodwin)
- Cleaning up certs related files. #11 (ehelms)
- Changing apache to an include and including extra RPMs to install with P... #10 (ehelms)
- adding plugin confs to puppet module #9 (jlsherrill)
- Updates to pass parameters to the Qpid module. #8 (ehelms)
- having the pulp module use the puppetlabs apache module #7 (jlsherrill)
- remove default_login override #5 (jlsherrill)
- Updates for parameterized params and certs updates. #4 (ehelms)
- Move the certs part of the module to puppet-certs #3 (iNecas)
- Fixes documentation error to prevent Kafo from complaining about #1 (ehelms)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/stdlib (>= 4.25.0 < 7.0.0)
- puppet/extlib (>= 3.0.0 < 6.0.0)
- puppetlabs/apache (>= 1.2.0 < 6.0.0)
- puppet/mongodb (>= 1.1.0 < 4.0.0)
- puppetlabs/concat (>= 1.0.0 < 7.0.0)
- katello/qpid (>= 3.0.0 < 7.0.0)
- puppet/squid (>= 2.0.0 < 3.0.0)
- puppetlabs/transition (>= 0.1.0 < 1.0.0)
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS