Installare e configurare la bonifica per il provisioning delle risorse di AzureInstall and configure Terraform to provision Azure resources

Terraform offre un modo semplice per definire, visualizzare in anteprima e distribuire l'infrastruttura cloud usando un linguaggio di creazione modelli semplice.Terraform provides an easy way to define, preview, and deploy cloud infrastructure by using a simple templating language. Questo articolo descrive la procedura da seguire per usare Terraform per effettuare il provisioning di risorse in Azure.This article describes the necessary steps to use Terraform to provision resources in Azure.

Per altre informazioni su come usare Terraform con Azure, visitare l'hub di Terraform.To learn more about how to use Terraform with Azure, visit the Terraform Hub.

Usare Azure Cloud ShellUse Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Per avviare Azure Cloud Shell:To start Azure Cloud Shell:

OpzioneOption Esempio/CollegamentoExample/Link
Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo superiore destro del portale di Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Avviare Cloud Shell.Start Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.Select the Copy button on a code block to copy the code.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Premere INVIO per eseguire il codice.Select Enter to run the code.

Terraform viene installato per impostazione predefinita in Cloud Shell.Terraform is installed by default in the Cloud Shell. Se si sceglie di installare Terraform in locale, completare il passaggio successivo; in caso contrario, passare a Configurare l'accesso di Terraform in Azure.If you choose to install Terraform locally, complete the next step, otherwise continue to Set up Terraform access to Azure.

Installazione di TerraformInstall Terraform

Per installare Terraform, scaricare il pacchetto appropriato per il sistema operativo in uso in una directory di installazione distinta.To install Terraform, download the appropriate package for your operating system into a separate install directory. Il download contiene un singolo file eseguibile, per cui è anche necessario definire un percorso globale.The download contains a single executable file, for which you should also define a global path. Per istruzioni su come impostare il percorso in Mac e Linux, vedere questa pagina Web.For instructions on how to set the path on Linux and Mac, go to this webpage. Per istruzioni su come impostare il percorso in Windows, vedere questa pagina Web.For instructions on how to set the path on Windows, go to this webpage.

Per verificare la configurazione del percorso, usare il comando terraform.Verify your path configuration with the terraform command. Viene visualizzato un elenco delle opzioni Terraform disponibili, come nell'output di esempio di seguito:A list of available Terraform options is shown, as in the following example output:

azureuser@Azure:~$ terraform
Usage: terraform [--version] [--help] <command> [args]

Impostazione dell'accesso di Terraform in AzureSet up Terraform access to Azure

Per consentire a Terraform di eseguire il provisioning di risorse in Azure, creare un'entità servizio di Azure AD.To enable Terraform to provision resources into Azure, create an Azure AD service principal. L'entità servizio concede agli script Terraform la possibilità di effettuare il provisioning di risorse nella sottoscrizione di Azure.The service principal grants your Terraform scripts to provision resources in your Azure subscription.

Se si hanno più sottoscrizioni di Azure, eseguire prima una query sull'account con AZ account list per ottenere un elenco di valori ID sottoscrizione e ID tenant:If you have multiple Azure subscriptions, first query your account with az account list to get a list of subscription ID and tenant ID values:

az account list --query "[].{name:name, subscriptionId:id, tenantId:tenantId}"

Per usare una sottoscrizione selezionata, impostare la sottoscrizione per questa sessione con az account set.To use a selected subscription, set the subscription for this session with az account set. Impostare laSUBSCRIPTION_ID variabile di ambiente che conterrà il valore del campo restituitoid dalla sottoscrizione che si intende usare:Set the SUBSCRIPTION_ID environment variable to hold the value of the returned id field from the subscription you want to use:

az account set --subscription="${SUBSCRIPTION_ID}"

A questo punto è possibile creare un'entità servizio per l'uso con Terraform.Now you can create a service principal for use with Terraform. Usare az ad sp create-for-rbac e impostare l'ambito alla sottoscrizione come indicato di seguito:Use az ad sp create-for-rbac, and set the scope to your subscription as follows:

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/${SUBSCRIPTION_ID}"

Vengono restituiti i valori appId, password, sp_name e tenant.Your appId, password, sp_name, and tenant are returned. Prendere nota di appId e password.Make a note of the appId and password.

Configurare le variabili di ambiente di TerraformConfigure Terraform environment variables

Per configurare Terraform per l'uso dell'entità servizio di Azure AD, impostare le variabili di ambiente seguenti che saranno quindi usate dai moduli Terraform per Azure.To configure Terraform to use your Azure AD service principal, set the following environment variables, which are then used by the Azure Terraform modules. È anche possibile impostare l'ambiente se si usa un cloud di Azure diverso da Azure pubblico.You can also set the environment if working with an Azure cloud other than Azure public.

  • ARM_SUBSCRIPTION_ID
  • ARM_CLIENT_ID
  • ARM_CLIENT_SECRET
  • ARM_TENANT_ID
  • ARM_ENVIRONMENT

Di seguito è riportato uno script della shell di esempio che è possibile usare per impostare tali variabili:You can use the following sample shell script to set those variables:

#!/bin/sh
echo "Setting environment variables for Terraform"
export ARM_SUBSCRIPTION_ID=your_subscription_id
export ARM_CLIENT_ID=your_appId
export ARM_CLIENT_SECRET=your_password
export ARM_TENANT_ID=your_tenant_id

# Not needed for public, required for usgovernment, german, china
export ARM_ENVIRONMENT=public

Eseguire uno script di esempioRun a sample script

Creare un file test.tf in una directory vuota e incollare al suo interno lo script seguente.Create a file test.tf in an empty directory and paste in the following script.

provider "azurerm" {
}
resource "azurerm_resource_group" "rg" {
        name = "testResourceGroup"
        location = "westus"
}

Salvare il file e quindi inizializzare la distribuzione di Terraform.Save the file and then initialize the Terraform deployment. Questo passaggio scarica i moduli di Azure necessari per creare un gruppo di risorse di Azure.This step downloads the Azure modules required to create an Azure resource group.

terraform init

L'output è simile all'esempio seguente:The output is similar to the following example:

* provider.azurerm: version = "~> 0.3"

Terraform has been successfully initialized!

È possibile visualizzare in anteprima le azioni da completare dallo script di Terraform con terraform plan.You can preview the actions to be completed by the Terraform script with terraform plan. Quando si è pronti per creare il gruppo di risorse, applicare il piano Terraform come indicato di seguito:When ready to create the resource group, apply your Terraform plan as follows:

terraform apply

L'output è simile all'esempio seguente:The output is similar to the following example:

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  + azurerm_resource_group.rg
      id:       <computed>
      location: "westus"
      name:     "testResourceGroup"
      tags.%:   <computed>

azurerm_resource_group.rg: Creating...
  location: "" => "westus"
  name:     "" => "testResourceGroup"
  tags.%:   "" => "<computed>"
azurerm_resource_group.rg: Creation complete after 1s

Passaggi successiviNext steps

In questo articolo, viene installato Terraform o usato Cloud Shell per configurare le credenziali di Azure e iniziare la creazione di risorse nella sottoscrizione di Azure.In this article, you installed Terraform or used the Cloud Shell to configure Azure credentials and start creating resources in your Azure subscription. Per creare una distribuzione più completa di Terraform in Azure, vedere l'articolo seguente:To create a more complete Terraform deployment in Azure, see the following article: