From 13f823085ef2a280ae251b63cd630a28bc33ecc2 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Thu, 5 Jul 2012 11:34:19 +0200 Subject: [PATCH 01/12] Make puppet-lint happy on rabbitmq manifest too --- manifests/rabbitmq.pp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/manifests/rabbitmq.pp b/manifests/rabbitmq.pp index 77a1620445..81e56e27dc 100644 --- a/manifests/rabbitmq.pp +++ b/manifests/rabbitmq.pp @@ -1,12 +1,12 @@ define sensu::rabbitmq( - $ssl_cert_chain, - $ssl_private_key, - $port, - $host, - $user, - $password, - $vhost - ) { + $ssl_cert_chain, + $ssl_private_key, + $port, + $host, + $user, + $password, + $vhost + ) { if !defined(Sensu_rabbitmq_config[$::fqdn]) { if $ssl_cert_chain != '' { @@ -56,7 +56,7 @@ } } } - + sensu_rabbitmq_config { $::fqdn: port => $port, host => $host, From dda9188936c82f4531900e407af78131446c03f6 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Thu, 5 Jul 2012 15:18:22 +0200 Subject: [PATCH 02/12] Add APT packages - Adding apt/* and debian manifests to deal with APT sources. So far hardcoding Sensuapp ones as from Sensu wiki - Add init.pp to be compliant with Puppet module guidelines --- manifests/apt/key.pp | 45 +++++++++++++++++++++++++++++++++++++++++ manifests/apt/source.pp | 43 +++++++++++++++++++++++++++++++++++++++ manifests/debian.pp | 15 ++++++++++++++ manifests/init.pp | 11 ++++++++++ 4 files changed, 114 insertions(+) create mode 100644 manifests/apt/key.pp create mode 100644 manifests/apt/source.pp create mode 100644 manifests/debian.pp create mode 100644 manifests/init.pp diff --git a/manifests/apt/key.pp b/manifests/apt/key.pp new file mode 100644 index 0000000000..872740deef --- /dev/null +++ b/manifests/apt/key.pp @@ -0,0 +1,45 @@ +# +# Add/remove an apt key +# +# == Parameters: +# +# $title:: The key id +# $ensure:: "present" or "absent" +# $url:: The url of the key +# $server:: The server from which download the key +# url or server are required on ensure is "present" +# +define sensu::apt::key($ensure, $url = '', $server = '') { + + case $ensure { + + 'present': { + + if $url != '' { + exec { "apt-key_present_$title": + command => "/usr/bin/wget -O- -q '${url}' | /usr/bin/apt-key add -", + unless => "/usr/bin/apt-key list | /bin/grep -c '$title'", + } + } else { + exec { "apt-key_present_$title": + command => "/usr/bin/apt-key adv --keyserver '${server}' --recv '${title}'", + unless => "/usr/bin/apt-key list | /bin/grep -c '$title'", + } + } + + } + + 'absent': { + + exec { "apt-key_absent_$title": + command => "/usr/bin/apt-key del '$title'", + onlyif => "/usr/bin/apt-key list | /bin/grep -c '$title'", + } + + } + + default: { + fail "Invalid 'ensure' value '$ensure' for apt::key" + } + } +} diff --git a/manifests/apt/source.pp b/manifests/apt/source.pp new file mode 100644 index 0000000000..590a7a4d48 --- /dev/null +++ b/manifests/apt/source.pp @@ -0,0 +1,43 @@ + +# +# Add/remove a source +# +# == Parameters: +# +# $title:: The source name +# $ensure:: "present" or "absent" +# $content:: The content to add to source.list +# +define sensu::apt::source($ensure, $content = '') { + + $filepath = "/etc/apt/sources.list.d/${title}.list" + + case $ensure { + + 'present': { + + file { "add_apt_source_$filepath": + path => $filepath, + content => $content + } + + exec { "update_apt_source_$filepath": + command => '/usr/bin/apt-get update', + subscribe => File["add_apt_source_$filepath"], + refreshonly => true + } + + } + + 'absent': { + + file { $filepath: + ensure => absent + } + } + + default: { + fail "Invalid 'ensure' value '$ensure' for apt::source" + } + } +} diff --git a/manifests/debian.pp b/manifests/debian.pp new file mode 100644 index 0000000000..786a3a000d --- /dev/null +++ b/manifests/debian.pp @@ -0,0 +1,15 @@ + +class sensu::debian { + + sensu::apt::key { 'sensuapp': + ensure => 'present', + url => 'http://repos.sensuapp.org/apt/pubkey.gpg', + } + + sensu::apt::source { 'sensuapp': + ensure => 'present', + content => 'deb http://repos.sensuapp.org/apt sensu main', + require => Sensu::Apt::Key['sensuapp'], + } + +} diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000000..ef8faa8df3 --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,11 @@ + +class sensu { + + case $::operatingsystem { + # add apt sources + 'Debian': { include 'sensu::debian' } + 'Ubuntu': { include 'sensu::debian' } + default : {} + } + +} From a21e72e1b4ce0381791d8f2381e55ac90378a8c9 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Thu, 5 Jul 2012 15:23:57 +0200 Subject: [PATCH 03/12] Add gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..40c86706de --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +sensu.komodoproject From ad1d9a16f54a4f404975dbb8d11eacfc4d21987c Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Thu, 5 Jul 2012 16:05:55 +0200 Subject: [PATCH 04/12] Fix wrong APT Sensu name --- manifests/debian.pp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifests/debian.pp b/manifests/debian.pp index 786a3a000d..d0e808cb0b 100644 --- a/manifests/debian.pp +++ b/manifests/debian.pp @@ -1,7 +1,7 @@ class sensu::debian { - sensu::apt::key { 'sensuapp': + sensu::apt::key { 'Sensu': ensure => 'present', url => 'http://repos.sensuapp.org/apt/pubkey.gpg', } @@ -9,7 +9,7 @@ sensu::apt::source { 'sensuapp': ensure => 'present', content => 'deb http://repos.sensuapp.org/apt sensu main', - require => Sensu::Apt::Key['sensuapp'], + require => Sensu::Apt::Key['Sensu'], } } From a27c18a5087927ae00d9f168acf613f5304e08bc Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Thu, 5 Jul 2012 20:15:41 +0200 Subject: [PATCH 05/12] Cleanup init manifest, debian APT repo not mandatory anymore --- manifests/init.pp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index ef8faa8df3..722f8f4a45 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,11 +1,4 @@ class sensu { - case $::operatingsystem { - # add apt sources - 'Debian': { include 'sensu::debian' } - 'Ubuntu': { include 'sensu::debian' } - default : {} - } - } From a4909867bbd4fa34c5d5fc288a85489021d6ee8d Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Thu, 5 Jul 2012 20:20:28 +0200 Subject: [PATCH 06/12] Make APT repo not mandatory Refactored sensu::debian to be more flexible, now declaring a sensu::debian class you can remove the repository or setup the unstable repo, i.e. class { 'sensu::debian': ensure => 'absent' } class { 'sensu::debian': repo => 'unstable } --- manifests/debian.pp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/manifests/debian.pp b/manifests/debian.pp index d0e808cb0b..6460bd995a 100644 --- a/manifests/debian.pp +++ b/manifests/debian.pp @@ -1,5 +1,15 @@ - -class sensu::debian { +# +# Add APT key and repository +# +# == Parameters: +# +# $ensure:: 'present' or 'absent' +# $repo:: 'main' or 'unstable' +# +class sensu::debian ( + $ensure = 'present', + $repo = 'main' + ) { sensu::apt::key { 'Sensu': ensure => 'present', @@ -7,8 +17,8 @@ } sensu::apt::source { 'sensuapp': - ensure => 'present', - content => 'deb http://repos.sensuapp.org/apt sensu main', + ensure => $ensure, + content => "deb http://repos.sensuapp.org/apt sensu ${repo}", require => Sensu::Apt::Key['Sensu'], } From 3d40dadb59b928ba6f513eff6276f5a738ddea0e Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Mon, 9 Jul 2012 15:08:43 +0200 Subject: [PATCH 07/12] Refactor to better handle APT/YUM repositories --- manifests/debian.pp | 25 ------------------------- manifests/repo/apt.pp | 20 ++++++++++++++++++++ manifests/repo/init.pp | 28 ++++++++++++++++++++++++++++ manifests/repo/yum.pp | 0 4 files changed, 48 insertions(+), 25 deletions(-) delete mode 100644 manifests/debian.pp create mode 100644 manifests/repo/apt.pp create mode 100644 manifests/repo/init.pp create mode 100644 manifests/repo/yum.pp diff --git a/manifests/debian.pp b/manifests/debian.pp deleted file mode 100644 index 6460bd995a..0000000000 --- a/manifests/debian.pp +++ /dev/null @@ -1,25 +0,0 @@ -# -# Add APT key and repository -# -# == Parameters: -# -# $ensure:: 'present' or 'absent' -# $repo:: 'main' or 'unstable' -# -class sensu::debian ( - $ensure = 'present', - $repo = 'main' - ) { - - sensu::apt::key { 'Sensu': - ensure => 'present', - url => 'http://repos.sensuapp.org/apt/pubkey.gpg', - } - - sensu::apt::source { 'sensuapp': - ensure => $ensure, - content => "deb http://repos.sensuapp.org/apt sensu ${repo}", - require => Sensu::Apt::Key['Sensu'], - } - -} diff --git a/manifests/repo/apt.pp b/manifests/repo/apt.pp new file mode 100644 index 0000000000..99b3d29e94 --- /dev/null +++ b/manifests/repo/apt.pp @@ -0,0 +1,20 @@ +class sensu::repo::apt ( + $ensure, + $repo + ) { + + if defined?() { + apt::key { 'Sensu': + ensure => $ensure, + url => 'http://repos.sensuapp.org/apt/pubkey.gpg', + } + apt::source { 'sensuapp': + ensure => $ensure, + content => "deb http://repos.sensuapp.org/apt sensu ${repo}", + require => Apt::Key['Sensu'], + } + } else { + fail (' notice message ') + } + +} diff --git a/manifests/repo/init.pp b/manifests/repo/init.pp new file mode 100644 index 0000000000..775ff0984a --- /dev/null +++ b/manifests/repo/init.pp @@ -0,0 +1,28 @@ +# +# Add APT/YUM key and repository based on OS +# +# == Parameters: +# +# $ensure:: 'present' or 'absent' +# $repo:: 'main' or 'unstable' +# +class sensu::repo ( + $ensure = 'present', + $repo = 'main' + ) { + + case $::operatingsystem { + + 'debian|ubuntu': { + class { 'sensu::repo::apt': ensure => $ensure, repo => $repo } + } + + 'fedora|rhel|centos': { + class { 'sensu::repo::yum': ensure => $ensure, repo => $repo } + } + + default: { notify message } + + } + +} diff --git a/manifests/repo/yum.pp b/manifests/repo/yum.pp new file mode 100644 index 0000000000..e69de29bb2 From dcbcc9ca9fd1c27fdcb6b0fa9c1391fef740e91f Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Mon, 9 Jul 2012 17:03:21 +0200 Subject: [PATCH 08/12] Fix to work with puppetlabs stdlib and apt modules - Removed sensu::apt classes - Added sensu::repo class. So far it handles apt only. Manifest seems fine, but it breaks with http://repos.sensuapp.org/apt, seems that Release file for that APT repo is missing --- manifests/apt/key.pp | 45 ----------------------------- manifests/apt/source.pp | 43 --------------------------- manifests/{repo/init.pp => repo.pp} | 6 ++-- manifests/repo/apt.pp | 24 ++++++++------- 4 files changed, 16 insertions(+), 102 deletions(-) delete mode 100644 manifests/apt/key.pp delete mode 100644 manifests/apt/source.pp rename manifests/{repo/init.pp => repo.pp} (77%) diff --git a/manifests/apt/key.pp b/manifests/apt/key.pp deleted file mode 100644 index 872740deef..0000000000 --- a/manifests/apt/key.pp +++ /dev/null @@ -1,45 +0,0 @@ -# -# Add/remove an apt key -# -# == Parameters: -# -# $title:: The key id -# $ensure:: "present" or "absent" -# $url:: The url of the key -# $server:: The server from which download the key -# url or server are required on ensure is "present" -# -define sensu::apt::key($ensure, $url = '', $server = '') { - - case $ensure { - - 'present': { - - if $url != '' { - exec { "apt-key_present_$title": - command => "/usr/bin/wget -O- -q '${url}' | /usr/bin/apt-key add -", - unless => "/usr/bin/apt-key list | /bin/grep -c '$title'", - } - } else { - exec { "apt-key_present_$title": - command => "/usr/bin/apt-key adv --keyserver '${server}' --recv '${title}'", - unless => "/usr/bin/apt-key list | /bin/grep -c '$title'", - } - } - - } - - 'absent': { - - exec { "apt-key_absent_$title": - command => "/usr/bin/apt-key del '$title'", - onlyif => "/usr/bin/apt-key list | /bin/grep -c '$title'", - } - - } - - default: { - fail "Invalid 'ensure' value '$ensure' for apt::key" - } - } -} diff --git a/manifests/apt/source.pp b/manifests/apt/source.pp deleted file mode 100644 index 590a7a4d48..0000000000 --- a/manifests/apt/source.pp +++ /dev/null @@ -1,43 +0,0 @@ - -# -# Add/remove a source -# -# == Parameters: -# -# $title:: The source name -# $ensure:: "present" or "absent" -# $content:: The content to add to source.list -# -define sensu::apt::source($ensure, $content = '') { - - $filepath = "/etc/apt/sources.list.d/${title}.list" - - case $ensure { - - 'present': { - - file { "add_apt_source_$filepath": - path => $filepath, - content => $content - } - - exec { "update_apt_source_$filepath": - command => '/usr/bin/apt-get update', - subscribe => File["add_apt_source_$filepath"], - refreshonly => true - } - - } - - 'absent': { - - file { $filepath: - ensure => absent - } - } - - default: { - fail "Invalid 'ensure' value '$ensure' for apt::source" - } - } -} diff --git a/manifests/repo/init.pp b/manifests/repo.pp similarity index 77% rename from manifests/repo/init.pp rename to manifests/repo.pp index 775ff0984a..07fb4f7c42 100644 --- a/manifests/repo/init.pp +++ b/manifests/repo.pp @@ -13,15 +13,15 @@ case $::operatingsystem { - 'debian|ubuntu': { + 'Debian','Ubuntu': { class { 'sensu::repo::apt': ensure => $ensure, repo => $repo } } - 'fedora|rhel|centos': { + 'Fedora','Rhel','Centos': { class { 'sensu::repo::yum': ensure => $ensure, repo => $repo } } - default: { notify message } + default: { alert("$::operatingsystem not supported yet") } } diff --git a/manifests/repo/apt.pp b/manifests/repo/apt.pp index 99b3d29e94..988923de5c 100644 --- a/manifests/repo/apt.pp +++ b/manifests/repo/apt.pp @@ -3,18 +3,20 @@ $repo ) { - if defined?() { - apt::key { 'Sensu': - ensure => $ensure, - url => 'http://repos.sensuapp.org/apt/pubkey.gpg', + if defined(apt::source) and defined(apt::key) { + + apt::source { 'sensu': + ensure => $ensure, + location => 'http://repos.sensuapp.org/apt', + release => 'sensu', + repos => $repo, } - apt::source { 'sensuapp': - ensure => $ensure, - content => "deb http://repos.sensuapp.org/apt sensu ${repo}", - require => Apt::Key['Sensu'], + + apt::key { 'sensu': + key => '7580C77F', + key_source => 'http://repos.sensuapp.org/apt/pubkey.gpg', } - } else { - fail (' notice message ') - } + + } else { fail('This class requires puppet-apt module') } } From e205f8cd69dc524dd7ad8366fa01580c45baf7e0 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Mon, 9 Jul 2012 17:39:22 +0200 Subject: [PATCH 09/12] Add yum.pp placeholder to test with StackHammer --- manifests/repo/yum.pp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/manifests/repo/yum.pp b/manifests/repo/yum.pp index e69de29bb2..2c7319e43d 100644 --- a/manifests/repo/yum.pp +++ b/manifests/repo/yum.pp @@ -0,0 +1,6 @@ +class sensu::repo::yum ( + $ensure, + $repo + ) { + +} From 2ad0e8fdb8d45302304c1a932bdc18208b4fafa1 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Tue, 10 Jul 2012 11:53:31 +0200 Subject: [PATCH 10/12] Add yum.pp missing logic to handle yum repo --- manifests/repo/yum.pp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/manifests/repo/yum.pp b/manifests/repo/yum.pp index 2c7319e43d..9c847bdd06 100644 --- a/manifests/repo/yum.pp +++ b/manifests/repo/yum.pp @@ -3,4 +3,16 @@ $repo ) { + $enabled = $ensure ? { + 'present' => 1, + default => 'absent' + } + + yumrepo { 'sensu': + enabled => $enabled, + baseurl => 'http://repos.sensuapp.org/yum/el/$releasever/$basearch/', + gpgcheck => 0, + name => "sensu-${repo}", + } + } From de39b608c645da4b55f36d85b0cb77b3e9652df4 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Tue, 10 Jul 2012 16:26:55 +0200 Subject: [PATCH 11/12] Fix apt repo removing default deb-src line --- manifests/repo/apt.pp | 1 + 1 file changed, 1 insertion(+) diff --git a/manifests/repo/apt.pp b/manifests/repo/apt.pp index 988923de5c..216d37b209 100644 --- a/manifests/repo/apt.pp +++ b/manifests/repo/apt.pp @@ -10,6 +10,7 @@ location => 'http://repos.sensuapp.org/apt', release => 'sensu', repos => $repo, + include_src => false, } apt::key { 'sensu': From 42f89086cd9ef8d76619c6bbbd143e7d92bb9b01 Mon Sep 17 00:00:00 2001 From: Alexander Fortin Date: Tue, 10 Jul 2012 16:28:41 +0200 Subject: [PATCH 12/12] Cleanup to make linter happy --- manifests/repo/apt.pp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/manifests/repo/apt.pp b/manifests/repo/apt.pp index 216d37b209..77e905d431 100644 --- a/manifests/repo/apt.pp +++ b/manifests/repo/apt.pp @@ -6,16 +6,16 @@ if defined(apt::source) and defined(apt::key) { apt::source { 'sensu': - ensure => $ensure, - location => 'http://repos.sensuapp.org/apt', - release => 'sensu', - repos => $repo, + ensure => $ensure, + location => 'http://repos.sensuapp.org/apt', + release => 'sensu', + repos => $repo, include_src => false, } apt::key { 'sensu': - key => '7580C77F', - key_source => 'http://repos.sensuapp.org/apt/pubkey.gpg', + key => '7580C77F', + key_source => 'http://repos.sensuapp.org/apt/pubkey.gpg', } } else { fail('This class requires puppet-apt module') }