استفاده از موارد AWS RDS با Terraform: MySQL و PostgreSQL

در این مقاله ، ما به نحوه ارائه نمونه های خدمات وب سایت خدمات وب آمازون (AWS) خدمات (RDS) برای هر دو MySQL و PostgreSQL با استفاده از Terraform می پردازیم. با استفاده از زیرساخت ها به عنوان کد (IAC) می توانیم روند ایجاد این پایگاه داده ها را به صورت خودکار انجام دهیم ، که امکان استقرار زیرساخت های سازگار و قابل تکرار را فراهم می کند.
پیش نیازهای
قبل از اینکه به پیکربندی Terraform شیرجه بزنیم ، حتماً پیش نیازهای زیر را داشته باشید:
- شکل: Terraform را روی دستگاه خود نصب کنید. می توانید راهنمای رسمی نصب را در اینجا دنبال کنید.
- حساب AWS: اطمینان حاصل کنید که یک حساب AWS فعال دارید.
-
AWS CLI: AWS CLI را تنظیم کنید و اعتبار خود را پیکربندی کنید. می توانید آن را با استفاده از پیکربندی کنید
aws configure
بشر - مجوزها: اطمینان حاصل کنید که اعتبار AWS شما مجوزهای کافی برای مدیریت نمونه های RDS دارد.
آنچه ما می سازیم
در این آموزش ، دو نمونه AWS RDS را تعریف خواهیم کرد:
-
mysql: یک نمونه اصلی mySQL با استفاده از
mysql8.0
موتور -
پس از: یک نمونه postgresql با استفاده از جدیدترین
postgres16
موتور
ما هر دو مورد را با 20 گیگابایت ذخیره سازی پیکربندی خواهیم کرد ، db.t3.micro
نوع نمونه ، و رمزگذاری برای داده ها در حالت استراحت فعال است. موارد همچنین قرار است در دسترس عموم قرار نگیرد و مدت زمان نگهداری پشتیبان 7 روز داشته باشد.
نوشتن پیکربندی terraform
یک پرونده به نام ایجاد کنید main.tf
بشر این جایی است که ما منابع Terraform خود را برای تهیه نمونه های RDS تعریف خواهیم کرد.
provider "aws" {
region = "us-east-1" # Change to your preferred region
}
# MySQL RDS Instance
resource "aws_db_instance" "mysql" {
identifier = "mysql-db-instance"
engine = "mysql"
instance_class = "db.t3.micro"
allocated_storage = 20
db_name = "mydb_mysql"
username = "my_admin"
password = "mysecretpassword"
parameter_group_name = "default.mysql8.0"
multi_az = false
publicly_accessible = false
backup_retention_period = 7
storage_type = "gp2"
storage_encrypted = true
}
# PostgreSQL RDS Instance
resource "aws_db_instance" "postgres" {
identifier = "postgres-db-instance"
engine = "postgres"
instance_class = "db.t3.micro"
allocated_storage = 20
engine_version = "16"
db_name = "mydb_postgres"
username = "my_admin"
password = "mysecretpassword"
multi_az = false
publicly_accessible = false
parameter_group_name = "default.postgres16"
backup_retention_period = 7
storage_type = "gp3"
storage_encrypted = true
}
# Outputs: RDS Endpoints
output "mysql_endpoint" {
value = aws_db_instance.mysql.endpoint
}
output "postgres_endpoint" {
value = aws_db_instance.postgres.endpoint
}
شکستن پیکربندی
- بلوک ارائه دهنده:
provider "aws" {
region = "us-east-1" # Change to your preferred region
}
این بلوک ارائه دهنده AWS را برای Terraform پیکربندی می کند و منطقه ای را که در آن منابع شما ایجاد می شود ، مشخص می کند. شما می توانید مطابق نیاز خود منطقه را تغییر دهید.
- mysql rds نمونه:
resource "aws_db_instance" "mysql" {
identifier = "mysql-db-instance"
engine = "mysql"
instance_class = "db.t3.micro"
allocated_storage = 20
db_name = "mydb_mysql"
username = "my_admin"
password = "mysecretpassword"
parameter_group_name = "default.mysql8.0"
multi_az = false
publicly_accessible = false
backup_retention_period = 7
storage_type = "gp2"
storage_encrypted = true
}
این بلوک منبع یک نمونه RDS را برای MySQL ایجاد می کند. در اینجا تفکیک برخی از خصوصیات کلیدی وجود دارد:
-
engine
: موتور پایگاه داده (MySQL) را مشخص می کند. -
allocated_storage
: اندازه ذخیره سازی را در GB تنظیم می کند (20 گیگابایت در اینجا). -
instance_class
: نوع نمونه را تعریف می کند (db.t3.micro
در این حالت ، که یک نمونه کم هزینه است). -
storage_encrypted
: تضمین می کند که داده ها در حالت استراحت رمزگذاری می شوند. -
backup_retention_period
: پشتیبان گیری را به مدت 7 روز حفظ می کند.
- نمونه postgresql rds:
resource "aws_db_instance" "postgres" {
identifier = "postgres-db-instance"
engine = "postgres"
instance_class = "db.t3.micro"
allocated_storage = 20
engine_version = "16"
db_name = "mydb_postgres"
username = "my_admin"
password = "mysecretpassword"
multi_az = false
publicly_accessible = false
parameter_group_name = "default.postgres16"
backup_retention_period = 7
storage_type = "gp3"
storage_encrypted = true
}
این بلوک شبیه به MySQL است اما برای PostgreSQL. در engine_version
ویژگی بر روی 16 تنظیم شده است که آخرین نسخه PostgreSQL را نشان می دهد.
- بازده:
output "mysql_endpoint" {
value = aws_db_instance.mysql.endpoint
}
output "postgres_endpoint" {
value = aws_db_instance.postgres.endpoint
}
این بلوک های خروجی URL های نقطه پایانی را برای نمونه های MySQL و PostgreSQL RDS پس از ایجاد نشان می دهند. می توانید از این نقاط پایانی برای اتصال به پایگاه داده های خود استفاده کنید.
استفاده از پیکربندی
- Terraform را اولیه کنید: برای شروع ، دایرکتوری کار Terraform خود را با دستور زیر آغاز کنید:
terraform init
- برنامه ریزی را برنامه ریزی کنید: دستور زیر را برای پیش نمایش منابع Terraform ایجاد کنید:
terraform plan
- پیکربندی را اعمال کنید: برای ایجاد نمونه های RDS با اجرای: پیکربندی را اعمال کنید:
terraform apply
Terraform قبل از اقدام ، تأیید را فوری می کند. نوع yes
برای ایجاد منابع
تأیید استقرار
پس از اتمام استقرار ، Terraform نقاط پایانی را برای نمونه های MySQL و PostgreSQL RDS وارد می کند. می توانید با استفاده از URL های نقطه انتهایی به همراه نام کاربری و رمزعبور مشخص شده در پیکربندی ، به این موارد متصل شوید.
پایان
در این آموزش ، ما با استفاده از Terraform ، استقرار نمونه های MySQL و PostgreSQL RDS را با موفقیت به صورت خودکار انجام داده ایم. با استفاده از زیرساخت های Terraform به عنوان قابلیت های کد ، می توانیم به سرعت و به طور کارآمد محیط های قابل تکرار برای پایگاه داده های خود ایجاد کنیم.
با افزودن گزینه های سفارشی سازی بیشتر مانند VPC ، گروه های امنیتی و IAM نقش های خود را برای ایمن سازی و بهینه سازی نمونه های RDS خود ، در این پیکربندی گسترش دهید.