File: dispersion.pp

package info (click to toggle)
puppet-module-swift 9.4.4-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,248 kB
  • ctags: 95
  • sloc: ruby: 5,804; python: 35; makefile: 17; sh: 15
file content (118 lines) | stat: -rw-r--r-- 3,638 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
# == 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://swift.openstack.org/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'],
  }

}