1

我使用 salt-stack 和 pyvmomi 模块与 vCenter 通信并创建 VM。在这个新创建的虚拟机上,我想从 vCenter Datastore 复制文件(大约 1 GB)。InitiateFileTransferToGuest 可用于将文件上传到虚拟机,但我们如何将文件从数据存储复制到虚拟机?

4

2 回答 2

0

运行 rsync 怎么样

  • ESXi 主机:启用 SSH
  • 对 SSH 密钥的一些理解

如果这是一次性文件传输,您可能会跳过第一步。

为 vCenter 设置公共 SSH 密钥。ssh-keygen 在/usr/lib/vmware/openssh/bin ssh-keygen 中找到 2 个文件~/.sshid_rsaid_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_configChallengeResponseAuthenticationPasswordAuthenticationno

重启 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/

于 2016-12-05T22:04:00.127 回答
0

我能想到的最骇人听闻的方法是:

  1. 将 1GB 文件另存为 .iso {使用 MagicIso 或 linux 的内置工具}。
  2. 现在将文件放在数据存储中。
  3. 现在在创建 vm 时,您需要将 cdrom 设置为指向文件数据而不是空字符串。
  4. 您可以编辑 vmx 文件或在创建自身时提供 vmx 选项
  ide1:0.deviceType = "cdrom-image"
    ide1:0.fileName = "/vmfs/volumes/5034a864-xxxxxx/data.iso"
    ide1:0.present = "TRUE"
  1. 开启来宾电源后,根据来宾的不同,您可以添加批处理/shell 以复制到其磁盘。
  2. 如果需要,您可以使用 Invoke-VMScript powercli cmdlet 为您执行操作 5。

干杯,zXi

于 2016-10-10T12:39:08.150 回答