diff --git a/apt/manifests/init.pp b/apt/manifests/init.pp index a5b9b35..6a5c39c 100644 --- a/apt/manifests/init.pp +++ b/apt/manifests/init.pp @@ -7,6 +7,12 @@ class apt { group => root, } + exec { "apt-get-update": + path => "/bin:/usr/bin:/sbin:/usr/sbin", + command => "apt-get update", + refreshonly => true, + } + } @@ -124,3 +130,78 @@ define apt::package($ensure, $source) { } } + + +# Add apt key. +# +# === Parameters +# +# $name: +# Key id. +# $keyserver: +# Name of keyserver. +# +# === Sample usage +# +# apt::key { "886DDD89": +# keyserver => "keys.gnupg.net", +# } +# +define apt::key($keyserver) { + + include apt + + exec { "apt-key-add": + environment => $http_proxy ? { + "" => undef, + default => "http_proxy=${http_proxy}", + }, + path => "/bin:/usr/bin:/sbin:/usr/sbin", + command => "apt-key adv --keyserver ${keyserver} --recv ${name}", + unless => "apt-key list | grep '\\b${name}\\b'", + notify => Exec["apt-get-update"], + } + +} + + +# Add apt repository. +# +# === Parameters +# +# $name: +# Repository name. +# $source: +# Repository URL. +# $dist: +# Distribution name. Defaults to $lsbdistcodename. +# $components +# Repository components. Defaults to "main". +# +# === Sample usage +# +# apt::repo { "deb.torproject.org": +# source => "http://deb.torproject.org/torproject.org", +# require => Apt::Key["886DDD89"], +# } +# +define apt::repo($source, $dist="", $components="main") { + + if $dist { + $dist_real = $dist + } else { + $dist_real = $lsbdistcodename + } + + include apt + + file { "/etc/apt/sources.list.d/${name}.list": + ensure => present, + mode => 0644, + owner => root, + group => root, + content => "deb ${source} ${dist_real} ${components}\ndeb-src ${source} ${dist_real} ${components}\n", + notify => Exec["apt-get-update"], + } + +}