📚 IaC

📚 IaC/Terraform

[Terraform] 데이터 소스(Data Source)

[Terraform] 데이터 소스(Data Source) Data Sources - Configuration Language | Terraform | HashiCorp Developer Data sources allow Terraform to use external data, function output, and data from other configurations. Learn data resource arguments, behavior, and lifecycle. developer.hashicorp.com 데이터 소스(Data Source) 공급자에서 가져온 읽기 전용 정보를 나타낸다. 데이터 공급자의 API만 물어보고 해당 데이터를 나머지 테라폼 코드에서 사용할 수 있게한다. 각 테라폼 공급자는 다..

📚 IaC/Terraform

[Terraform] 의존성 관리 (depends_on)

[Terraform] 의존성 관리 (depends_on) Terraform은 선언형이기 때문에, 리소스에 종속성이 있으면 Terraform 엔진이 파악 후 순서대로 작업을 진행한다. 그러나 종속성이 없는 리소스지만, 종속성 선언이 필요한 경우엔 depends_on 인수를 사용하여 명시적으로 종속성을 선언해줄 수 있다. 암시적 종속성 눈으로 보이지 않는 종속성 예를 들어 VPC를 사용하는 EC2 인스턴스를 선언하면, 암시적으로 VPC를 먼저 생성 후 인스턴스를 생성한다. 명시적 종속성 사용자가 명시적으로 선언하는 종속성 예를 들어 s3 버킷과 인스턴스는 관계가 없으므로, s3 객체에 접근을 해 데이터를 가져와야 할 경우 명시적으로 종속을 선언해줘야 한다. 🔎 depends_on 명시적 종속성을 선언하는 경..

📚 IaC/Ansible

[Ansible] Docker로 매니지드 서버(호스트) 생성하기

[Ansible] Docker로 매니지드 서버(호스트) 생성하기 도커 컨테이너를 호스트 서버로 띄워 ssh 연결이 가능하게 설정해보자. 제어노드에 ansible과 docker가 설치되어 있어야 한다. docker worker 컨테이너 생성 docker run -d -it --name work1 -p 1234:80 ubuntu docker run -d -it --name work2 -p 1235:80 ubuntu sudo docker ps ssh 통신 가능하도록 도커 이미지에 ssh 설치 [Ansible] 앤서블 연결하기 (Ansible SSH Connect) [Ansible] 앤서블 연결하기 (Ansible SSH Connect) Ansible은 원격 서버와 SSH를 통해 구성 관리 및 자동화 작업을 수..

📚 IaC/Terraform

[Terraform] RDS 생성

[Terraform] RDS 생성 테라폼으로 AWS의 RDS를 생성해보자 관련하여 코드 사용법들은 아래 링크에 잘 나와있다. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance Terraform Registry registry.terraform.io RDS를 구성하기 위해선 다음이 필요하다. Security Group DB 인스턴스의 엔진은 MySQL을 사용, 3306 Port를 허용해주는 DB 보안그룹 Subnet Group 두 개 이상의 AZ에 생성된 private subnet 차례대로 만들어보자. 1. 보안 그룹 #aws_security_group resource "aws_security_gro..

📚 IaC/Terraform

[Terraform] LoadBalancer 생성

[Terraform] LoadBalancer 생성 🔎LoadBalancer 여러 대상 인스턴스 또는 컨테이너로 들어오는 트래픽을 분산시켜 애플리케이션의 가용성과 확장성을 향상시키는 중요한 구성 요소 HTTP 앱애는 ALB(Application Load Balancer)가 가장 적합하기 때문에, ALB를 생성해줄 것이다. 생성을 하기 전, ALB의 구성을 먼저 살펴보자 리스너 : 특정 포트와 프로토콜을 수신 리스너 규칙 : 리스너에 들어오는 요청을 가져옴 => 특정 경로 및 호스트 이름과 일치하는 요청을 대상 그룹으로 보냄 대상 그룹 : LB에서 요청을 받는 하나 이상의 서버, 서버의 상태를 확인하고 요청을 정상 노드로 보냄 ALB는 대상 그룹에 대상을 등록하고, 대상 그룹으로 트래픽을 라우팅한다. 작업 ..

📚 IaC/Terraform

[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속

[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속 앞서 테라폼으로 생성했던 EC2 인스턴스들은, Key가 없기때문에 SSH 접속을 할 수가 없었다. Terraform에는 Key를 사용하거나 Key를 생성하는 방법을 사용하여 SSH 접속을 할 수가 있다. 1. 기존에 있는 Key 사용하기 resource에 key_name을 추가해주면 된다. 나는 기존에 사용하고 있던 key 이름이 test 였기때문에, test로 두었다. resource "aws_instance" "web" { ami = "ami-0c9c942bd7bf113a2" #ubuntu 22.04 instance_type = "t2.micro" vpc_security_group_ids = [aws_security_group..

📚 IaC/Terraform

[Terraform] AWS Custom VPC 생성

[Terraform] AWS Custom VPC 생성 AWS 콘솔에서 VPC를 생성하면 클릭 클릭으로 매우 간단하게 생성이 된다, 미리 보기를 보면 어떤 리소스들이 생성되는지 확인이 가능하다. 테라폼으로 Custom VPC를 생성하기 위해선 위와 같은 리소스들을 모두 생성해줘야 한다. 1. VPC 생성 vpc.tf 라는 새로운 파일을 하나 생성해준다. 위의 리소스를 모두 생성하려면 코드가 매우 길어지니 주석으로 분리를 해준다. #aws_vpc resource "aws_vpc" "vpc" { cidr_block = "10.0.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostname = true tags = { Nam..

📚 IaC/Terraform

[Terraform] 템플릿 파일(Templatefile)

[Terraform] 템플릿 파일(Templatefile) 테라폼에서 템플릿은 특정 형식으로 작성된 텍스트 파일로, 테라폼 설정을 작성하기 위한 기반으로 사용됨 템플릿은 테라폼 코드에서 변수를 사용하고, 반복문, 조건문 등의 로직을 적용할 수 있음 https://developer.hashicorp.com/terraform/language/functions/templatefile templatefile - Functions - Configuration Language | Terraform | HashiCorp Developer The templatefile function reads the file at the given path and renders its content as a template. dev..

📚 IaC/Terraform

[Terraform] 테라폼 변수와 출력

[Terraform] 테라폼 변수와 출력 테라폼은 코드 내에서 값들을 저장하고 재사용할 수 있는 매개변수를 사용할 수 있다. 예를 들어, 특정 네트워크 서브넷 또는 인스턴스 유형을 Terraform 모듈의 변수로 정의할 수 있다. 이런식으로 변수를 사용하면, 모듈을 사용하는 프로젝트나 환경마다 변수 값을 다르게 지정할 수 있다. 이를 통해 코드의 유연성과 가독성을 높일 수 있다. Variables 입력 변수 (Input) 모듈의 매개 변수 역할을 한다 사용자는 소스를 편집하지 않고도 동작을 사용자 정의할 수 있음 함수의 입력 파라미터(인자 값)와 비슷한 개념 Input Variables - Configuration Language | Terraform | HashiCorp Developer Input v..

📚 IaC/Terraform

[Terraform] Terraform으로 AWS EC2 서버 배포하기 (2)

[Terraform] Terraform으로 AWS EC2 서버 배포하기 (2) https://heywantodo.tistory.com/106 [Terraform] Terraform으로 AWS EC2 서버 배포하기 (1) [Terraform] Terraform으로 AWS EC2 서버 배포하기 (1) Amazon EC2 인스턴스를 Default VPC에서 Terraform을 이용해 코드로 생성해보자 1. 공급자 (Provider) 구성 테라폼을 사용하기 위한 첫번째 단계 AWS 공급자를 사 heywantodo.tistory.com 앞 포스팅에 이어서 Userdata를 통해 EC2에 nginx를 설치하고, 보안그룹을 지정해주는 과정을 진행해보자 1. Userdata userdata는 aws_instance r..

📚 IaC/Ansible

[Ansible] Host 서버에 Nginx 설치하기

[Ansible] Host 서버에 Nginx 설치하기 앞선 포스팅에서 Ping 테스트를 성공한 서버에 nginx를 설치해보자 제어노드가 호스트서버에 SSH 연결을 하는 방법은 아래 포스팅을 참고 https://heywantodo.tistory.com/109 [Ansible] 앤서블 연결하기 (Ansible SSH Connect) [Ansible] 앤서블 연결하기 (Ansible SSH Connect) Ansible은 원격 서버와 SSH를 통해 구성 관리 및 자동화 작업을 수행함 SSH를 통해 원격 서버와 통신하는게 앤서블을 사용하는 첫번째 단계 1. 제어노드(Contr heywantodo.tistory.com 0. 작업 폴더 생성 앤서블은 원격 호스트에 yaml 파일로 작업수행을 하는데, 파일 관리를 위..

📚 IaC/Ansible

[Ansible] 앤서블 연결하기 (Ansible SSH Connect)

[Ansible] 앤서블 연결하기 (Ansible SSH Connect) Ansible은 원격 서버와 SSH를 통해 구성 관리 및 자동화 작업을 수행함 SSH를 통해 원격 서버와 통신하는게 앤서블을 사용하는 첫번째 단계 1. 제어노드(Controller Node) 에서 SSH key를 생성해주고 복사하기 ⚠ 이 때 비밀번호를 요구하지 않고 permission denied가 뜬다면 원격 서버의 /etc/ssh/sshd_config에서 비밀번호 접속이 가능하게 설정을 변경하거나, pem key를 사용해서 copy를 하면 됨 ssh-keygen ssh-copy-id [원격서버계정ID]@[원격서버IP] 위 과정이 끝난 후 원격 서버에 ssh로 접속했을 때, 비밀번호 요구 없이 들어가면 성공 2. Ansible ..

heywantodo
'📚 IaC' 카테고리의 글 목록