我使用 salt-stack 和 pyvmomi 模块与 vCenter 通信并创建 VM。在这个新创建的虚拟机上,我想从 vCenter Datastore 复制文件(大约 1 GB)。InitiateFileTransferToGuest 可用于将文件上传到虚拟机,但我们如何将文件从数据存储复制到虚拟机?
2 回答
运行 rsync 怎么样
- ESXi 主机:启用 SSH
- 对 SSH 密钥的一些理解
如果这是一次性文件传输,您可能会跳过第一步。
为 vCenter 设置公共 SSH 密钥。ssh-keygen 在/usr/lib/vmware/openssh/bin
ssh-keygen 中找到 2 个文件~/.ssh
:id_rsa
和id_rsa.pub
ssh-keygen -f ~/.ssh/id_rsa -q -P ""
在远程主机上,如果使用 ESXi 5 或更低版本,请将公钥存储id_rsa.pub
在~/.ssh/authorized_keys
. 如果使用 ESXi 5.5 或更高版本的公钥位于其他位置,请id_rsa.pub
放入/etc/ssh/keys-<username>/authorized_keys
请注意,您可以在此文件中存储多个密钥。
要允许 root 访问,请在文件中更改PermitRootLogin no
为。要禁用密码登录,请确保和设置为。PermitRootLogin yes
/etc/ssh/sshd_config
ChallengeResponseAuthentication
PasswordAuthentication
no
重启 SSH 服务 ESXi - /etc/init.d/SSH restart
ESX -service sshd reload
现在我们已经对身份验证进行了排序,我们现在可以通过加密通道将文件复制到我们的目的地。了解 ssh 密钥的工作原理将使您的远程执行任务更加轻松,并简化部署和管理。
rsync rsync 的基本语法如下 rsync options source destination
通过 SSH 同步
一些选项 - VM 作为本地
使用 SSH 将文件从远程服务器 (ESXi) 复制到本地服务器 (VM)
rsync -avzhe ssh root@[vcentreIP]:/source_dir_to_copy/ /dest_dir_location/
使用 SSH 将文件从本地服务器 (VM) 复制到远程服务器 (ESXi)
rsync -avzhe ssh /source_dest_to_copy/ root@[vcentreIP]:/dest_dir_location/
一些选项 - ESXi 作为本地 - ESXi 默认没有安装 rsync。
使用 SSH 将文件从远程服务器 (VM) 复制到本地服务器 (ESXi)
rsync -avzhe ssh root@[VMIP]:/source_dir_to_copy/ /dest_dir_location/
使用 SSH 将文件从本地服务器 (ESXi) 复制到远程服务器 (VM)
rsync -avzhe ssh /source_dest_to_copy/ root@[VMIP]:/dest_dir_location/
另一种方式可能是您的选择。
使用与上述相同的逻辑和方法。您可以在两台机器之间生成一组密钥并使用代理启动 rsync 命令。
使用 SSH 将文件从 VM 复制到 ESXi
rsync -avzhe ssh root@[VMIP]:/source_dir_to_copy/ root@[vCentreIP]:/dest_dir_location/
使用 SSH 将文件从 ESXi 复制到 VM
rsync -avzhe ssh root@[vcentreIP]:/source_dir_to_copy/ root@[VMIP]:/dest_dir_location/
我能想到的最骇人听闻的方法是:
- 将 1GB 文件另存为 .iso {使用 MagicIso 或 linux 的内置工具}。
- 现在将文件放在数据存储中。
- 现在在创建 vm 时,您需要将 cdrom 设置为指向文件数据而不是空字符串。
- 您可以编辑 vmx 文件或在创建自身时提供 vmx 选项
ide1:0.deviceType = "cdrom-image" ide1:0.fileName = "/vmfs/volumes/5034a864-xxxxxx/data.iso" ide1:0.present = "TRUE"
- 开启来宾电源后,根据来宾的不同,您可以添加批处理/shell 以复制到其磁盘。
- 如果需要,您可以使用 Invoke-VMScript powercli cmdlet 为您执行操作 5。
干杯,zXi