본문 바로가기

퍼블릭 클라우드

[Terraform] 테라폼 모듈화 테스트

반응형

테라폼 모듈화 테스트

디렉토리 구조

.
├── main.tf
├── modules
│   ├── EC2
│   │   ├── main.tf
│   │   └── script
│   │       └── install_web1.sh
│   ├── RDS
│   └── VPC
├── provider.tf
└── variables.tf

루트 모듈

provider.tf

$ vim provider.tf
### ./provider.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "3.25.0"
    }
  }
}

provider "aws" {
  # Configuration options
  shared_credentials_file = "~/.aws/credentials"
  region  = var.aws_region
  profile = "terraformA"
}

variables.tf

$ vim variables.tf
### ./variables.tf
variable "aws_region" {
    default = "us-east-1"
    description = "AWS 리전"
}

main.tf

$ vim main.tf
### ./main.tf
module "launch_template" {
  source = "./modules/EC2"
}

EC2 모듈

modules/EC2/main.tf

$ vim modules/EC2/main.tf
### ./modules/EC2/main.tf
resource "aws_key_pair" "tf_key_pair-4wxyz" {
  key_name   = "4wxyz"
  public_key = file("~/aws-key-pair/4wxyz.pub")
}

resource "aws_instance" "my-instance" {
  ami           = "ami-047a51fa27710816e"
  instance_type = "t2.micro"
  key_name      = aws_key_pair.tf_key_pair-4wxyz.key_name
  user_data     = file("./modules/EC2/script/install_web1.sh")
}

modules/EC2/script/install_web1.sh

$ vim modules/EC2/script/install_web1.sh
### ./modules/EC2/script/install_web1.sh
#! /bin/bash
sudo yum install -y httpd
sudo systemctl --now enable httpd
echo "<h1>Deployed via Terraform</h1>" | sudo tee /var/www/html/index.html

 

 

728x90
반응형