Files
puppet-swift/manifests/dispersion.pp
Monty Taylor fb9e6dcecc Replace references to swift.openstack.org
The policy of giving projects vanity domains stopped about 5 years ago.
swift.openstack.org is a redirect to the canonical location -
docs.openstack.org/developer/swift. While we are not aiming to remove
the redirect any time in the forseeable future due to existing published
links pointing to it, we should at the very least stop adding more of
those links to the world.

Change-Id: Ia56ce22c65c1fac29a2d8fb367797a4d7929a9b4
2017-03-08 09:50:24 -06:00

119 lines
3.6 KiB
Puppet

# == Class: swift::dispersion
#
# This class creates a configuration file for swift-dispersion-report and
# and swift-dispersion-populate tools.
#
# These tools need access to all the storage nodes and are generally ran
# on the swift proxy node.
#
# For more details, see :
# http://docs.openstack.org/developer/swift/admin_guide.html#cluster-health
#
# === Parameters
#
# [*auth_url*]
# String. The full URL to the authentication endpoint (eg. keystone)
# Optional. Defaults to '127.0.0.1'.
#
# [*auth_user*]
# String. The Swift username to use to run the tools.
# Optional. Defaults to 'dispersion'.
#
# [*auth_tenant*]
# String. The user's tenant/project.
# Optional. Defaults to 'services'.
#
# [*auth_pass*]
# String. The user's password.
# Optional. Defaults to 'dispersion_password'.
#
# [*auth_version*]
# String. The version to pass to the 'swift' command.
# Use '2.0' when using Keystone.
# Optional. Defaults to '2.0'
#
# [*endpoint_type*]
# String. The ability to choose which Swift endpoint to use.
# Optional. Defaults to 'publicURL'.
#
# [*swift_dir*]
# String. The path to swift configuration folder
# Optional. Defaults to '/etc/swift'.
#
# [*coverage*]
# Integer. The percentage of partitions to cover.
# Optional. Defaults to 1
#
# [*retries*]
# Integer. Number of retries.
# Optional. Defaults to 5.
#
# [*concurrency*]
# Integer. Process concurrency.
# Optional. Defaults to 25.
#
# [*dump_json*]
# 'yes' or 'no'. Should 'swift-dispersion-report' dump json results ?
# Optional. Defaults to no.
#
# === Note
#
# Note: if using swift < 1.5.0, swift-dispersion-report and
# swift-dispersion-populate might need to be patched with
# https://github.com/openstack/swift/commit/9a423d0b78a105caf6011c6c3450f7d75d20b5a1
#
# === Authors
#
# Francois Charlier fcharlier@ploup.net
#
class swift::dispersion (
$auth_url = 'http://127.0.0.1:5000/v2.0/',
$auth_user = 'dispersion',
$auth_tenant = 'services',
$auth_pass = 'dispersion_password',
$auth_version = '2.0',
$endpoint_type = 'publicURL',
$swift_dir = '/etc/swift',
$coverage = 1,
$retries = 5,
$concurrency = 25,
$dump_json = 'no'
) {
include ::swift::deps
include ::swift::params
Swift_dispersion_config<||> ~> Exec['swift-dispersion-populate']
file { '/etc/swift/dispersion.conf':
ensure => file,
owner => 'swift',
group => 'swift',
}
swift_dispersion_config {
'dispersion/auth_url': value => $auth_url;
'dispersion/auth_user': value => "${auth_tenant}:${auth_user}";
'dispersion/auth_key': value => $auth_pass;
'dispersion/auth_version': value => $auth_version;
'dispersion/endpoint_type': value => $endpoint_type;
'dispersion/swift_dir': value => $swift_dir;
'dispersion/dispersion_coverage': value => $coverage;
'dispersion/retries': value => $retries;
'dispersion/concurrency': value => $concurrency;
'dispersion/dump_json': value => $dump_json;
}
exec { 'swift-dispersion-populate':
path => ['/bin', '/usr/bin'],
subscribe => File['/etc/swift/dispersion.conf'],
timeout => 0,
# lint:ignore:140chars
onlyif => "swift -A ${auth_url} --os-username ${auth_user} --os-project-name ${auth_tenant} --os-password ${auth_pass} -V ${auth_version} stat | grep 'Account: '",
unless => "swift -A ${auth_url} --os-username ${auth_user} --os-project-name ${auth_tenant} --os-password ${auth_pass} -V ${auth_version} list | grep dispersion_",
# lint:endignore
require => Package['swiftclient'],
}
}