【问题标题】:Copying file from Vcentre datastore to VM将文件从 Vcenter 数据存储复制到 VM
【发布时间】:2017-02-12 15:26:03
【问题描述】:

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

【问题讨论】:

    标签: python salt-stack vsphere vcenter pyvmomi


    【解决方案1】:

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

    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

    【讨论】:

    • 我想到的(想避免这个过程)除此之外我们还可以使用 salt-get-file 将文件从 master 复制到 minion
    • pyvmomi salt 只允许 VC 对象支持的操作。 InitiateFileTransferToGuest 是 pyvmomi 调用,用于在工具正在运行时将文件传输给来宾。但是,API 需要从 ESXi 服务器触发。您可以尝试使用 NFS 数据存储并在运行的工具上添加安装 {{mount.mounted}} 到来宾小兵
    • 请分享更多关于 NFS 和在 minion 上挂载数据点的详细信息。谢谢
    【解决方案2】:

    运行 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 ""
    

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

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

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

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

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

    同步 rsync 的基本语法如下 rsync options source destination

    通过 SSH 进行 Rsync

    一些选项 - 虚拟机作为本地

    使用 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 将文件从虚拟机复制到 ESXi

    rsync -avzhe ssh root@[VMIP]:/source_dir_to_copy/ root@[vCentreIP]:/dest_dir_location/

    使用 SSH 将文件从 ESXi 复制到虚拟机

    rsync -avzhe ssh root@[vcentreIP]:/source_dir_to_copy/ root@[VMIP]:/dest_dir_location/

    【讨论】:

      猜你喜欢
      • 2020-12-23
      • 2020-08-18
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2020-04-16
      • 2021-11-04
      • 2020-10-29
      • 2017-01-04
      相关资源
      最近更新 更多