terraform配置文件中的Cloudinit文件不工作



我正试图通过在terraform配置文件中传递cloudinit文件来运行它。地形应用命令可创建所有资源。但是当我启动虚拟机时,在虚拟机中看不到cloudinit的任何更改。

以下是扩展名为.tpl的Cloudinit文件:

users:
- name: ansible
gecos: Ansible
sudo: ALL=(ALL) NOPASSWD:ALL
groups: [users, admin]
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1.......

这是主.tf文件:

data "template_file" "users_data" {
template = file("./sshPass.tpl")
}
data "template_cloudinit_config" "config" {
gzip          = true
base64_encode = true
part {
content_type = "text/cloud-config"
content      = data.template_file.users_data.rendered
}
resource "azurerm_linux_virtual_machine" "poc-vm" {

name                  = var.vm_name
resource_group_name   = azurerm_resource_group.poc_rg.name
location              = azurerm_resource_group.poc_rg.location
size                  = var.virtual_machine_size
admin_username        = var.vm_username
network_interface_ids = [azurerm_network_interface.poc_nic_1.id]
admin_ssh_key {
username   = var.vm_username
public_key = tls_private_key.poc_key.public_key_openssh
}
os_disk {
caching              = var.disk_caching
storage_account_type = var.storage_type
}
source_image_reference {
publisher = var.image_publisher
offer     = var.image_offer
sku       = var.image_sku
version   = var.image_version
}
user_data = data.template_cloudinit_config.config.rendered
}

试试这个:

data "template_cloudinit_config" "config" {
gzip          = true
base64_encode = true
part {
content_type = "text/cloud-config"
content      = "${data.template_file.users_data.rendered}"
}

在这个例子中,我将这条线content = data.template_file.users_data.rendered改为这条content = "${data.template_file.users_data.rendered}"

希望这能有所帮助!

发现错误。已将扩展名更改为".cfg."。添加了"custom_data"而不是"user_data"。在文件的第一行添加了"#cloud-config"。确保我删除了ssh密钥末尾的所有空格。而且还觉得我一直在使用错误的ssh密钥登录。但不管怎样,这些东西帮助了我。

最新更新