728x90
728x90
immutable 인프라 스트럭쳐 → 컨테이너는 이미지를 가지고 찍어내는 것이기 때문에 변하지 않는다. 데이터베이스는 immutable 인프라 스트럭쳐로 구현할 수 없다. 컨테이너를 지우면 DB 의 내용이 사라지기 때문이다.. 그래서 매번 컨테이너를 삭제하기 전에 DB 내용을 백업하고 새롭게 DB 컨테이너를 만들었을 때 백업 내용을 업로드해야 하나..? 컨테이너 라이프 사이클과 별개의 스토리지를 만들어야 한다. 컨테이너가 지워지더라도 스토리지는 삭제되지 않게..이것을 볼륨이라고 한다. 볼륨은 컨테이너를 지워도 삭제되지 않는다. AWS 로 예를 들면 EC2 인스턴스에 EBS 볼륨을 붙이는 것이라고 생각하면 편하다. 이미지의 Config.Volumes 선언되어 있으면, 자동으로 Docker 볼륨이 생성되고 ..
count 공식 문서: https://www.terraform.io/language/meta-arguments/count count 를 사용하면 그 개수만큼 리소스가 생성된다. resource "aws_instance" "server" { count = 4 # create four similar EC2 instances ami = "ami-a1b2c3d4" instance_type = "t2.micro" tags = { Name = "Server ${count.index}" } } 떡하니 count 로 인스턴스 늘리는 게 끝이 아니라 해당 리소스와 관련된 모든 리소스에서 count 에 관련된 작업들을 해줘야 한다. resource "aws_eip" "app_server_eip" { count = var...
모듈 공식 문서: https://registry.terraform.io/browse/modules 자주 사용되는 리소스들의 모음을 모듈이라고 부른다. 루트 모듈(https://www.terraform.io/language/modules)?? 실행되는 하나의 큰 테라폼 폴더, 그냥 내가 만든 테라폼 파일들의 모음을 루트 모듈이라고 부른다. 차일드 모듈? 퍼블리시 모듈? 레지스터리에 공개된 모듈들을 뜻함 module "myvpc" { source = "..." ...입력 변수... } terraform init module "vpc" { source = "terraform-aws-modules/vpc/aws" name = "app_vpc" cidr = "10.0.0.0/16" azs = ["ap-northe..
출력값 공식 문서: https://learn.hashicorp.com/tutorials/terraform/aws-outputs?in=terraform/aws-get-started how 🐳 ~/terraform/01 $ cat output.tf output "instance_id" { description = "ID of the EC2 instance" value = aws_instance.app_server.id } how 🐳 ~/terraform/01 $ terraform output app_server_ip = "3.38.88.206" 로컬값 테라폼 내부에서만 사용하는 변수, 스코프가 테라폼 내부에만 잡혀있다고 생각하면 된다. input variable 이나 output 과는 다르다. 함수 test..
공식 문서: https://www.terraform.io/ CentOS/RHEL 에 테라폼 설치하기 $ sudo yum install -y yum-utils $ sudo yum-config-manager --add-repo $ sudo yum -y install terraform AWS CLI 설치 아마존 문서: htps://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html aws configure 명령어로 본인 AWS 계정의 Access key 와 Secret key 를 등록한다. aws sts get-caller-identity 명령어를 입력했을 때 사용자 계정 정보가 나타나면 올바르게 작동하고 있는 것이다. [va..
Vault 파일, 일부 텍스트를 암호화 파일 수준 플레이북 전체 인벤토리 변수 파일 include/import 작업 파일 Vault Password: AES 대칭키 알고리즘을 사용 단일 패스워드: 모든 파일을 똑같은 패스워드를 사용하여 암호화 --ask-vault-pass --vault-password-file 멀티 패스워드: 담당하는 업무 별로 서로 다른 패스워드를 사용하여 암호화 --vault-id ansible-vault create [vagrant@controller 11_vault]$ ansible-vault create encrypt.yml New Vault password: Confirm New Vault password: decrypt [vagrant@controller 11_vault]$..