我想在Windows 2019上的Azure中构建一个大文件的图像。该文件包含创建映像所需的工件。一切都很顺利,直到我试图将一个200MB的文件复制到主机上。这需要11个小时。就在那时,我发现了WinRM和它的文件复制限制。
然后我发现了http_directory参数,可以通过http将文件复制到主机,但这在azure-arm构建器中不可用。
然后我看到我可以使用SSH。问题是我不能从ssh提供程序开始,然后切换到WinRM提供程序来运行我的ps1配置脚本。我读到我可以从ssh开始,拍摄一个图像,然后用WinRM启动它。不是最理想的。
我偶然发现了这个软件:"https://github.com/winfsp/sshfs-win"-但是我不知道有什么方法可以让一个被配置的主机直接访问它被配置的打包器主机。
我遇到了winrmcp,但它看起来很旧,如果我能弄清楚如何使它运行起来,它不太可能工作。
我倾向于blob存储,但这似乎是逃避。
启动Windows 2019服务器,复制200MB文件并运行ps1脚本的最佳方法是什么?
您可以尝试使用Ansible provider复制您的文件。它要快得多。当我复制一个10MB的文件时,文件提供程序花了大约4分钟,而Ansible提供程序只花了15秒。
封隔器文件:
source "azure-arm" "example" {
use_azure_cli_auth = true
os_type = "Windows"
communicator = "winrm"
image_offer = "WindowsServer"
image_publisher = "MicrosoftWindowsServer"
image_sku = "2016-Datacenter"
managed_image_name = "image"
managed_image_resource_group_name = "rg"
location = "westeurope"
vm_size = "Standard_D2_v2"
winrm_insecure = true
winrm_timeout = "5m"
winrm_use_ssl = true
winrm_username = "packer"
}
build {
sources = ["sources.azure-arm.example"]
provisioner "ansible" {
playbook_file = "./copy.yml"
extra_arguments = [
"-e", "ansible_winrm_server_cert_validation=ignore",
"-e", "ansible_winrm_transport=ntlm"
]
user = "packer"
use_proxy = false
}
}
Ansible playbook - copy.yml:
---
- name: Copy file to Windows host
hosts: all
tasks:
- name: Copy file
win_copy:
src: ./10MB.bin
dest: C:10MB.bin