この記事では、RDSMySqlインスタンスを作成する方法を説明します。先に進む前に、TerraformとAWSRDSサービスの基本に精通していることを前提としています。 AWSコンソールからRDSMySqlインスタンスを作成する方法を学びたい場合は、「AWSでRDS MySql(リレーショナルデータベースMySql)インスタンスをセットアップする方法」を検索してください
前提条件
- Terraformの基本的な理解。
- システムにインストールされているTerraform。
- AWSアカウント(アカウントがない場合は作成します)。
- AWSIAMユーザーの「access_key」と「secret_key」。 (AWSで「access_key」と「secret_key」を使用してIAMユーザーを作成する方法については、ここをクリックしてください)
何をするか
- RDSMySqlインスタンスのTerraform構成ファイルを記述します。
- Terraform構成ファイルを使用してRDSMySqlインスタンスを作成します。
- Terraformを使用して作成されたRDSMySqlインスタンスを削除します。
RDSMySqlインスタンスのTerraform構成ファイルを記述します。
テラフォーム構成ファイルを作成できる専用ディレクトリを作成します。
次のコマンドを使用してディレクトリを作成し、現在の作業ディレクトリをそのディレクトリに変更します。
mkdir terraform
cd terraform /
ファイルに書き込むためのエディターとして「vim」を使用しています。選択したエディターを使用し、次の構成をコピーして貼り付けて、variables.tf、terraformを作成できます。 tfvarsとmain.tf。
AWSでRDSMySqlを作成する「main.tf」を作成します。このmain.tfは、variables.tfおよびterraform.tfvarsから変数の値を読み取ります。
vim main.tf
provider "aws" { region = "${var.region}" access_key = "${var.access_key}" secret_key = "${var.secret_key}" } resource "aws_db_instance" "default" { depends_on = ["aws_security_group.default"] identifier = "${var.identifier}" allocated_storage = "${var.storage}" engine = "${var.engine}" engine_version = "${lookup(var.engine_version, var.engine)}" instance_class = "${var.instance_class}" name = "${var.db_name}" username = "${var.username}" password = "${var.password}" vpc_security_group_ids = ["${aws_security_group.default.id}"] db_subnet_group_name = "${aws_db_subnet_group.default.id}" skip_final_snapshot = "true" } resource "aws_db_subnet_group" "default" { name = "main_subnet_group" description = "Our main group of subnets" subnet_ids = ["${aws_subnet.subnet_1.id}", "${aws_subnet.subnet_2.id}"] } resource "aws_subnet" "subnet_1" { vpc_id = "${var.vpc_id}" cidr_block = "${var.subnet_1_cidr}" availability_zone = "${var.az_1}" tags = { Name = "main_subnet1" } } resource "aws_subnet" "subnet_2" { vpc_id = "${var.vpc_id}" cidr_block = "${var.subnet_2_cidr}" availability_zone = "${var.az_2}" tags = { Name = "main_subnet2" } } resource "aws_security_group" "default" { name = "main_rds_sg" description = "Allow all inbound traffic" vpc_id = "${var.vpc_id}" ingress { from_port = 0 to_port = 65535 protocol = "TCP" cidr_blocks = ["${var.cidr_blocks}"] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } tags = { Name = "${var.sg_name}" } }
変数の宣言と定義を含む'variables.tf'を作成します。
vim変数.tf
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "region" { description = "Region of AWS VPC" } variable "identifier" { default = "mydb-rds" description = "Identifier for your DB" } variable "storage" { default = "10" description = "Storage size in GB" } variable "engine" { default = "mysql" description = "Engine type, here it is mysql" } variable "engine_version" { description = "Engine version" default = { mysql = "5.7.21" } } variable "instance_class" { default = "db.t2.micro" description = "Instance class" } variable "db_name" { default = "myfirstdb" description = "db name" } variable "username" { default = "rahul" description = "User name" } variable "password" { description = "password, provide through your ENV variables" default = "rahul1234" } variable "subnet_1_cidr" { default = "172.31.48.0/20" description = "Your AZ" } variable "subnet_2_cidr" { default = "172.31.64.0/20" description = "Your AZ" } variable "az_1" { default = "eu-west-3c" description = "Your Az1, use AWS CLI to find your account specific" } variable "az_2" { default = "eu-west-3a" description = "Your Az2, use AWS CLI to find your account specific" } variable "vpc_id" { description = "Your VPC ID" default = "vpc-be1010d7" } variable "cidr_blocks" { default = "0.0.0.0/0" description = "CIDR for sg" } variable "sg_name" { default = "my-rds-sg" description = "Tag Name for sg" }
'variables.tf'を作成したら、変数に割り当てられた値を変更することを忘れないでください。強調表示されている値は私の環境に固有のものであるため、変更する必要があります。残りの変数はそのままにしておくことができます。
上記のファイルで定義されたaccess_key変数とsecret_key変数の定義を含む「terraform.tfvars」を作成します。これらの2つの変数の宣言は、「terraform.tfvars」ファイルの「region」とともに保持されています。指定した以外のリージョンにインスタンスを作成する場合は、「region」の値を変更してください。
次のキーは、IAMユーザーのキーで変更する必要があります。
vim terraform.tfvars
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
これで、3つのファイル、つまり、variables.tf、terraform.tfvars、main.tfが必要になります
Terraform構成ファイルを使用してRDSMySqlインスタンスを作成します
次のコマンドを実行する前に、有効なaccess_keyとsecret_keyが構成されていることを確認してください。
最初に使用するコマンドは「terraforminit」です。このコマンドは、構成内で使用されるプロバイダーのプラグインをダウンロードしてインストールします。私たちの場合はAWSです。
terraform init
使用する2番目のコマンドは「terraformplan」です。このコマンドは、インフラストラクチャで行われる変更を確認するために使用されます。
テラフォームプラン
'terraform apply'コマンドは、main.tfファイルに記載されているAWSにリソースを作成します。リソースを作成するための確認入力を入力するように求められます。
テラフォーム適用
上記のコマンドを実行すると、正常に完了すると、新しいリソースが追加され、0が破棄されたことがわかります。
AWS RDSコンソールに移動して、RDSMySqlインスタンスが作成されているかどうかを確認できます。
Terraformを使用して作成されたRDSMySqlインスタンスを削除します
main.tfファイルに記載されている構成を使用して作成したリソースが不要になった場合は、「terraformdestroy」コマンドを使用してそれらのリソースをすべて削除できます。
>テラフォーム破壊
結論
この記事では、選択したリージョンにRDSMySqlインスタンスを作成する手順を説明しました。また、作成したインスタンスを1つのコマンドで削除する方法も確認しました。