diff --git a/quickstart/101-vm-cluster-linux/main.tf b/quickstart/101-vm-cluster-linux/main.tf index eac733d0c..06200241e 100644 --- a/quickstart/101-vm-cluster-linux/main.tf +++ b/quickstart/101-vm-cluster-linux/main.tf @@ -101,7 +101,7 @@ resource "azurerm_linux_virtual_machine" "test" { } admin_ssh_key { - username = coalesce(var.username, "azureuser") + username = var.username public_key = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey } @@ -112,7 +112,7 @@ resource "azurerm_linux_virtual_machine" "test" { } computer_name = "hostname" - admin_username = coalesce(var.username, "azureuser") + admin_username = var.username } resource "azurerm_managed_disk" "test" { diff --git a/quickstart/101-vm-cluster-linux/ssh.tf b/quickstart/101-vm-cluster-linux/ssh.tf index 6e142ef3d..b7a8a2e51 100644 --- a/quickstart/101-vm-cluster-linux/ssh.tf +++ b/quickstart/101-vm-cluster-linux/ssh.tf @@ -3,23 +3,22 @@ resource "random_pet" "ssh_key_name" { separator = "" } -resource "azapi_resource" "ssh_public_key" { - type = "Microsoft.Compute/sshPublicKeys@2022-11-01" - name = random_pet.ssh_key_name.id - location = "westus3" - parent_id = azurerm_resource_group.rg.id -} - resource "azapi_resource_action" "ssh_public_key_gen" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" resource_id = azapi_resource.ssh_public_key.id action = "generateKeyPair" method = "POST" - response_export_values = ["publicKey"] + response_export_values = ["publicKey", "privateKey"] +} + +resource "azapi_resource" "ssh_public_key" { + type = "Microsoft.Compute/sshPublicKeys@2022-11-01" + name = random_pet.ssh_key_name.id + location = azurerm_resource_group.rg.location + parent_id = azurerm_resource_group.rg.id } output "key_data" { - value = azapi_resource.ssh_public_key.body - sensitive = true + value = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey } \ No newline at end of file diff --git a/quickstart/101-vm-with-infrastructure/main.tf b/quickstart/101-vm-with-infrastructure/main.tf index f2bda180a..e8c273924 100644 --- a/quickstart/101-vm-with-infrastructure/main.tf +++ b/quickstart/101-vm-with-infrastructure/main.tf @@ -89,12 +89,6 @@ resource "azurerm_storage_account" "my_storage_account" { account_replication_type = "LRS" } -# Create (and display) an SSH key -resource "tls_private_key" "example_ssh" { - algorithm = "RSA" - rsa_bits = 4096 -} - # Create virtual machine resource "azurerm_linux_virtual_machine" "my_terraform_vm" { name = "myVM" @@ -116,13 +110,12 @@ resource "azurerm_linux_virtual_machine" "my_terraform_vm" { version = "latest" } - computer_name = "myvm" - admin_username = "azureuser" - disable_password_authentication = true + computer_name = "hostname" + admin_username = var.username admin_ssh_key { - username = "azureuser" - public_key = tls_private_key.example_ssh.public_key_openssh + username = var.username + public_key = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey } boot_diagnostics { diff --git a/quickstart/101-vm-with-infrastructure/outputs.tf b/quickstart/101-vm-with-infrastructure/outputs.tf index 545f6482d..f7d0c3184 100644 --- a/quickstart/101-vm-with-infrastructure/outputs.tf +++ b/quickstart/101-vm-with-infrastructure/outputs.tf @@ -4,9 +4,4 @@ output "resource_group_name" { output "public_ip_address" { value = azurerm_linux_virtual_machine.my_terraform_vm.public_ip_address -} - -output "tls_private_key" { - value = tls_private_key.example_ssh.private_key_pem - sensitive = true } \ No newline at end of file diff --git a/quickstart/101-vm-with-infrastructure/providers.tf b/quickstart/101-vm-with-infrastructure/providers.tf index 0234a678a..93ab88197 100644 --- a/quickstart/101-vm-with-infrastructure/providers.tf +++ b/quickstart/101-vm-with-infrastructure/providers.tf @@ -2,6 +2,10 @@ terraform { required_version = ">=0.12" required_providers { + azapi = { + source = "azure/azapi" + version = "~>1.5" + } azurerm = { source = "hashicorp/azurerm" version = "~>2.0" @@ -10,10 +14,6 @@ terraform { source = "hashicorp/random" version = "~>3.0" } - tls = { - source = "hashicorp/tls" - version = "~>4.0" - } } } diff --git a/quickstart/101-vm-with-infrastructure/readme.md b/quickstart/101-vm-with-infrastructure/readme.md index 138ead5fd..7973fa52c 100644 --- a/quickstart/101-vm-with-infrastructure/readme.md +++ b/quickstart/101-vm-with-infrastructure/readme.md @@ -15,8 +15,9 @@ This template deploys a Linux virtual machine (VM) with infrastructure that incl - [azurerm_network_interface_security_group_association](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_interface_security_group_association) - [random_id](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id) - [azurerm_storage_account](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account) -- [tls_private_key](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/resources/private_key) - [azurerm_linux_virtual_machine](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/linux_virtual_machine) +- [azapi_resource](https://registry.terraform.io/providers/Azure/azapi/latest/docs/resources/azapi_resource) +- [azapi_resource_action](https://registry.terraform.io/providers/Azure/azapi/latest/docs/resources/azapi_resource_action) ## Variables @@ -24,7 +25,8 @@ This template deploys a Linux virtual machine (VM) with infrastructure that incl |---|---|---| | `resource_group_name_prefix` | Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription. | rg | | `resource_group_location` | Location of the resource group. | eastus | +| `username` | The username for the local account that will be created on the new VM. | azureadmin | ## Example -To see how to run this example, see [Quickstart: Configure a Linux virtual machine in Azure using Terraform](https://docs.microsoft.com/azure/developer/terraform/create-linux-virtual-machine-with-infrastructure). +To see how to run this example, see [Quickstart: Configure a Linux virtual machine in Azure using Terraform](https://learn.microsoft.com/azure/virtual-machines/linux/quick-create-terraform). \ No newline at end of file diff --git a/quickstart/101-vm-with-infrastructure/ssh.tf b/quickstart/101-vm-with-infrastructure/ssh.tf new file mode 100644 index 000000000..b7a8a2e51 --- /dev/null +++ b/quickstart/101-vm-with-infrastructure/ssh.tf @@ -0,0 +1,24 @@ +resource "random_pet" "ssh_key_name" { + prefix = "ssh" + separator = "" +} + +resource "azapi_resource_action" "ssh_public_key_gen" { + type = "Microsoft.Compute/sshPublicKeys@2022-11-01" + resource_id = azapi_resource.ssh_public_key.id + action = "generateKeyPair" + method = "POST" + + response_export_values = ["publicKey", "privateKey"] +} + +resource "azapi_resource" "ssh_public_key" { + type = "Microsoft.Compute/sshPublicKeys@2022-11-01" + name = random_pet.ssh_key_name.id + location = azurerm_resource_group.rg.location + parent_id = azurerm_resource_group.rg.id +} + +output "key_data" { + value = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey +} \ No newline at end of file diff --git a/quickstart/101-vm-with-infrastructure/variables.tf b/quickstart/101-vm-with-infrastructure/variables.tf index 1a8c6abba..04589aaee 100644 --- a/quickstart/101-vm-with-infrastructure/variables.tf +++ b/quickstart/101-vm-with-infrastructure/variables.tf @@ -8,4 +8,10 @@ variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." +} + +variable "username" { + type = string + description = "The username for the local account that will be created on the new VM." + default = "azureadmin" } \ No newline at end of file diff --git a/quickstart/201-k8s-cluster-with-tf-and-aks/main.tf b/quickstart/201-k8s-cluster-with-tf-and-aks/main.tf index 9de93e36a..014d7b129 100644 --- a/quickstart/201-k8s-cluster-with-tf-and-aks/main.tf +++ b/quickstart/201-k8s-cluster-with-tf-and-aks/main.tf @@ -32,7 +32,7 @@ resource "azurerm_kubernetes_cluster" "k8s" { node_count = var.node_count } linux_profile { - admin_username = "ubuntu" + admin_username = var.username ssh_key { key_data = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey diff --git a/quickstart/201-k8s-cluster-with-tf-and-aks/readme.md b/quickstart/201-k8s-cluster-with-tf-and-aks/readme.md index 3d5d0a7e6..0468de645 100644 --- a/quickstart/201-k8s-cluster-with-tf-and-aks/readme.md +++ b/quickstart/201-k8s-cluster-with-tf-and-aks/readme.md @@ -22,6 +22,7 @@ This template provisions an [AKS / Azure Kubernetes service (also known as a Man | `resource_group_location` | Location of the resource group. | eastus | | `node_count` | Initial number of nodes which should exist in this Node Pool. Value must be between 1 and 1000. | 3 | | `msi_id` | The Managed Service Identity ID. Set this value if you're running this example using Managed Identity as the authentication method. | null | +| `username` | The username for the new cluster. | azureadmin | ## Example diff --git a/quickstart/201-k8s-cluster-with-tf-and-aks/ssh.tf b/quickstart/201-k8s-cluster-with-tf-and-aks/ssh.tf index 6e142ef3d..b7a8a2e51 100644 --- a/quickstart/201-k8s-cluster-with-tf-and-aks/ssh.tf +++ b/quickstart/201-k8s-cluster-with-tf-and-aks/ssh.tf @@ -3,23 +3,22 @@ resource "random_pet" "ssh_key_name" { separator = "" } -resource "azapi_resource" "ssh_public_key" { - type = "Microsoft.Compute/sshPublicKeys@2022-11-01" - name = random_pet.ssh_key_name.id - location = "westus3" - parent_id = azurerm_resource_group.rg.id -} - resource "azapi_resource_action" "ssh_public_key_gen" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" resource_id = azapi_resource.ssh_public_key.id action = "generateKeyPair" method = "POST" - response_export_values = ["publicKey"] + response_export_values = ["publicKey", "privateKey"] +} + +resource "azapi_resource" "ssh_public_key" { + type = "Microsoft.Compute/sshPublicKeys@2022-11-01" + name = random_pet.ssh_key_name.id + location = azurerm_resource_group.rg.location + parent_id = azurerm_resource_group.rg.id } output "key_data" { - value = azapi_resource.ssh_public_key.body - sensitive = true + value = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey } \ No newline at end of file diff --git a/quickstart/201-k8s-cluster-with-tf-and-aks/variables.tf b/quickstart/201-k8s-cluster-with-tf-and-aks/variables.tf index 019c4d25b..1eada683a 100644 --- a/quickstart/201-k8s-cluster-with-tf-and-aks/variables.tf +++ b/quickstart/201-k8s-cluster-with-tf-and-aks/variables.tf @@ -20,4 +20,10 @@ variable "msi_id" { type = string description = "The Managed Service Identity ID. Set this value if you're running this example using Managed Identity as the authentication method." default = null +} + +variable "username" { + type = string + description = "The admin username for the new cluster." + default = "azureadmin" } \ No newline at end of file