[英]Create a new VM by attaching an existing disk using Node.js client library for Google Compute Engine APIs
我正在使用Google Compute Engine API的Node.js客戶端庫,通過將現有磁盤附加到該虛擬機來創建新的VM。 但是我得到Invalid value for field 'resource.disks[0].source': ''. Source url of disk is missing.
的Invalid value for field 'resource.disks[0].source': ''. Source url of disk is missing.
Invalid value for field 'resource.disks[0].source': ''. Source url of disk is missing.
在以下代碼下運行時出錯。 有人可以幫忙嗎? 提前致謝!
const createVM = () => {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const zone = compute.zone('us-central1-f');
let disk;
const diskName = 'debian-http-disk';
const vmName = 'debian-http'
let vm;
disk = zone.disk(diskName);
zone
.createVM(vmName, {
disks: [disk],
http: true,
machineType: 'f1-micro'
})
.then((data) => {
vm = data[0];
const operation = data[1];
return operation.promise();
})
.then(() => {
console.log('vm created successfully');
})
.catch((e) => {
console.error(e);
});
};
我知道您請求了nodejs庫解決方案,但這將同時起作用。
const exec = require('child-process-promise').exec;
var create_vm = (zone, vmname, diskname) => {
const cmd = `gcloud compute instances create ${vmname} ` +
`--zone=${zone} ` +
`--disk=name=${diskname}`
return exec(cmd);
};
create_vm('us-central1-c', 'my-instance', 'some-disk-in-us-central1-c')
.then(console.log)
.catch(console.error);
當然,您也可以通過這種方式創建啟動盤並根據需要添加任意數量的選項。 有關創建實例的選項,請參見此處 。
負責管理GCE API的Node.js客戶端庫的有用人員認識到https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Zone#createVM上的文檔不正確。 我通過將原始JSON傳遞到zone.createVM方法來完成這項工作,如下所示:
zone.createVM('debian-http', {
disks: [{
boot: true,
source: 'https://www.googleapis.com/compute/v1/projects/[project-id]/zones/us-central1-f/disks/debian-http'
}],
http: true,
machineType: 'f1-micro'
})
可以在https://cloud.google.com/compute/docs/reference/rest/v1/instances/insert中找到disks屬性的更多配置選項。 有關該錯誤的更多信息,請參見https://github.com/googleapis/nodejs-compute/issues/107 。 希望這對別人有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.