この記事では、Terraformを使用してEC2インスタンスを作成する方法を説明します。先に進む前に、TerraformとAWSEC2インスタンスの基本に精通していることを前提としています。 AWSコンソールからEC2インスタンスを作成する方法を学びたい場合は、ここをクリックしてください。
- Terraformの基本的な理解。
- システムにインストールされているTerraform。
- AWSアカウント(アカウントがない場合は作成します)。
- AWSIAMユーザーの「access_key」と「secret_key」。 (AWSで「access_key」と「secret_key」を使用してIAMユーザーを作成する方法については、ここをクリックしてください)
私たちが行うこと
- EC2インスタンスを作成するためのTerraform構成ファイルを作成します。
- Terraform構成ファイルを使用してEC2を作成します。
- Terraformを使用して作成されたEC2インスタンスを削除します。
Terraform構成ファイルを書き込んでEC2インスタンスを作成します
テラフォーム構成ファイルを作成できる専用ディレクトリを作成します。
次のコマンドを使用してディレクトリを作成し、現在の作業ディレクトリをそのディレクトリに変更します。
mkdir terraform
cd terraform/
私はファイルを書き込むためのエディターとして「vim」を使用しています。選択したエディターを使用して、次の構成をコピーして貼り付け、variables.tf、terraform.tfvars、main.tfを作成できます
AWSへのEC2の作成を担当する「main.tf」を作成します。このmain.tfは、variables.tfおよびterraform.tfvarsから変数の値を読み取ります。
vim main.tf
provider "aws" { access_key = "${var.access_key}" secret_key = "${var.secret_key}" region = "eu-west-3" } resource "aws_instance" "ec2_instance" { ami = "${var.ami_id}" count = "${var.number_of_instances}" subnet_id = "${var.subnet_id}" instance_type = "${var.instance_type}" key_name = "${var.ami_key_pair_name}" }
指定した以外のリージョンにインスタンスを作成する場合は、「region」の値を変更してください。
変数の宣言と定義を含む「variables.tf」を作成します。
vim variables.tf
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "instance_name" { description = "Name of the instance to be created" default = "test" } variable "instance_type" { default = "t2.micro" } variable "subnet_id" { description = "The VPC subnet the instance(s) will be created in" default = "subnet-a5a72ce8" } variable "ami_id" { description = "The AMI to use" default = "ami-096b8af6e7e8fb927" } variable "number_of_instances" { description = "number of instances to be created" default = 1 } variable "ami_key_pair_name" { default = "tomcat" }
'variables.tf'を作成したら、変数に割り当てられた値を変更することを忘れないでください。 ami_key_pair_name、ami_id、subnet_idは私の環境に固有のものであるため、これらを変更する必要があります。残りの変数はそのままにしておくことができます。
上記のファイルで定義されたaccess_key変数とsecret_key変数の定義を含む「terraform.tfvars」を作成します。これら2つの変数の宣言は、「terraform.tfvars」ファイルに保存されています。
次のキーは、IAMユーザーのキーで変更する必要があります。
vim terraform.tfvars
access_key = "AKIAQ6GAIA5XIHHM2GJM" secret_key = "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"
これで、3つのファイル、つまり、variables.tf、terraform.tfvars、およびmain.tfが必要になります
Terraform構成ファイルを使用してEC2インスタンスを作成します
次のコマンドを実行する前に、有効なaccess_keyとsecret_keyが構成されていることを確認してください。
使用する最初のコマンドは「terraforminit」です。このコマンドは、構成内で使用されるプロバイダーのプラグインをダウンロードしてインストールします。私たちの場合はAWSです。
terraform init
使用する2番目のコマンドは「テラフォームプラン」です。このコマンドは、インフラストラクチャで行われる変更を確認するために使用されます。
terraform plan
'terraform apply'コマンドは、main.tfファイルに記載されているAWSにリソースを作成します。リソースを作成するための入力を入力するように求められます。
terraform apply
上記のコマンドを実行すると、1つの新しいリソースが追加され、0が出力で破棄されていることがわかります。
AWS EC2コンソールに移動して、EC2インスタンスが作成されているかどうかを確認できます。
Terraformを使用して作成されたEC2インスタンスを削除します
main.tfファイルに記載されている構成を使用して作成したリソースが不要になった場合は、「terraformdestroy」コマンドを使用してそれらのリソースをすべて削除できます。
terraform destroy
結論
この記事では、選択したリージョンでEC2インスタンスを作成する手順を説明しました。インスタンスを削除する方法も確認しました。