Para o seu exemplo específico, sugiro usar o directory
e link
recursos, de preferência a descartar:
directory "/vol/webserver/cert" do
user "ubuntu"
group "ubuntu"
end
link "/vol/webserver/cert/server.crt" do
to "/etc/ssl/certs/ssl-cert-snakeoil.pem"
end
link "/vol/webserver/cert/server.key" do
to "/etc/ssl/certs/ssl-cert-snakeoil.key"
end
Você não precisa guardá-los com not_if
e notificar - se o diretório e os links já existirem com os atributos corretos, o Chef não fará nada.
Por outro lado, digamos que você queira usar o certificado e a chave snakeoil se nada estiver lá para começar, mas não faça nada se os arquivos já existirem. Nesse caso, eu usaria not_if
nos recursos do link:
directory "/vol/webserver/cert" do
user "ubuntu"
group "ubuntu"
end
link "/vol/webserver/cert/server.crt" do
to "/etc/ssl/certs/ssl-cert-snakeoil.pem"
not_if "test -e /vol/webserver/cert/server.crt"
end
link "/vol/webserver/cert/server.key" do
to "/etc/ssl/certs/ssl-cert-snakeoil.key"
not_if "test -e /vol/webserver/cert/server.key"
end
Comparado a uma sequência de recursos execute
, isso comunica a intenção com mais clareza - diz que um diretório precisa existir (com o usuário e grupo corretos) e que alguns links simbólicos devem ser criados a menos que algo já esteja presente .
Por fim, se você tiver vários comandos de shell relacionados que precisam ser executados juntos, considere o uso do recurso script
.