今回はTerraformを使ってAWSの東京リージョンにEC2インスタンスを起動してみたので、その方法と手順について備忘録としてまとめました。AWSのコンソール画面は定期的に更新されるため、実際の画面と異なる場合があります。添付している画面は2023/03/19時点のものになります。作成したインスタンスの確認リソースの削除まとめ参考TerraformとはTerraformとはコードを使ってインフラを構築・変更・管理するためのツールです。Azureなどのクラウドプロバイダー、Docker、GitHubといった様々なサービスのインフラをコードベースで管理することができます。呼ばれる独自の構文を使用してインフラの構成を記述します。HCLは人間が読み書きしやすく、構成ファイルをテキストエディタで編集できるため、簡単にバージョン管理することができるという特徴を持ちます。TerraformチュートリアルAWSのアカウント登録AWSのアカウントを持っていない方はまずはアカウント登録を行なってください。AWSアカウント登録IAMユーザーの作成TerraformからAWSを操作するためのIAMユーザーを作成します。Management)ユーザーとは、AWS上で特定のタスクに対する権限を持つユーザーのことです。IAMユーザーを使用することで、必要なタスクに対して必要な権限のみを与えることができます。これによりAWSのリソースへのアクセスを制限し、AWSアカウントのセキュリティを向上させることができます。AWSの検索窓に「IAM」と入力し、「IAM」を選択します。左のメニューから「ユーザー」を選択し、「ユーザーを追加」をクリックします。ユーザー名(今回はterraform_demo)を入力し、「次へ」をクリックします。「ポリシーを直接アタッチする」を選択し、「AdministratorAccess」にチェックを入れ「次へ」をクリックします。ポリシーをアタッチするとは、AWSのリソース(ストレージやデータベースなど)にアクセスする際に、そのアクセス権限を設定することを意味します。AdministratorAccessは、AWSの管理者レベルの権限を持つIAMユーザーに対して付与されるIAMポリシーの1つです。このポリシーを持つIAMユーザーは、AWSアカウント内のあらゆるリソースにアクセスできます。EC2インスタンスの起動や停止、S3バケットの作成や削除、IAMユーザーの作成や削除など、あらゆるAWSサービスやリソースを管理することができます。確認ページに遷移するため、「ユーザーの作成」をクリックします。したユーザー(terraform_demo)をクリックします。「セキュリティ認証情報」タブを選択します。「アクセスキーを作成」をクリックします。「コマンドラインインターフェイス(CLI)」を選択し、「上記のレコメンデーションを理解し、アクセスキーを作成します。」にチェックを入れ、「次へ」をクリックします。「アクセスキーを作成」をクリックしますアクセスキーが記載されたcsvファイルをダウンロードし、「完了」をクリックします。tfenvのインストール次にtfenvをインストールします。tfenvとはTerraformのバージョンマネージャーで、tfenvを用いることでTerraformのバージョンをCLIで切り替えることができるようになります。list-remoteコマンドでインストール可能なTerraformのバージョンを確認します。この中から自分が使いたいバージョンを選択しインストールします。list-remote1.4.21.4.11.4.0...0.2.00.1.10.1.0最新の安定バージョンをインストールしたいため、今回はlatestを指定します。2023/03/19時点ではv1.4.2がインストールされました。useコマンドでデフォルトで使用するバージョンを指定します。versionコマンドを使用し、インストール済みバージョンとデフォルトで使用しているバージョンを確認することができます。useにインストールしたバージョンを指定することで、Terraformのデフォルトバージョンを切り替えることができます。v1.4.1を使用する場合、以下のような手順になります。Interface)をインストールします。CLIとはAWSのサービスをコマンドラインから操作するためのツールです。CLIを使用することで、AWSコンソールを使用することなくAWSのリソースを管理することができるようになります。次にTerraformで使用するプロファイルを作成します。SDKなどのAWSツールで使用される認証情報を管理するための方法です。プロファイルは、AWSのアクセスキーとシークレットキーを保存し、AWSサービスにアクセスするための認証情報を提供します。[None]:リージョンは東京リージョンの「ap-northeast-1」を指定しています。プロファイルが正しく作成されたか、catコマンドを使用して確認します。Key>catコマンドはファイルの内容をターミナルに表示するためによく使われます。今回は最小限の構成として東京リージョンにEC2インスタンスを立ち上げてみます。作業用のディレクトリを作成します。terraform_demoTerraformの構成ファイルを作成します。1.0.0"}terraformブロックは、Terraform構成を定義するために使用されます。この場合、必要なTerraformバージョンが少なくとも1.0.0であることを指定しています。required_providersブロックは、この構成に必要なプロバイダを指定するために使用されます。今回はAWSを指定しています。source属性は、プロバイダのソースを指定し、この場合はHashiCorpの公式awsプロバイダを指定しています。version属性は、使用するプロバイダのバージョンを指定しています。~>オペレータは、3.0.0以上、4.0.0未満のプロバイダのバージョンが許可されることを意味します。全体として、この構成ファイルにより、AWSプロバイダがTerraformで使用できるようにインストールされ、Terraformの最小バージョンが満たされるようになります。Providerの構成ファイルを作成します。}}regionでリソースを作成するリージョンを指定します。今回は東京リージョンであるap-northeast-1を指定しています。profileでAWSプロファイル名を指定します。ここでは先ほど作成したterraformを指定します。default_tagsでは、この構成を使用して作成されるリソースにデフォルトのタグを設定します。タグの名前はManagedで、値はterraformを設定しています。続いてEC2インスタンスの構成ファイルを作成します。}}aws_instanceリソースタイプは、AWSのEC2インスタンスを作成するために使用されます。demoという名前のリソースが作成されます。amiパラメータは、EC2インスタンスを起動するために使用するAmazonマシンイメージ(AMI)のIDを指定します。ami-0404778e217f54308が使用されます。instance_typeパラメータは、起動するEC2インスタンスのインスタンスタイプを指定します。この例では、t3.microが使用されます。tagsパラメータは、EC2インスタンスに適用するタグを指定します。この例では、タグの名前がNameで、値がtf_demoになります。ここまでのファイル構成を確認すると以下のようになっているはずです。fmtを実行することでコードの整形を行なってくれるため、このタイミングで実行しておきます。applyを順番に実行していきます。initはTerraformの初期化処理を行います。このコマンドはTerraformが必要とするプラグインやモジュールをダウンロードするために使用されます。planはTerraformの実行計画を作成します。このコマンドは現在のインフラストラクチャの状態と定義されたコードの状態を比較し、どのような変更が必要かを示します。value:の入力欄には「yes」を入力します。applyは実際にインフラストラクチャを変更するために使用されます。planコマンドで作成された計画を使用して、リソースを作成・更新・削除を実行します。作成したインスタンスの確認AWSコンソールのEC2ページからインスタンスが作成されていることが確認できます。showコマンドでもインスタンス情報を確認できます。}}リソースの削除AWSの利用料が発生してしまうためリソースを削除します。コマンドで削除されるリソースを確認します。destroyコマンドを実行し、リソースを削除します。destroyed.AWSコンソールのEC2ページで作成したリソースが削除されたことを確認します。参考terraformtfenv今回はTerraformを使ってAWSの東京リージョンにEC2インスタンスを起動してみました。今回は最小限の構成でリソースを作成してみましたが、今後は様々な構成にチャレンジしてみたいと思います。Copil...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。