将文件从Vcentre数据存储区复制到VM

时间:2016-10-04 12:44:27

标签: python salt-stack vsphere vcenter pyvmomi

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

2 个答案:

答案 0 :(得分:0)

我能想到的最黑的方式是:

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

答案 1 :(得分:0)

运行rsync

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

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

为vCentre设置公共SSH密钥。 ssh-keygen位于/usr/lib/vmware/openssh/bin ssh-keygen在~/.ssh生成2个文件:id_rsaid_rsa.pub

ssh-keygen -f ~/.ssh/id_rsa -q -P ""

在远程主机上,存储公钥 如果在id_rsa.pub中使用ESXi 5或更低版本~/.ssh/authorized_keys。 如果使用ESXi 5.5或更高版本的公钥位于其他位置,请将id_rsa.pub放入/etc/ssh/keys-<username>/authorized_keys

作为备注,您可以在此文件中存储多个密钥。

要允许root访问权限,请在PermitRootLogin no文件中将PermitRootLogin yes更改为/etc/ssh/sshd_config。 要禁用密码登录,请确保ChallengeResponseAuthenticationPasswordAuthentication设置为no

重新启动SSH服务 ESXi - /etc/init.d/SSH restart ESX - service sshd reload

现在我们已对身份验证进行了排序,现在我们可以通过加密通道将文件复制到目的地。 了解ssh密钥的工作方式将使您的远程执行任务变得更加容易,并简化部署和管理。

的Rsync rsync的基本语法如下:rsync options source destination

通过SSH进行Rsync

一些选项 - 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/