스스로 구축하는 AWS 클라우드 인프라 - 기본편을 수강하며 AWS 인프라를 Terraform으로 작성한 내용입니다.
dbinfo.inc
파일 필요template_file.tf
파일을 만들고 아래와 같이 작성하여 Terraform이 dbinfo.inc
파일을 생성하도록 함data "template_file" "dbinfo" {
template = <<-EOT
<?php
define('DB_SERVER', '${aws_db_instance.rds.address}');
define('DB_USERNAME', '${aws_db_instance.rds.username}');
define('DB_PASSWORD', '${aws_db_instance.rds.password}');
define('DB_DATABASE', '${aws_db_instance.rds.db_name}');
?>
EOT
}
resource "local_file" "dbinfo_file" {
content = data.template_file.dbinfo.rendered
filename = "${path.module}/dbinfo.inc"
}
dbinfo.inc
파일이 Private EC2에 저장되도록 terraform_data.tf
파일과 ami_from_instance.tf
파일을 아래와 같이 수정resource "terraform_data" "copy_php" {
depends_on = [aws_instance.public_ec2, local_file.dbinfo_file]
count = length(var.availability_zones)
connection {
type = "ssh"
user = "ec2-user"
host = element(aws_eip.public_ec2.*.public_ip, count.index)
private_key = tls_private_key.ec2_private_key.*.private_key_pem[0]
}
provisioner "remote-exec" {
inline = [
"while [ ! -d /var/www/html ]; do sleep 5; done",
"echo '/var/www/html is ready'",
"sudo chown -R ec2-user:apache /var/www/html",
"sudo chmod -R 775 /var/www/html"
]
}
provisioner "file" {
source = "${path.module}/index.php"
destination = "/var/www/html/index.php"
}
provisioner "file" {
source = "${path.module}/dbinfo.inc"
destination = "/var/www/html/dbinfo.inc"
}
}
resource "terraform_data" "delete_dbinfo_file" {
depends_on = [aws_ami_from_instance.public_ec2_ami]
provisioner "local-exec" {
command = "rm -f ${path.module}/dbinfo.inc"
}
}
resource "terraform_data" "copy_key" {
depends_on = [local_file.private_ec2_key, aws_ami_from_instance.public_ec2_ami]
count = length(var.availability_zones)
connection {
type = "ssh"
user = "ec2-user"
host = element(aws_eip.public_ec2.*.public_ip, count.index)
private_key = tls_private_key.ec2_private_key.*.private_key_pem[0]
}
provisioner "remote-exec" {
inline = [
"mkdir /home/ec2-user/keys"
]
}
provisioner "file" {
source = "${path.module}/${local_file.private_ec2_key.filename}"
destination = "/home/ec2-user/keys/${local_file.private_ec2_key.filename}"
}
provisioner "remote-exec" {
inline = [
"chmod 600 /home/ec2-user/keys/${local_file.private_ec2_key.filename}"
]
}
}
resource "aws_ami_from_instance" "public_ec2_ami" {
depends_on = [terraform_data.copy_php]
name = "public-ec2-ami"
source_instance_id = aws_instance.public_ec2.*.id[0]
snapshot_without_reboot = false
}
mysql -h <RDS Endpoint> -P 3306 -u admin -p
show databases;
use <DatabaseToUse>;
SAMPLE
테이블 생성CREATE TABLE SAMPLE (
ID INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(45),
ADDRESS VARCHAR(90)
);
INSERT INTO SAMPLE (NAME, ADDRESS) VALUES ('KIM', 'SEOUL');
SELECT * FROM SAMPLE;