クイック スタート:Azure Cloud Shell を使用して Terraform を構成するQuickstart: Configure Terraform using Azure Cloud Shell

Terraform を使用すると、クラウド インフラストラクチャの定義、プレビュー、およびデプロイを行うことができます。Terraform enables the definition, preview, and deployment of cloud infrastructure. Terraform を使用する際は、HCL 構文を使って構成ファイルを作成します。Using Terraform, you create configuration files using HCL syntax. HCL 構文では、Azure などのクラウド プロバイダーと、クラウド インフラストラクチャを構成する要素を指定できます。The HCL syntax allows you to specify the cloud provider - such as Azure - and the elements that make up your cloud infrastructure. 構成ファイルを作成したら、"実行プラン" を作成します。これにより、インフラストラクチャの変更をデプロイ前にプレビューすることができます。After you create your configuration files, you create an execution plan that allows you to preview your infrastructure changes before they're deployed. 変更を確認したら、実行プランを適用してインフラストラクチャをデプロイします。Once you verify the changes, you apply the execution plan to deploy the infrastructure.

この記事では、Azure で Terraform の使用を開始する方法について説明します。This article describes how to get started with Terraform on Azure.

この記事では、次のことについて説明します。In this article, you learn how to:

  • Azure に対して認証しますAuthenticate to Azure
  • Azure CLI を使用して Azure サービス プリンシパルを作成するCreate an Azure service principal using the Azure CLI
  • サービス プリンシパルを使用して Azure に対して認証するAuthenticate to Azure using a service principal
  • 現在の Azure サブスクリプションを設定する - 複数のサブスクリプションがある場合に使用Set the current Azure subscription - for use if you have multiple subscriptions
  • 基本の Terraform 構成ファイルを作成するCreate a base Terraform configuration file
  • Terraform 実行プランを作成して適用するCreate and apply a Terraform execution plan
  • 実行プランを破棄するReverse an execution plan

前提条件Prerequisites

  • Azure サブスクリプション: Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

環境を構成するConfigure your environment

  1. Azure ポータルにアクセスします。Browse to the Azure portal.

  2. まだログインしていない場合は、利用可能な Microsoft アカウントの一覧が Azure portal に表示されます。If you aren't already logged in, the Azure portal displays a list of available Microsoft accounts. 1 つ以上のアクティブな Azure サブスクリプションに関連付けられている Microsoft アカウントを選択し、資格情報を入力して続行します。Select a Microsoft account associated with one or more active Azure subscriptions and enter your credentials to continue.

  3. Cloud Shell を開きます。Open Cloud Shell.

    Cloud Shell へのアクセス

  4. Cloud Shell を以前に使用したことがない場合は、環境とストレージの設定を構成します。If you haven't previously used Cloud Shell, configure the environment and storage settings. この記事では、Bash 環境を使用します。This article uses the Bash environment.

:Notes:

  • Cloud Shell には、Terraform の最新バージョンが自動的にインストールされます。Cloud Shell automatically has the latest version of Terraform installed. また、Terraform は、現在の Azure サブスクリプションの情報を自動的に使用します。Also, Terraform automatically uses information from the current Azure subscription. そのため、インストールや構成は必要ありません。As a result, there's no installation or configuration required.

Azure に対して認証しますAuthenticate to Azure

Cloud Shell は、Azure portal へのログインに使用した Microsoft アカウントで自動的に認証されます。Cloud Shell is automatically authenticated under the Microsoft account you used to log into the Azure portal. お使いのアカウントに複数の Azure サブスクリプションがある場合は、他のいずれかのサブスクリプションに切り替えることができます。If your account has multiple Azure subscriptions, you can switch to one of your other subscriptions.

Terraform では、Azure に対して認証を行うためのオプションがいくつかサポートされています。Terraform supports several options for authenticating to Azure. この記事では、次の手法について説明します。The following techniques are covered in this article:

Microsoft アカウントを使用した認証Authenticate via Microsoft account

パラメーターを指定せずに az login を呼び出すと、URL とコードが表示されます。Calling az login without any parameters displays a URL and a code. URL を参照してコードを入力し、指示に従って、ご自身の Microsoft アカウントを使用して Azure にログインします。Browse to the URL, enter the code, and follow the instructions to log into Azure using your Microsoft account. ログインしたら、ポータルに戻ります。Once you're logged in, return to the portal.

az login

:Notes:

  • ログインが成功すると、az login により、ログインした Microsoft アカウントに関連付けられている Azure サブスクリプションの一覧が表示されます。Upon successful login, az login displays a list of the Azure subscriptions associated with the logged-in Microsoft account.
  • 使用可能な Azure サブスクリプションごとにプロパティの一覧が表示されます。A list of properties displays for each available Azure subscription. isDefault プロパティは、使用している Azure サブスクリプションを識別します。The isDefault property identifies which Azure subscription you're using. 別の Azure サブスクリプションに切り替える方法については、「現在の Azure サブスクリプションを設定する」セクションを参照してください。To learn how to switch to another Azure subscription, see the section, Set the current Azure subscription.

Azure サービス プリンシパルを使用した認証Authenticate via Azure service principal

Azure サービス プリンシパルを作成する:サービス プリンシパルを使用して Azure サブスクリプションにログインするには、まずサービス プリンシパルへのアクセスが必要です。Create an Azure service principal: To log into an Azure subscription using a service principal, you first need access to a service principal. サービス プリンシパルを既にお持ちの場合は、セクションのこの部分を省略できます。If you already have a service principal, you can skip this part of the section.

Azure サービスをデプロイまたは使用する自動化ツール (Terraform など) のアクセス許可は、常に制限されている必要があります。Automated tools that deploy or use Azure services - such as Terraform - should always have restricted permissions. 完全な特権を持つユーザーとしてアプリケーションをログインさせる代わりに、Azure にはサービス プリンシパルが用意されています。Instead of having applications log in as a fully privileged user, Azure offers service principals. しかし、ログインに使用するサービス プリンシパルがない場合はどうすればよいでしょうか。But, what if you don't have a service principal with which to log in? そのようなシナリオの場合、ユーザー資格情報を使用してログインしてから、サービス プリンシパルを作成できます。In that scenario, you can log in using your user credentials and then create a service principal. サービス プリンシパルが作成されると、その情報を今後のログイン試行に使用できるようになります。Once the service principal is created, you can use its information for future login attempts.

Azure CLI でサービス プリンシパルを作成するときは、多くのオプションがあります。There are many options when creating a service principal with the Azure CLI. この記事では、az ad sp create-for-rbac を作成して、共同作成者ロールを持つサービス プリンシパルを作成します。For this article, we'll create use az ad sp create-for-rbac to create a service principal with a Contributor role. 共同作成者ロール (既定) には、Azure アカウントに対して読み取りと書き込みを行うための完全なアクセス許可があります。The Contributor role (the default) has full permissions to read and write to an Azure account. ロールベースのアクセス制御 (RBAC) とロールの詳細については、RBAC の組み込みのロールに関するページをご覧ください。For more information about Role-Based Access Control (RBAC) and roles, see RBAC: Built-in roles.

次のコマンドを入力します。<subscription_id> を、使用するサブスクリプションアカウントの ID に置き換えます。Enter the following command, replacing <subscription_id> with the ID of the subscription account you want to use.

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription_id>"

:Notes:

  • 正常に完了すると、az ad sp create-for-rbac によっていくつかの値が表示されます。Upon successful completion, az ad sp create-for-rbac displays several values. namepassword、および tenant の値は、次のステップで使用します。The name, password, and tenant values are used in the next step.
  • このパスワードは、紛失した場合、取得できません。The password can't be retrieved if lost. したがって、パスワードは安全な場所に保管してください。As such, you should store your password in a safe place. パスワードを忘れた場合は、サービス プリンシパルの資格情報をリセットする必要があります。If you forget your password, you'll need to reset the service principal credentials.

Azure サービス プリンシパルを使用してログインする: 次の az login への呼び出しで、プレースホルダーをご自身のサービス プリンシパルの情報に置き換えます。Log in using an Azure service principal: In the following call to az login, replace the placeholders with the information from your service principal.

az login --service-principal -u <service_principal_name> -p "<service_principal_password>" --tenant "<service_principal_tenant>"

現在の Azure サブスクリプションを設定するSet the current Azure subscription

Microsoft アカウントは、複数の Azure サブスクリプションに関連付けることができます。A Microsoft account can be associated with multiple Azure subscriptions. 次の手順では、サブスクリプションを切り替える方法の概要を説明します。The following steps outline how you can switch between your subscriptions:

  1. 現在の Azure サブスクリプションを表示するには、az account show を使用します。To view the current Azure subscription, use az account show.

    az account show
    
  2. 複数の利用可能な Azure サブスクリプションにアクセスできる場合は、az account list を使用して、サブスクリプション名 ID の値の一覧を表示します。If you have access to multiple available Azure subscriptions, use az account list to display a list of subscription name ID values:

    az account list --query "[].{name:name, subscriptionId:id}"
    
  3. 現在の Cloud Shell セッションで特定の Azure サブスクリプションを使用するには、az account set を使用します。To use a specific Azure subscription for the current Cloud Shell session, use az account set. <subscription_id> プレースホルダーを、使用するサブスクリプションの ID (または名前) に置き換えます。Replace the <subscription_id> placeholder with the ID (or name) of the subscription you want to use:

    az account set --subscription="<subscription_id>"
    

    :Notes:

    • az account set を呼び出すと、指定した Azure サブスクリプションに切り替えた結果が表示されません。Calling az account set doesn't display the results of switching to the specified Azure subscription. ただし、az account show を使用して、現在の Azure サブスクリプションが変更されたことを確認できます。However, you can use az account show to confirm that the current Azure subscription has changed.

基本の Terraform 構成ファイルを作成するCreate a base Terraform configuration file

Terraform 構成ファイルはプロバイダーの指定から開始します。A Terraform configuration file starts off with the specification of the provider. Azure を使用する場合、provider ブロックで Azure プロバイダー (azurerm) を指定します。When using Azure, you'll specify the Azure provider (azurerm) in the provider block.

provider "azurerm" {
  version = "~>2.0"
  features {}
}

resource "azurerm_resource_group" "rg" {
  name = "<your_resource_group_name>"
  location = "<your_resource_group_location>"
}

# Your Terraform code goes here...

:Notes:

  • version 属性は省略可能ですが、HashiCorp では特定のバージョンのプロバイダーに固定することが推奨されています。While the version attribute is optional, HashiCorp recommends pinning to a given version of the provider.
  • Azure プロバイダー 1.x を使用する場合、features ブロックは許可されません。If you are using Azure provider 1.x, the features block is not allowed.
  • Azure プロバイダー 2.x を使用する場合、features ブロックは必須です。If you are using Azure provider 2.x, the features block is required.
  • azurerm_resource_groupリソース宣言 には、namelocation という 2 つの引数があります。The resource declaration of azurerm_resource_group has two arguments: name and location. プレースホルダーは、ご使用の環境の適切な値に設定してください。Set the placeholders to the appropriate values for your environment.
  • 操作方法とチュートリアルの記事全体で、リソース グループを参照するときに、リソース グループのローカルの名前付きの値である rg が使用されます。The local named value of rg for the resource group is used throughout the how-to and tutorial articles when referencing the resource group. これはリソース グループ名に依存せず、コード内の変数名のみを参照します。This is independent of the resource group name and only refers to the variable name in your code. リソース グループ定義内でこの値を変更した場合、それを参照するコードでもこれを変更する必要があります。If you change this value in the resource group definition, you'll need to also change it in the code that references it.

Terraform 実行プランを作成して適用するCreate and apply a Terraform execution plan

このセクションでは、"実行プラン" を作成し、クラウド インフラストラクチャに適用する方法について説明します。In this section, you learn how to create an execution plan and apply it to your cloud infrastructure.

  1. Terraform のデプロイを初期化するには、terraform init を実行します。To initialize the Terraform deployment, run terraform init. このコマンドによって、Azure リソース グループを作成するために必要な Azure モジュールがダウンロードされます。This command downloads the Azure modules required to create an Azure resource group.

    terraform init
    
  2. 初期化後、terraform plan を実行して、実行プランを作成します。After initialization, you create an execution plan by running terraform plan.

    terraform plan -out <terraform_plan>.tfplan
    

    注:Notes:

    • terraform plan コマンドは、実行プランを作成しますが、実行はしません。The terraform plan command creates an execution plan, but doesn't execute it. 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。Instead, it determines what actions are necessary to create the configuration specified in your configuration files. このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
    • 省略可能な -out パラメーターを使用すると、プランの出力ファイルを指定できます。The optional -out parameter allows you to specify an output file for the plan. -out パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。Using the -out parameter ensures that the plan you reviewed is exactly what is applied.
    • 実行プランの永続化とセキュリティの詳細については、「セキュリティの警告」セクションを参照してください。To read more about persisting execution plans and security, see the security warning section.
  3. クラウド インフラストラクチャに実行プランを適用する準備ができたら、terraform apply を実行します。Once you're ready to apply the execution plan to your cloud infrastructure, you run terraform apply.

    terraform apply <terraform_plan>.tfplan
    

Terraform 実行プランを破棄するReverse a Terraform execution plan

  1. 実行プランを破棄する (元に戻す) には、terraform plan を実行し、次のように destroy フラグを指定します。To reverse, or undo, the execution plan, you run terraform plan and specify the destroy flag as follows:

    terraform plan -destroy -out <terraform_plan>.destroy.tfplan
    

    注:Notes:

    • terraform plan コマンドは、実行プランを作成しますが、実行はしません。The terraform plan command creates an execution plan, but doesn't execute it. 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。Instead, it determines what actions are necessary to create the configuration specified in your configuration files. このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
    • 省略可能な -out パラメーターを使用すると、プランの出力ファイルを指定できます。The optional -out parameter allows you to specify an output file for the plan. -out パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。Using the -out parameter ensures that the plan you reviewed is exactly what is applied.
    • 実行プランの永続化とセキュリティの詳細については、「セキュリティの警告」セクションを参照してください。To read more about persisting execution plans and security, see the security warning section.
  2. terraform apply を実行して、実行プランを適用します。Run terraform apply to apply the execution plan.

    terraform apply <terraform_plan>.destroy.tfplan
    

トラブルシューティングTroubleshooting

Terraform 固有のサポートについては、HashiCorp の Terraform へのコミュニティ サポート チャネルのいずれかをご利用ください。For Terraform-specific support, use one of HashiCorp's community support channels to Terraform:

次の手順Next steps