我正试图通过在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密钥登录。但不管怎样,这些东西帮助了我。