我使用salt-stack和pyvmomi模块与vcenter通信并创建VM。在这个新创建的VM上,我想从vcenter Datastore复制文件(大约1 GB)。 InitiateFileTransferToGuest可用于将文件上传到VM,但我们如何将文件从数据存储区复制到vm?
答案 0 :(得分:0)
我能想到的最黑的方式是:
ide1:0.deviceType = "cdrom-image" ide1:0.fileName = "/vmfs/volumes/5034a864-xxxxxx/data.iso" ide1:0.present = "TRUE"
干杯, ZXI
答案 1 :(得分:0)
运行rsync
怎么样?如果这是一次性文件传输,您可以跳过第一步。
为vCentre设置公共SSH密钥。
ssh-keygen位于/usr/lib/vmware/openssh/bin
ssh-keygen在~/.ssh
生成2个文件:id_rsa
和id_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
。
要禁用密码登录,请确保ChallengeResponseAuthentication
和PasswordAuthentication
设置为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/