Este é geralmente o método que eu uso, especialmente se o comando que você executar resultar em um arquivo sendo criado como um efeito colateral. Por exemplo, desabilitar ou habilitar sites no pacote apache2 do Debian remove ou cria links em /etc/apache2
que você pode testar usando File.exists?
.
Um truque é definir um atributo após a execução do recurso de execução:
if !node["did_test"]
execute "test" do
command "touch /tmp/foo"
end
end
ruby_block "did_test" do
block do
node.normal["did_test"] = true
end
end
Observe que ainda é possível que o recurso de execução seja executado duas vezes em algumas situações, portanto, essa técnica não é perfeita, mas agora você pode usar a pesquisa de faca para determinar quais nós realizaram a execução.