Puppet Class: speedtest

Inherits:
speedtest::params
Defined in:
manifests/init.pp

Overview

Class: speedtest

Parameters:

  • ensure (Enum['present', 'absent']) (defaults to: present)
  • speedtest_run (Stdlib::Absolutepath) (defaults to: '/usr/local/bin/speedtest-run.sh')
  • user (String) (defaults to: 'root')
  • group (String) (defaults to: 'root')
  • output_dir (Stdlib::Absolutepath) (defaults to: '/var/tmp/speedtest')
  • output_file_name (String) (defaults to: $::speedtest::params::output_file_name)
  • package (String) (defaults to: 'speedtest-cli')
  • location (Optional[String]) (defaults to: undef)
  • no_tests (Integer) (defaults to: 1)
  • no_test_servers (Integer) (defaults to: 1)
  • upload_test (Boolean) (defaults to: true)
  • download_test (Boolean) (defaults to: true)
  • output_format (Enum['json', 'csv']) (defaults to: 'csv')
  • enable_upload (Boolean) (defaults to: false)
  • upload_dir (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • upload_host (Optional[Tea::Host]) (defaults to: undef)
  • upload_key_source (Optional[Tea::Puppetsource]) (defaults to: undef)
  • upload_user (String) (defaults to: 'speedtest')


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
# File 'manifests/init.pp', line 3

class speedtest (
  Enum['present', 'absent']      $ensure            = present,
  Stdlib::Absolutepath           $speedtest_run     = '/usr/local/bin/speedtest-run.sh',
  String                         $user              = 'root',
  String                         $group             = 'root',
  Stdlib::Absolutepath           $output_dir        = '/var/tmp/speedtest',
  String                         $output_file_name  = $::speedtest::params::output_file_name,
  String                         $package           = 'speedtest-cli',
  Optional[String]               $location          = undef,
  Integer                        $no_tests          = 1,
  Integer                        $no_test_servers   = 1,
  Boolean                        $upload_test       = true,
  Boolean                        $download_test     = true,
  Enum['json', 'csv']            $output_format     = 'csv',
  Boolean                        $enable_upload     = false,
  Optional[Stdlib::Absolutepath] $upload_dir        = undef,
  Optional[Tea::Host]            $upload_host       = undef,
  Optional[Tea::Puppetsource]    $upload_key_source = undef,
  String                         $upload_user       = 'speedtest',
) inherits speedtest::params {
  $_output_file = "${output_dir}/${output_file_name}.${output_format}"
  package {$package:
    provider => 'pip',
  }
  file {$speedtest_run:
    ensure  => file,
    content => template('speedtest/usr/local/bin/speedtest-run.sh.erb'),
    mode    => '0755',
    group   => $group,
    owner   => $user,
  }
  file{ $output_dir:
    ensure => directory,
    mode   => '0755',
    group  => $group,
    owner  => $user;
  }
  cron {'speedtest-run':
    ensure   => $ensure,
    command  => "/usr/bin/flock -n /var/lock/speedtest-run.lock ${speedtest_run}",
    user     => $user,
    require  => [ Package[$package], File[$speedtest_run]],
    monthday => 18,
    hour     => fqdn_rand(23),
    minute   => fqdn_rand(59),
  }
  if $enable_upload {
    if !$upload_dir or !$upload_key_source or !$upload_user {
      fail('if using enable_upload then you must specify all $upload_dir, $upload_key_source and $upload_user')
    }
    include ::file_upload
    file_upload::upload { 'speedtest':
      ensure           => $ensure,
      data             => $output_dir,
      patterns         => ["${output_file_name}*${output_format}"],
      destination_path => $upload_dir,
      destination_host => $upload_host,
      ssh_key_source   => $upload_key_source,
      ssh_user         => $upload_user,
    }
  }
}