diff --git a/manifests/init.pp b/manifests/init.pp index 44483271..683eff47 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -50,10 +50,10 @@ file { "/etc/dd-agent/datadog.conf": ensure => file, content => template("datadog/datadog.conf.erb"), - owner => "dd-agent", - group => "root", + owner => $dd_user, + group => $dd_group, mode => 0640, - notify => Service["datadog-agent"], + notify => Service[$service_name], require => File["/etc/dd-agent"], } diff --git a/manifests/integrations/mysql.pp b/manifests/integrations/mysql.pp new file mode 100644 index 00000000..191d65ec --- /dev/null +++ b/manifests/integrations/mysql.pp @@ -0,0 +1,50 @@ +# Class: datadog::integrations::mysql +# +# This class will install the necessary configuration for the mysql integration +# +# Parameters: +# $host: +# The host mysql is running on +# $password +# The mysql password for the datadog user +# $user +# The mysql user for the datadog user +# $tags +# Optional array of tags +# $replication +# replication option +# $galera_cluster +# galera cluster option +# +# Sample Usage: +# +# class { 'datadog::integrations::mysql' : +# host => 'localhost', +# password => 'some_pass', +# user => 'datadog' +# } +# +# +class datadog::integrations::mysql( + $host, + $password, + $user = 'datadog', + $tags = [], + $replication = '0', + $galera_cluster = '0' +) inherits datadog::params { + + package { $mysql_int_package : + ensure => installed, + } + + file { "${conf_dir}/mysql.yaml": + ensure => file, + owner => $dd_user, + group => $dd_group, + mode => 0644, + content => template('datadog/mysql.yaml.erb'), + require => Package[$mysql_int_package], + notify => Service[$service_name] + } +} diff --git a/manifests/params.pp b/manifests/params.pp index 87c581e3..553bc54a 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -15,17 +15,23 @@ # Sample Usage: # class datadog::params { - $api_key = "your API key" - $dd_url = "https://app.datadoghq.com" + $api_key = "your API key" + $dd_url = "https://app.datadoghq.com" + $conf_dir = "/etc/dd-agent/conf.d" + $dd_user = "dd-agent" + $dd_group = "root" + $service_name = "datadog-agent" case $operatingsystem { "Ubuntu","Debian" : { - $rubygems_package = 'rubygems' - $rubydev_package = 'ruby-dev' + $rubygems_package = 'rubygems' + $rubydev_package = 'ruby-dev' + $mysql_int_package = 'python-mysqldb' } "RedHat","CentOS","Fedora","Amazon","Scientific" : { - $rubygems_package = 'rubygems' - $rubydev_package = 'ruby-devel' + $rubygems_package = 'rubygems' + $rubydev_package = 'ruby-devel' + $mysql_int_package = 'MySQL-python' } default: { fail("Class[datadog]: Unsupported operatingsystem: ${::operatingsystem}") } } diff --git a/templates/mysql.yaml.erb b/templates/mysql.yaml.erb new file mode 100644 index 00000000..76b873b0 --- /dev/null +++ b/templates/mysql.yaml.erb @@ -0,0 +1,15 @@ +init_config: + +instances: + - server: <%= @host %> + user: <%= @user %> + pass: <%= @password %> +<% if !@tags.empty? -%> + tags: +<% @tags.each do |tag| -%> + - <%= tag %> +<% end -%> +<% end -%> + options: + replication: <%= @replication %> + galera_cluster: <%= @galera_cluster %>