Puppet Class: profile::analytics::cluster::packages::statistics

Defined in:
modules/profile/manifests/analytics/cluster/packages/statistics.pp

Overview

Class profile::analytics::cluster::packages::statistics

Specific packages that should be installed on analytics statistics nodes (no Hadoop client related packages).

If the stat node need to be capable of using Hadoop, please also include profile::analytics::cluster::packages::hadoop



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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'modules/profile/manifests/analytics/cluster/packages/statistics.pp', line 9

class profile::analytics::cluster::packages::statistics {

    include ::profile::analytics::cluster::packages::common

    class { '::imagemagick::install': }

    require_package([
        'time',
        'emacs',
        'mc',
        'zip',
        'p7zip',
        'p7zip-full',
        'subversion',
        'mercurial',
        'tofrodos',
        'git-review',
        'make',                   # halfak wants make to manage dependencies
        'libwww-perl',            # For wikistats stuff
        'libcgi-pm-perl',         # For wikistats stuff
        'libjson-perl',           # For wikistats stuff
        'libtext-csv-xs-perl',    # T199131
        'sqlite3',                # For storing and interacting with intermediate results
        'libproj-dev',            # Requested by lzia for rgdal
        'libbz2-dev',             # For compiling some python libs. T84378
        'libboost-regex-dev',     # Ironholds wants these
        'libboost-system-dev',
        'libgoogle-glog-dev',
        'libboost-iostreams-dev',
        'libmaxminddb-dev',
        'build-essential',        # Requested by halfak to install SciPy
        'libssl-dev',             # Requested by bearloga; necessary for an essential R package {openssl}
        'libcurl4-openssl-dev',   # Requested by bearloga for an essential R package {devtools}
        'libicu-dev',             # ^
        'libssh2-1-dev',          # ^
        'pandoc',                 # Requested by bearloga for using RMarkdown and performing format conversions
        'pandoc-citeproc',        # ^
        'lynx',                   # Requested by dcausse to be able to inspect yarn's logs from analytics10XX hosts
        'gsl-bin',
        'libgsl-dev',
        'libgdal-dev',            # Requested by lzia for rgdal
        'g++',
        'libyaml-cpp-dev',        # Latest version of uaparser (https://github.com/ua-parser/uap-r) supports v0.5+
        'php-cli',
        'php-curl',
        'php-mysql',
        'libfontconfig1-dev',     # For {systemfonts} R pkg dep of {hrbrthemes} pkg for dataviz (T254278)
        'libcairo2-dev',          # ^
        'anaconda-wmf'            # WMF packaged distribution of anaconda and conda.
    ])

    if !defined(Package['nodejs']) {
        # nodejs6 is EOL
        if os_version('debian == stretch') {
            if !defined(Apt::Package_from_component['wikimedia-node10']){
                apt::package_from_component { 'wikimedia-node10':
                    component => 'component/node10',
                    packages  => ['nodejs'],
                }
            }
        } else {
            # For embedded configurable-http-proxy
            require_package('nodejs')
        }
    }

    if os_version('debian >= buster') {
        require_package([
            'libgslcblas0',
            'mariadb-client-10.3',
            'libyaml-cpp0.6',
        ])
    } else {
        require_package([
            'libgsl2',
            'mariadb-client-10.1',
            'libyaml-cpp0.5v5',
        ])

        # We sometimes run eventlogging code from stat boxes for backfilling, etc.
        # Include eventlogging::dependencies.
        # Not all eventlogging dependencies are built for buster, so we don't include
        # on buster hosts.
        class { '::eventlogging::dependencies': }
    }

    # Python packages
    require_package ([
        'virtualenv',
        'libapache2-mod-python',
        'python3-mock',
        'python3-mysqldb',
        'python3-boto',              # Amazon S3 access (to get zero sms logs)
        'python3-ua-parser',
        'python3-netaddr',
        'python3-pymysql',
        'python3-virtualenv',        # T84378
        'python3-venv',
        'python3-dev',               # T83316
        'python3-protobuf',
        'python3-unidecode',
        'python3-oauth2client',      # T197896
        'python3-oauthlib',          # T197896
        'python3-requests-oauthlib', # T197896
        'python3-ua-parser',
    ])



    # These packages need to be reviewed in the context of Debian Buster
    # to figure out if we need to rebuild them or simply copy them over in reprepro.
    if os_version('debian <= stretch') {
        require_package([
            # WMF maintains python-google-api at
            # https://gerrit.wikimedia.org/r/#/admin/projects/operations/debs/python-google-api
            'python3-google-api', # T190767
        ])
    }


    # FORTRAN packages (T89414)
    require_package([
        'gfortran',        # GNU Fortran 95 compiler
        'liblapack-dev',   # FORTRAN library of linear algebra routines
        'libopenblas-dev', # Optimized BLAS (linear algebra) library
    ])

    # These packages need to be reviewed in the context of Debian Buster
    # to figure out if we need to rebuild them or simply copy them over in reprepro.
    if os_version('debian <= stretch') {
        # Plotting packages
        require_package([
            'ploticus',
            'libploticus0',
            'libcairo2',
            'libcairo2-dev',
            'libxt-dev',
        ])
    }

    # scap also deploys git-lfs to clients, so guarding
    # the package resource with a !defined as precaution.
    if !defined(Package['git-lfs']) {
        package { 'git-lfs':
            ensure => present,
        }
    }
}