how to pass userdata via terraform
How do you pass the userdata to cloudbase-init via terraform? Answer... • Software Platform: VMware vSphere 7.0 Cloudbase-init Version: 1.1.4 x64 VM Template: Windows Server 2022 OVF Terraform Providers: hashicorp/vsphere, hashicorp/cloudinit • cloudbase-init-unattend.conf [DEFAULT] username=Administrator groups=Administrators inject_user_password=true config_drive_raw_hhd=false config_drive_cdrom=false config_drive_vfat=false bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\ verbose=true debug=true log_dir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\ log_file=cloudbase-init-unattend.log default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN logging_serial_port_settings= mtu_use_dhcp_config=false ntp_use_dhcp_config=false local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\ check_latest_version=false metadata_services=cloudbaseinit.metadata.services.vmwareguestinfoservice.VMwareGuestInfoService plugins=cloudbaseinit.plugins.common.userdata.UserDataPlugin allow_reboot=false stop_service_on_exit=false • cloudbase-init.conf [DEFAULT] username=Administrator groups=Administrators first_logon_behaviour=always inject_user_password=true config_drive_raw_hhd=false config_drive_cdrom=false config_drive_vfat=false bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\ verbose=true debug=true log_dir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\ log_file=cloudbase-init.log default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=WARN logging_serial_port_settings= mtu_use_dhcp_config=false ntp_use_dhcp_config=false local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\ check_latest_version=false metadata_services=cloudbaseinit.metadata.services.vmwareguestinfoservice.VMwareGuestInfoService netbios_host_name_compatibility=false • cloudinit.tf (hashicorp/cloudinit) data "cloudinit_config" "userdata" { gzip = true base64_encode = true part { filename = "userdata.yml" content_type = "text/cloud-config" content = templatefile("${path.module}/cloudinit/userdata.yml", {}) } } • vm.tf (hashicorp/vsphere, excerpt) clone { template_uuid = data.vsphere_content_library_item.content_library_item.id customize { windows_options { computer_name = local.vm.hostname workgroup = local.vm.workgroup admin_password = local.vm.admin_password time_zone = local.vm.time_zone } network_interface { ipv4_address = local.vm.ipv4_address ipv4_netmask = local.vm.ipv4_netmask } ipv4_gateway = local.vm.ipv4_gateway dns_server_list = local.vm.dns_server_list } } cdrom { client_device = true } extra_config = { "guestinfo.metadata" = base64gzip(jsonencode({ "instance-id": local.vm.hostname, })), "guestinfo.metadata.encoding" = "gzip+base64", "guestinfo.userdata" = data.cloudinit_config.userdata.rendered, "guestinfo.userdata.encoding" = "gzip+base64" }
add a comment