私は同じことに関して多くの問題を見てきました。 しかし、テストキッチン(https://github.com/test-kitchen/winrm-transport)が同じランリストのWindowsマシンにファイルをコピーする速度を比較すると、これは解決できる問題のようです。 私の場合、パッカーのコピーには1時間近くかかりますが、テストキッチンでは5分未満で完了します。 これは私には貧弱な実装のように思えます。 私は可能な限りの方法で助けたいと思います。 これにより、Windowsのビルドが非常に遅くなり、小さな変更をテストすると、エンジニアリング時間が無駄になりすぎます。
参照: https :
私は、パッカーが料理本をコピーするシェフソロプロビジョナーステップで「ハング」することに気づきました。 3秒ごとに1つのファイルをコピーしているように見えます。 この操作中にEC2インスタンスにログインし、ファイル数が実際にゆっくりと増加していることを確認しました。
関連するログ出力の要点:
https://gist.github.com/JCapriotti/4ecfe4a1e20fcbd879161086b0815861
残念ながら、約13のクックブックに依存しており、これによりビルドに約45分が追加されます。 ファイルをコピーするためだけに!
WinRM Windowsビルドの高速化を検討している場合は、ファイルプロビジョナーを使用して、シェフソロプロビジョナーが実行される前にすべてのクックブックをzipファイルにコピーし、 remote_cookbook_paths
を指定することで、この問題を回避できます。 このようなものが私のビルド時間を劇的にスピードアップしました:
"provisioners": [
{
"type": "file",
"source": "berks-cookbooks.zip",
"destination": "c:\\temp\\"
},
{
"type": "powershell",
"inline": [
"Expand-Archive -LiteralPath c:\\temp\\berks-cookbooks.zip -DestinationPath C:\\temp"
]
},
{
"type": "chef-solo",
"version": "15.3.14",
"chef_license": "accept",
"guest_os_type": "windows",
"remote_cookbook_paths": [
"c:/temp/berks-cookbooks"
],
"run_list": "{{user `ami_run_list`}}",
}
}
winRMの優先順位を下げても問題ありませんが、これは機能強化ではなくパフォーマンスのバグであるはずです。 焼き時間は、平均的なサイズの料理本のリストでさえ耐えられません。 私たちのものは<3Mbですが、アップロードには25分かかります!
最も参考になるコメント
WinRM Windowsビルドの高速化を検討している場合は、ファイルプロビジョナーを使用して、シェフソロプロビジョナーが実行される前にすべてのクックブックをzipファイルにコピーし、
remote_cookbook_paths
を指定することで、この問題を回避できます。 このようなものが私のビルド時間を劇的にスピードアップしました: