fuel-plugin-openstack-telem.../deployment_scripts/puppet/manifests/hindsight.pp

131 lines
3.0 KiB
Puppet

notice('MODULAR: fuel-plugin-telemetry: hindsight.pp')
$user = 'hindsight'
$group = 'hindsight'
$influxdb_address = hiera('telemetry::influxdb::address')
$influxdb_port = hiera('telemetry::influxdb::port')
$influxdb_database = hiera('telemetry::influxdb::database')
$influxdb_user = hiera('telemetry::influxdb::user')
$influxdb_password = hiera('telemetry::influxdb::password')
$metadata_fields = hiera('telemetry::metadata_fields')
# TODO settings/hiera
$topics = 'metering.sample'
# Kafka integration
$brokerlist = hiera('telemetry::kafka::nodes_list')
$kafka_port = hiera('telemetry::kafka::port')
# Install packages
package { 'libluasandbox-dev': }
package { 'libluasandbox1': }
package { 'hindsight': }
package { 'librdkafka1': }
package { 'lua-sandbox-extensions': }
package { 'python-oslo.messaging': }
package { 'python-pip': }
package { 'kafka-python':
ensure => '1.2.5',
provider => 'pip'
}
# User/group
user { $user:
ensure => 'present',
groups => $group,
}
group { $group:
ensure => 'present',
}
# Directories
$conf_dir = '/etc/telemetry_hindsight'
$hindsight_dir = '/usr/share/telemetry_hindsight'
$run_dir = "${hindsight_dir}/run"
# parent /var/lib/hindsight?
$output_dir = '/var/lib/hindsight/output'
$sandbox_dir = '/usr/lib/x86_64-linux-gnu/luasandbox'
$templates = 'telemetry/hindsight/'
$dirs = [
$conf_dir,
$hindsight_dir,
$run_dir,
"${run_dir}/analysis",
"${run_dir}/input",
"${run_dir}/output",
$output_dir
]
file { $dirs:
ensure => 'directory',
owner => $user,
group => $group,
recurse => true,
require => Package['hindsight']
}
$files_defaults = {
owner => $user,
group => $group,
before => Service['hindsight']
}
# Config files
file { '/etc/telemetry_hindsight/hindsight.cfg':
ensure => 'present',
owner => $user,
group => $group,
content => template( 'telemetry/hindsight/hindsight.cfg.erb' ),
require => Package['hindsight']
}
# Templates
# TODO unhardkode kafka port
$configs = {
"${run_dir}/output/influxdb_ceilometer.cfg" => {
content => template( "${templates}/output/influxdb_ceilometer.cfg.erb"),
},
"${run_dir}/input/kafka_input.cfg" => {
content => template( "${templates}/input/kafka_input.cfg.erb"),
}
}
create_resources(file, $configs, $files_defaults)
# Files
$scripts = {
"${run_dir}/output/influxdb_tcp.lua" => {
source => 'puppet:///modules/telemetry/hindsight/run/output/influxdb_tcp.lua'
},
"${run_dir}/input/kafka_input.lua" => {
source => 'puppet:///modules/telemetry/hindsight/run/input/kafka_input.lua'
}
}
create_resources(file, $scripts, $files_defaults)
file { '/etc/init/hindsight.conf':
content => template( "${templates}/init.conf.erb"),
before => Service['hindsight']
}
service { 'hindsight':
ensure => 'running',
enable => true,
provider => 'upstart',
require => File['/etc/init/hindsight.conf']
}
# TODO move to separated manifest
#ceilometer_config { 'notification/messaging_urls': value => ['http1','http2'] }