我有两个Google云项目:[project1]和[project2]。 [project1]有一个名为
uploadImages(req, res, (err) => {
if (err) {
console.log("Error:", err.message)
} else {
const imagesArray = req.files.map((image) => {
let imageObject = {}
imageObject.type = image.mimeType
imageObject.path = image.path
imageObject.link = image.path.replace("public", "").replace(/\\/g, "/")
imageObject.timeUploaded = Date.now()
sizeOf("public/" + imageObject.link, (err, sizes) => {
if(err) {
error(err)
} else {
success(sizes)
}
})
const error = (err) => {
console.log(err)
}
const success = (data) => {
imageObject.width = data.width
imageObject.height = data.height
console.log(imageObject)
}
return imageObject
})
db.collection("uploadtest2").insertMany(imagesArray, (err, result) => {
if (err) {
return console.log(err)
}
// db.collection("resized-images").insertMany()
console.log("something saved to the database")
})
}
})
res.redirect("/")
})```
的虚拟机实例。我想将my-vm
复制到[project2]。
因此,我创建了这个terraform文件(my-vm
):
main.tf
将其保存到新目录中。现在,运行以下命令:
provider "google" {
credentials = "${file("service-account.json")}"
project = "[project2]"
region = "us-central1"
}
这时我发现自己错过了$ terraform init
$ terraform import google_compute_instance.my-vm [project1]/us-central1-a/my-vm
Error: resource address "google_compute_instance.my-vm" does not exist in the configuration.
Before importing this resource, please create its configuration in the root module. For example:
resource "google_compute_instance" "my-vm" {
# (resource arguments)
}
语句。因此,我将其添加到resource "google_compute_instance" "my-vm"
。现在看起来像这样:
main.tf
现在,我正在运行相同的provider "google" {
credentials = "${file("service-account.json")}"
project = "[project2]"
region = "us-central1"
}
resource "google_compute_instance" "my-vm" {
}
命令agian,并且成功。一个terraform import
文件已创建。但是, terraform.tfstate
文件未更改。我原本希望在其中看到vm导入的数据,但是main.tf
是空的。奇怪...
现在,我正在运行命令resource "google_compute_instance" "my-vm"
并得到了这个信息:
plan
答案 0 :(得分:1)
Terraform当前无法为您生成配置,import
仅将数据保存到状态文件中。
当前Terraform导入的实现只能将资源导入到状态中。它不会生成配置。将来版本的Terraform也将生成配置。
因此,在运行terraform导入之前,有必要手动为资源编写资源配置块,导入的对象将被映射到该资源。
虽然这看起来很乏味,但它仍然为Terraform用户提供了导入现有资源的途径。 Terraform的未来版本将完全生成配置,从而大大简化此过程。
有一些第三方工具可以为现有资源生成Terrafrom配置:
GoogleCloudPlatform/terraformer
CLI工具可从现有基础结构(反向Terraform)生成terraform文件。
是否可以复制vm-disk,而不是vm-image?
您可以从您的VM创建instance template并将其用于创建新的VM: