Pergunta

Estou tendo problemas para fazer com que o chef baixe um arquivo que preciso usar em uma receita de um servidor SVN.

subversion "download installer" do
  repository "http://svnrepourl/path/to/installer.msi"
  revision "HEAD"
  destination "C:\\chef-repo\\cookbooks\\common\\files"
  action :export
  svn_username "username"
  svn_password "password"
end

Aqui está o resultado da execução chef-cliente:

Compiling Cookbooks...
Converging 1 resources
Recipe: common::svntest
  * subversion[download installer] action export[2014-01-09T14:41:42-05:00] INFO
: Processing subversion[download installer] action export (common::svntest line
12)
 (up to date)
[2014-01-09T14:41:42-05:00] INFO: Chef Run complete in 1.482104 seconds
[2014-01-09T14:41:42-05:00] INFO: Running report handlers
[2014-01-09T14:41:42-05:00] INFO: Report handlers complete
Chef Client finished, 0 resources updated

A linha 12 é "subversion "download installer" do".Resultado não muito útil - não tenho ideia do que está acontecendo aqui.Ele não baixa o arquivo em nenhum lugar do meu sistema - o diretório de destino está vazio.

Executar este comando funciona bem:

svn export -r HEAD http://svnrepourl/path/to/installer.msi --username username --password password C:\chef-repo\cookbooks\common\files

Ele baixa com êxito o arquivo do servidor e o coloca no destino.Agora, posso simplesmente escrever este comando em um bloco de execução, mas gostaria de fazer isso do jeito do Chef.Como posso baixar um arquivo específico de um repositório SVN no Windows?

Foi útil?

Solução

Parece que isso é um bug no Chef, documentado aqui.

Para descobrir isso eu corri chef-client -l debug > log.txt, o que me levou a estas linhas:

[2014-01-10T09:35:00-05:00] INFO: Processing subversion[download installer] action export (common::svntest line 12)
[2014-01-10T09:35:00-05:00] DEBUG: subversion[download installer] export destination C:\chef-repo\cookbooks\common\files already exists or is a non-empty directory - nothing to do

Parece que o recurso Subversion do Chef requer um diretório vazio como destino (o destino que especifiquei no OP contém uma única pasta).Observe que isso é não o caso do comando svn shell - consegui exportar com sucesso para um diretório não vazio com ele.

Neste ponto, vou simplesmente usar um recurso de execução para obter o arquivo que preciso e esperar que o Opscode consiga corrigir esse bug de longa data.

Agradecimentos especiais à comunidade IRC do Chef.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top