Télécharger un fichier depuis SVN à l'aide de Chef sous Windows
-
21-12-2019 - |
Question
J'ai du mal à convaincre le chef de télécharger un fichier que je dois utiliser dans une recette à partir d'un serveur 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
Voici le résultat de l’exécution chef-client :
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
La ligne 12 est "subversion" télécharger le programme d'installation "do".Ce n'est pas une sortie très utile - je n'ai aucune idée de ce qui se passe sous le capot ici.Il ne télécharge le fichier nulle part sur mon système – le répertoire de destination est vide.
L'exécution de cette commande fonctionne correctement :
svn export -r HEAD http://svnrepourl/path/to/installer.msi --username username --password password C:\chef-repo\cookbooks\common\files
Il télécharge avec succès le fichier depuis le serveur et le place dans la destination.Maintenant, je peux simplement écrire cette commande dans un bloc d'exécution, mais j'aimerais le faire à la manière de Chef.Comment puis-je télécharger un fichier spécifique à partir d’un dépôt SVN sous Windows ?
La solution
On dirait qu'il s'agit d'un bug dans Chef, documenté ici.
Pour comprendre cela, j'ai couru chef-client -l debug > log.txt
, ce qui m'a amené à ces lignes :
[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
On dirait que la ressource Chef subversion nécessite un répertoire vide comme destination (la destination que j'ai spécifiée dans l'OP contient un seul dossier).Notez que c'est pas le cas avec la commande svn shell - j'ai réussi à exporter vers un répertoire non vide avec elle.
À ce stade, je vais simplement utiliser une ressource d'exécution pour récupérer le fichier dont j'ai besoin et j'espère qu'Opscode parviendra à corriger ce bug de longue date.
Un merci spécial à la communauté IRC de Chef.