使用Cloudinit创建Azure VM的Terraform

4
尝试使用cloudinit创建VM但一直没有成功。在terraform文档中没有提供有用的信息如何在Azure上实现。发现了这个帖子并尝试做同样的事情:
Using cloud-init on an Azure VM to mount a data disk fails
同时也尝试了Terraform文档:
https://www.terraform.io/docs/providers/template/d/cloudinit_config.html
每次尝试时都会收到以下错误:
此处不应有名为"cloud_init_template"的参数。
或者
此处不应有名为"user_data_base64"的参数。

包含相关代码的代码块:

provider "azurerm" {

    version = "2.2.0"
    features{}

}
#############################
# Cloud config configuration#
#############################
data "template_file" "cloudconfig" {
  template = file("${path.module}/cloud-init.tpl")

  vars  {
   timezone = var.timezone
   password = data.azurerm_key_vault_secret.vaultsecret.value
   tpot_flavor = var.tpot_flavor
   web_user = var.web_user
   web_password = var.web_password
  }
}

data "template_cloudinit_config" "config" {
  gzip          = true
  base64_encode = true

  part {
    content_type = "text/cloud-config"
    content      = data.template_file.cloudconfig.rendered
  }
}

module "azure-vms" {

    source = "./modules/azure-vms"
    tpot_hostname = "${var.name}-Tpot"
    location = azurerm_resource_group.rg.location
    rg-name = azurerm_resource_group.rg.name
    admin_password = data.azurerm_key_vault_secret.vaultsecret.value
     cloud_init_template = data.template_cloudinit_config.config.rendered

}

我也尝试了使用user_data_base64相同的方法。
出现了相同的错误信息。 如果有人知道在Azure上正确部署带有cloudinit的虚拟机的方法,我将不胜感激。


也尝试使用“custom_data选项”,结果相同。 - Nimo
在进一步探索后,我终于在文档中找到了解决方案。所需选项是custom_data。但尽管一切都已部署好,云初始化并没有按照预期执行... - Nimo
1
对于这个错误,它意味着您的VM模块中缺少custom_data = var.cloud_init_template。既然您已经解决了这个问题,您可以发布您的答案来关闭这个问题。如果您有新的问题,您需要请求一个新的线程。 - Nancy Xiong
1
你能分享一下你的cloud-init文件,以展示你想要为虚拟机提供什么吗?也许问题就是由它引起的。 - Charles Xu
你还在解决这个问题吗?我没有看到任何更新。如果你不再解决这个问题,那么请添加答案以显示解决方案或者直接删除它。 - Charles Xu
经过尝试,我可以确认在配置了如上所示的云初始化属性后,只需在VM资源提供程序中使用custom_data: cloud_init_template = data.template_cloudinit_config.config.rendered,它将在VM上运行云初始化。此外,重要的是要验证部署的发行版是否支持Azure平台上的云初始化。 - Nimo
2个回答

0

在VM资源提供程序中正确使用云配置的方法是:

cloud_init_template = data.template_cloudinit_config.config.rendered


0

你没有按照正确的方式使用云配置。

cloud_init_template=data.template_cloudinit_config.config.rendered

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接