Eu tenho a seguinte classe e definição em fantoche:
$certDirectory = "/var/lib/ssl/certs"
class openssl {
package { "openssl":
ensure => latest
}
file { "openssl":
path => "/var/lib/ssl",
ensure => directory,
mode => 0644
}
file { "openssl-certs":
path => "/var/lib/ssl/certs",
ensure => directory,
mode => 0644
}
define cert($ensure = present) {
$certfile = "${certDirectory}/${name}.cert"
$keyfile = "${certDirectory}/${name}.key"
$pemfile = "${certDirectory}/${name}.pem"
file { "${name}.cert":
path => $certfile,
source => "puppet:///openssl/${name}.cert",
mode => 0640,
ensure => $ensure,
}
file { "${name}.key":
path => $keyfile,
source => "puppet:///openssl/${name}.key",
mode => 0640,
ensure => $ensure,
}
}
}
Estou mais tarde (em um nó) usando este openssl :: cert para passar um certificado para uma configuração do vache do apache:
openssl::cert { "rri":
ensure=>present
}
apache2::site-config { "default":
ip => "*",
order => "000",
docroot => '/home/support/public_html',
cert => Openssl::Cert["rri"]
}
E dentro do apache2 :: site-config, defina:
file { "site-config-$name":
path => "/etc/apache2/sites-available/$name",
owner => root,
group => root,
mode => 0644,
content => template($template),
notify => Exec["reload-apache2"],
}
A pergunta que estou tendo - como posso referenciar o $certfile
/ $keyfile
da variável cert no arquivo .erb localizado em $ template?
Eu também ficaria muito interessado em saber se eu estou me aproximando disso da maneira errada também - é a primeira vez que tento configurar algo usando o fantoche e apenas tentando brincar com o que eu posso fazer.
ATUALIZADO - Semi trabalhando agora
Com base na resposta do freiheit - fiz algumas alterações no meu apache2 :: site-config
define site-config (
$ensure = 'present',
$template = 'apache2/vhost.erb',
$docroot,
$ip='*',
$order='000',
$logs = "",
$cert = false) {
if $cert {
File["site-config-$name"] { require=>Openssl::Cert[$cert] }
$certfile = "${openssl::certDirectory}/${cert}.cert"
$keyfile = "${openssl::certDirectory}/${cert}.key"
}
file { "site-config-$name":
path => "/etc/apache2/sites-available/$name",
owner => root,
group => root,
mode => 0644,
content => template($template),
notify => Exec["reload-apache2"],
}
Então no .erb
SSLCertificateFile <%= certfile %>
SSLCertificateKeyFile <%= keyfile %>
Isso parece estar funcionando razoavelmente bem - eu estava esperando que, caso eu alterasse as convenções de nomenclatura do certificado em algum momento, eu conseguisse acessar os nomes de arquivos reais da referência ao recurso Openssl :: Cert . Ainda curioso para saber se existe uma maneira de fazer isso.