Puppet Class: swift::dispersion

Defined in:
manifests/dispersion.pp

Overview

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 :

https://docs.openstack.org/swift/latest/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 github.com/openstack/swift/commit/9a423d0b78a105caf6011c6c3450f7d75d20b5a1

Authors

Francois Charlier fcharlier@ploup.net

Parameters:

  • auth_url (Any) (defaults to: 'http://127.0.0.1:5000/v3/')
  • auth_user (Any) (defaults to: 'dispersion')
  • auth_tenant (Any) (defaults to: 'services')
  • auth_pass (Any) (defaults to: 'dispersion_password')
  • auth_version (Any) (defaults to: '2.0')
  • endpoint_type (Any) (defaults to: 'publicURL')
  • swift_dir (Any) (defaults to: '/etc/swift')
  • coverage (Any) (defaults to: 1)
  • retries (Any) (defaults to: 5)
  • concurrency (Any) (defaults to: 25)
  • dump_json (Any) (defaults to: 'no')


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'manifests/dispersion.pp', line 69

class swift::dispersion (
  $auth_url      = 'http://127.0.0.1:5000/v3/',
  $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::params::user,
    group  => $::swift::params::group,
    mode   => '0640',
  }

  swift_dispersion_config {
    'dispersion/auth_url':            value => $auth_url;
    'dispersion/auth_user':           value => "${auth_tenant}:${auth_user}";
    'dispersion/auth_key':            value => $auth_pass, secret => true;
    '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'],
  }

}