본문 바로가기

Hello World/IaC11

[AWS] 이미 생성된 infra를 terraform 으로 가져오기 Terraform import 명령어는 말그대로 기존에 존재하는 인프라 상태를 가져오는 기능이다. 이미 생성되어 운영중인 AWS 리소스에 대해 terraform 으로 상태를 code로 가져올 수 있다. Terraform import 로 기존에 구축된 리소스에 대한 terraform 코드를 작성하는 과정을 간단하게 정리하자면 1. 가져올 개체가 mapping될 리소스에 대한 빈 블록을 수동으로 작성한다 2. terraform import 명령어를 수행하면 terraform.tfstate파일에 가져온 리소스에 대한 상태값이 저장된다. 3. tfstate파일을 보면서 리소스.tf 파일에 각 속성을 하나하나 직접 선언한다. 혹은 Terraformer 라는 Tool 을 사용할 수도 있다. Terraformer는 .. 2022. 8. 26.
[AWS] Terraform 시작하기 - 기본구성, 개발환경, 동작과정 Terraform 구성 목적 AWS에 서비스를 구축하고 운영하면서, 동일한 구성의 인프라 세트를 각각의 환경(dev/stg/prd)에 맞게 생성하거나 변경(신규 계정, 네트워크변경 등)하는 작업이 빈번하게 발생한다. 그렇기에 IaC 대표 SW인 Terraform으로 인프라를 코드화하고 관리할 수 있다. Terraform 코드 구성 - provider.tf : terraform으로 정의할 infra provider(aws, azure, ..) 정보 - variable.tf : 리소스에 쓰일 변수들을 정의해놓은 파일 - .tf : 인프라 관련된 리소스가 정의된 파일 - output.tf : 프로비저닝 후 생성된 resource 정보를 출력 - terraform.tfstate : 인프라 배포 후 작업결과가 ... 2022. 8. 15.
[IaC] Terraform Docker image 생성 DevOps 업무할 때 내 pc에 이것저것 설치하기 싫어서 container로 만들어 docker 환경에서 작업하는 것을 선호한다. terraform 도 docker image 만들어서 필요할때마다 사용하기 위해 아래와같이 docker file 작성 FROM ubuntu:20.04 RUN apt-get update && apt-get install -y curl unzip RUN apt-get install -y wget RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \ unzip awscliv2.zip && \ ./aws/install RUN apt-get install -y gnupg RU.. 2022. 8. 9.
[AWS] AWS CDK 란? CloudFormation 과 비교하기 AWS CDK(Cloud Development Kit)란 Terraform 과 AWS CloudFormation 같은 IaC 서비스중 하나이다. Terraform, CloudFormation, Anible 같이 Yaml 이나 Hf같은 특정문법을 사용하는게 아니라, 프로그래밍언어로 작성할 수 있다는 장점이 있다. Java, Python, Typescript 등을 지원하기때문에 개발언어로 좀 더 쉽게 인프라를 구성할 수 있다. AWS CloudFormation 을 비교해보자면.. CloudFormation 은 리소스를 정해진 템플릿 문법(JSON 혹은 YAML) 로 작성해야한다. 스택이 크고 여러개일수록 복잡성이 증가하고 이때 CDK를 쓰면 코드를 읽을때도 스택이 어떠한 연결성을 가지고 구성되어있는지 파악하.. 2022. 7. 11.
[K8S] Kubernetes Object 와 Manifest 작성 방법 쿠버네티스(이하 k8s) 클러스터에 application을 배포하기위해서는 k8s에 기술된 정의대로 object를 생성해야하고 이 때, yaml 형식의 manifest파일을 작성하게 된다. 외부와 통신하는 서버를 배포한다고 했을때, 기본적으로 자주 사용되는 k8s object는 아래와 같다. 1. Deployment - Pod 배포를 제어하는 object. pod replicas, resouce, 배포 방식같은것들을 제어한다. 2. Service - Pod들을 하나의 ip로 묶어줌. pod에 고정된 주소로 접근할 수 있게 하는 역할. 다양한 어플리케이션을 올리고 통신이 필요한경우 사용. 3. Ingress : 외부의 클러스터 pod 서비스에 접근관리 위한 ojeject. 일반적으로 http를 관리함. y.. 2022. 4. 17.
[Ansible/AWX] AWX 관리 tip - Management Job AWX는 이전의 활동 내역들 (activity stream data)가 계속 저장하고 있기때문에 history나 job log 등 보관을 위한 용량을 차지하게 된다. 때문에 주기적으로 이전 history 를 지워야 하는데 이때 Management Jobs 메뉴에서 처리 가능하다. Menu - Management Jobs - Cleanup Activity Stream - Launch 을 클릭한다. 나는 30일이 지난 내역을 모두 삭제했다. 매번 들어가서 정리하기 번거롭기 때문에 주기적으로 정리하도록 scheduling 할 수도 있다. Cleanup Activity Stream - Schecules 를 들어가 새로운 schedule을 등록한다. 2021. 3. 24.
[Ansible/AWX] AWX inventory 에 host 자동 추가 AWX를 사용하다보니 inventory 등록할때 host를 하나씩밖에 등록하는 것이 번거롭다. 여러 방법으로 host 정보를 gathering 할 수 있는데, (SOURCE설정, inventory script) 나는 inventory 도 git에 등록하여 사용하고 있기떄문에 git의 host파일을 불러와 자동으로 inventory 를 구성하도록 했다. 우선 새로운 inventory 를 추가한다 SOURCES 탭에들어가 신규 SOURCE를 추가한다. 이때 SOURCE 는 Sourced from a Project 로 선택하면된다. Inventory file 을 git에 update 할때마다 AWX의 inventory 도 sync 를 맞추기 위해 UPDATE OPTIONS 의 OVERWRITE 와 OVERWR.. 2021. 3. 24.
[Ansible/AWX] Ubuntu에 AWX 설치 따라하기 Ansible 을 GUI 로 관리하고, api로 제어할수 있도록 해주는 시스템이다. Playbook 을 관리하고 운영하는데 필요한 여러 기능을 제공한다. 서버에 AWX를 설치해보고 사용법 익히자. 설치 서버 사양 - Ubuntun 14.04 - Python 2.7 1. 사전에 설치가 필요한 package ##ansible, docker, docker-compose sudo apt update && sudo apt -y upgrade apt-get install ansible apt-get install sshpass pip install docker-py pip install docker-compose ##pip pip install --upgrade pip pip install docker-compos.. 2021. 3. 17.
[docker] Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. docker run 시 --memory=xx --memory-swap=xx 옵션 설정하여 docker run 시 아래와 같은 에러 발생. 에러 Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. 2021. 1. 20.