본문 바로가기

공부/IaC47

[Terraform on AWS] 테라폼 backend, 상태 잠금 설정해보기 참조 책 Terraform Up & Running 코드 : github.com/stitchlabio/terraform-up-and-running-code terraform101.inflearn.devopsart.dev/advanced/backend/ 이전 글 : 테라폼 backend의 이해 Requirements S3, DynamoDB 권한이 있는 IAM User 목차 1. S3 버킷, DynamoDB 테이블 생성 2. Backend 설정 1. S3 버킷, DynamoDB 테이블 생성 테라폼의 상태를 저장하기 위한 S3 Bucket과 Lock을 걸기 위한 DynamoDB 테이블을 생성해 보겠다 resources.tf provider "aws" { region = "us-east-1" } resource .. 2021. 3. 21.
[Terraform] 테라폼 backend의 이해 + 21.10.10 더 이해 많이 하고 쓴 글 : https://honglab.tistory.com/199 [Terraform] 실행 환경 분리와 Backend 설정 (AWS/Terraform Cloud) Terraform Backend에 대해 썼던 기존 글 [Terraform] 테라폼 backend의 이해 [Terraform on AWS] 테라폼 backend, 상태 잠금 설정해보기 위 글들은 잘 모르는 상태에서 책 내용을 정리만 해 놓은 것이었다 테라폼.. honglab.tistory.com 참조 책 Terraform Up & Running terraform101.inflearn.devopsart.dev/preparation/terraform-basic/ 목차 1. 테라폼 상태 & backend 2... 2021. 3. 19.
[Terraform on AWS] 테라폼 채움 참조, 변수(variable), output 사용 참조 : 책 Terraform Up & Running 코드 깃헙 주소 : github.com/stitchlabio/terraform-up-and-running-code 테라폼 기본 설정은 지난 글을 참조하자 Requirements AmazonEC2FullAccess 권한이 있는 IAM User 기본 VPC (버지니아 북부 : us-east-1) 생성할 리소스 특정 포트를 열어놓는 보안 그룹 EC2 해당 포트로 접속하면 Hello, World를 보여주는 User Data 위에서 설명한 보안 그룹 연결 목차 1. 채움 참조(interpolation)를 사용해 리소스 생성 2. 변수를 사용해 리소스 생성 3. 더 다양한 variable 1. 채움 참조를 사용해 리소스 생성 provider "aws" { reg.. 2021. 3. 19.
[Terraform on AWS] 테라폼 입문 (in Window) 목차 1. Terraform이란? 2. 실습 환경 설명, terraform 설치 3. IAM User & ACCESS KEY 설정 4. 간단하게 EC2 배포해보기 (+멱등성 체험) 5. Terraform으로 프로비저닝한 리소스들 삭제 1. Terraform이란? 먼저 IaC(Infrastructure as Code, 코드형 인프라)란? 코드형태로 인프라를 작성, 정의, 배포, 업데이트 함 IaC 도구는 크게 애드 혹 스크립트, 구성 관리 도구, 서버 템플릿 도구, 서버 프로비전 도구 4가지로 나뉜다 구성 관리 도구 : Ansible, Chef, Puppet - 서버를 관리하는 쪽에 좀 더 초점 서버 프로비전 도구 : Terraform, AWS Cloudformation - 서버와 인프라 자체를 구성하는데.. 2021. 3. 15.
[AWS CloudFormation] #7 Auto Scaling Group 만들기 ( + Launch Configuration, ALB ) >>진행한 실습 GitHub 이 실습은 아래 파일로 이미 생성된 vpc와 ec2를 가지고 진행된다 이 파일의 Fn::Select 함수와 Fn::GetAZs 함수는 공식문서로 확인해보자 만들어진 EC2는 웹으로 접속하면 이런 화면이 뜬다 (위 버튼들로 부하를 주고 꺼서 오토스케일링을 확인할 예정 - 해당 php 파일도 깃헙에 있음) 이 EC2의 AMI를 따서 만들어놓은 후 ASG를 진행하도록 하겠다 (AMI를 뜨는것도 CloudFormation으로 해보려 했는데 찾지 못했다ㅜ) 1. Parameter Parameters: Key: Description: KeyPair Type: AWS::EC2::KeyPair::KeyName VPC: Description: VPC Type: AWS::EC2::VPC::Id.. 2021. 1. 8.
[AWS CloudFormation] #6 IAM User, Policy 생성 >>진행한 실습 GitHub 1. IAM User 바로 만들기 AWS::IAM::User Resources: AdminUser: Type: AWS::IAM::User Properties: LoginProfile: Password: P@ssw0rd Policies: - PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: '*' Resource: '*' PolicyName: Admin UserName: Admin1 AdministratorAccess의 정책을 가져와봤다 2. IAM Policy를 만들어서 User에 붙이기 AWS::IAM::Policy Resources: AdminUser: Type: AWS::IAM::User Pro.. 2021. 1. 6.
[AWS CloudFormation] #5 RDS 생성하기 (for MySQL) >>진행한 실습 GitHub 기존 ec2 만든 실습에서 연장해서 진행했는데, VPC의 구성을 좀 바꿔야 했다 RDS는 서브넷 그룹을 만들어서 지정해야 하는데, 서브넷 그룹은 2개 이상의 가용영역의 서브넷들이 존재해야 한다 그래서 private subnet을 하나 더 만들어주고, 그에 맞게 parameter도 바꿔주었다 Parameters: AZprivate1: Description: AvailabilityZone for private Type: AWS::EC2::AvailabilityZone::Name AZprivate2: Description: AvailabilityZone for private Type: AWS::EC2::AvailabilityZone::Name PrivateSubnet1Cidr: D.. 2021. 1. 6.
[AWS CloudFormation] #4 mapping 사용하기 (EC2 AMI) >>진행한 실습 GitHub ec2 만든 실습에서 ami를 설정하는 부분을 좀 고쳐보겠다 지난번엔 파라미터만 사용해서, 디폴트 값이 있지만 다른 ami를 원하면 직접 복사해서 넣어야했다 이번엔 매핑을 사용해 Linux2 또는 Windows 2019 Base 둘 중 하나를 선택하면 해당 리전에 맞는 ami가 자동으로 설정되도록 해보겠다 Mappings: RegionMap: us-east-1: Linux2: ami-0be2609ba883822ec Window2019: ami-0229f7666f517b31e us-east-2: Linux2: ami-0a0ad6b70e61be944 Window2019: ami-0d5b55fd8cd8738f5 us-west-1: Linux2: ami-03130878b60947df.. 2021. 1. 6.
[AWS CloudFormation] #3 웹서버용 EC2 만들기 (SG, EC2, UserData) >>진행한 실습 GitHub 위 그림과 같이 만들어볼건데, RDS는 추후에 하도록 하겠다 오늘은 APM 설치되어있는 EC2 생성까지만 기본적인 VPC 설정에 대한 설명은 생략하겠다 전체 코드는 밑에 있으니 설명이 필요한 사람은 이전 글을 보고 오자 1. Security Group AWS::EC2::SecurityGroup SGforWeb: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: allow 22, 80 GroupName: webaccess SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 .. 2021. 1. 5.
[AWS CloudFormation] #2 파라미터 사용하기 (VPC 구성) >>진행한 실습 GitHub VPC 만들었던 실습을 좀 고쳐서 사용해보겠다 전에 만든 yaml 파일은 cidr과 리전, 가용영역이 고정되어 있기 때문에 재사용성이 떨어진다 -> Parameter를 사용해보자 Resources 섹션 위에 Parameter 섹션을 만들어서 CIDR블럭과 가용영역을 설정해주겠다 Parameters: AZpublic: Description: AvailabilityZone for public Type: AWS::EC2::AvailabilityZone::Name AZprivate: Description: AvailabilityZone for private Type: AWS::EC2::AvailabilityZone::Name VPCCidr: Description: Cidr Block.. 2021. 1. 5.
[AWS CloudFormation] #1 간단 VPC 구성 (VPC, Subnet, IGW, NAT, RT) >>진행한 실습 GitHub 간단하게 위 그림과 같은 VPC만 구성해보도록 하고, 리소스별로 살펴보겠다 1. VPC AWS::EC2::VPC VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsHostnames: true Tags: - Key: Name Value: myVPC VPC의 Cidr 블럭을 지정해주고, DNS 호스트 이름을 활성화 해주었다 DNS 호스트이름은 필수는 아니지만, 활성화를 해놔야 이 VPC 안에서 생성되는 인스턴스들이 DNS 호스트 이름을 갖게된다 (Default는 비활) EnableDnsSupport는 DNS 확인인데 Default가 활성화라서 굳이 쓰지 않았다 2. Subnet AWS::EC2::Subnet.. 2021. 1. 5.
[AWS CloudFormation] #0 실습 전 개념 정리 CloudFormation이란? AWS 리소스들을 자동으로 생성해주는 IaC도구 AWS 구성을 재사용하기 쉽게 코드로 작성해두는 것 Ansible과의 차이점 Ansible은 리소스 구성을 넘어서 서버 운영까지 자동화 : DevOps에 더 가까움 CloudFormation은 리소스 구성만 하는 말 그대로의 IaC 작동 방법 템플릿 작성 -> 템플릿 업로드 -> 스택 생성 -> 스택 설정 및 리소스 생성 리소스 구성들을 코드화한 템플릿을 작성하여 해당 템플릿으로 스택을 생성하면, 자동으로 리소스들이 생성된다 템플릿은 JSON 또는 YAML 형식으로 작성된다. 여기선 YAML 형식으로 진행하도록 하겠다 템플릿 구조 공식 문서 참조 1) AWSTemplateFormatVersion (포맷 버전) 템플릿의 기능을.. 2021. 1. 4.
[Ansible] Role 사용법과 변수 파일(vars) 설정, 암호화 * AWS EC2 amazon linux 2에서 진행 일단 얘네들을 설치하고 시작하겠다 amazon-linux-extras enable ansible2 yum clean metadata yum install -y ansible yum install -y python-pip yum install -y python3-pip pip install boto pip intsall boto3 yum install -y tree 2020/11/08 - [공부/Ansible] - [Ansible] Ansible 기초 개념과 AWS에서 사용하기(VPC, EC2) [Ansible] Ansible 기초 개념과 AWS에서 사용하기(VPC, EC2) 1. 앤서블이란? IaC(Infrastructure as Code)를 실천하는.. 2020. 11. 11.
[Ansible] Ansible로 Git 레포지토리 연결하기 먼저 아래 명령들을 진행한다 amazon-linux-extras enable ansible2 yum clean metadata yum install ansible -y yum install git -y git이라는 폴더를 하나 만들어주고(나는 /root/git/으로 만듬) vi git.yml을 만들어준다 --- - hosts: localhost become: yes tasks: - name: git co git: repo: 'https://github.com/suminhong/project_english.git' dest: /root/git/ repo url은 자신이 원하는 url 가져오면 된다 ansible-playbook git.yml 로 실행해보면 이제 git 폴더로 가서 살펴보겠다 내 레포지토리의.. 2020. 11. 8.
[Ansible] Ansible 기초 개념과 AWS에서 사용하기(VPC, EC2) 1. 앤서블이란? IaC(Infrastructure as Code)를 실천하는 자동화 관리 도구 YAML 형식의 플레이북을 실행시키는 형식으로 자동화 구현 2. 멱등성 앤서블은 멱등성(Idempotency)이란 특징을 가진다 이는 여러 번 적용해도 결과가 바뀌지 않으며, 수정된 부분이 있다면 그 부분만 새롭게 반영되는 특징이다 3. Playbook YAML 형식으로 작성된 각각의 Playbook들은 하나 이상의 Play를 가지며, 각각의 Play는 하나 이상의 task(앤서블 모듈)을 실행한다 4. 앤서블 설치 조건 리눅스/유닉스 계열의 OS 환경 파이썬(일반적인 리눅스 배포판에는 기본으로 내장) 5. 앤서블 설치(Amazon Linux 2에서 진행) * AWS EC2 Amazon Linux 2에서 진행.. 2020. 11. 8.