안녕하세요!
하씨가문의 영광입니다!
오늘은 Terraform과 Ansible를 함께 사용했을 때
어떤 효과를 가져오는 지 알아보도록 하겠습니다!
Don't have a good day, Have a great day!
▶ 목차
- 코드로서의 인프라의 목표
- Terraform과 Ansible 간단 소개
- Terraform과 Ansible을 함께 사용했을 때 효과
- Terraform과 Ansible을 함께 사용하는 방법
코드로서의 인프라의 목표
- 먼저, Iac란 앞서 이전 블로그에도 설명을 드렸다시피 인프라를 설명하는 코드를 작성하는 것입니다.
- 리소스를 쉽게 생성, 파괴, 수정, 크기 조정 및 이동할 수 있는 동적 인프라입니다.
목표를 나열하자면,
- 변화에 더 빠르게 적응하고 온디맨드로 비즈니스 가치 제공
- 적은 노력으로 반복 가능한 환경을 빠르게 구축
- 재현성
- 일회용
- 접근성
- 규율
- 멱등성
- 확장성
- 동적 인프라로 장애에 대한 대응
Terraform과 Ansible 간단 소개
이전 블로그에서 도구들에 대해서 상세하게 설명을 드렸다시피,
- Terraform은 HashiCorp 구성 언어를 사용하여 다양한 플랫폼 및 서비스에서 인프라를 제공하는 데
- 사용할 수 있는 오픈 소스 명령줄 도구입니다.
- Ansible은 Red Hat이 인수한 오픈 소스 S/W 프로비저닝 구성 관리 및 애플리케이션 배포, 프로비저닝 및 배포 도구입니다.
- 또한 원격 시스템에 설치할 에이전트 없이 SSH를 사용하며 데이터 직렬화 언어 구문인 YAML을 사용합니다.
Terraform과 Ansible을 함께 사용했을 때 효과
- Ansible은 소프트웨어 설정을 위해 훨씬 쉽게 구성할 수 있고, Terraform은 인프라 제공에 우수합니다.
- 또한 Terraform은 EC2 인스턴스, Security Groups, ELB 및 VPC와 같은 인프라를 AWS IaC에 프로비저닝하고,
- Ansible은 Jenkins 및 GitLab과 같은 CM으로 EC2 인스턴스에 애플리케이션을 배포/테스트합니다.
그림과 같이 구성 요소를 살펴보자면
- 테라폼
- 인프라 스캐폴딩
- 내장된 상태 관리
- 선언적 스타일 실행
- 실패 시 롤백하지 않음
- 인프라의 버전 기록 유지
- 클라이언트 전용 아키텍처 사용
- 앤서블
- 응용 프로그램 설명
- YAML을 사용한 절차적 언어 응용 프로그램
- 다시 실행하고 결과가 멱등성이 아닌 한 한번 배포하면 완료
- 에이전트가 필요 없고 SSH 통신 사용
- 클라이언트 전용 아키텍처사용
Terraform과 Ansible을 함께 사용하는 방법
간단한 예시로 2개의 도구를 함께 사용하는 방법을 보여드리겠습니다.
Terraform 파일의 remote-exec를 사용하여 원격 시스템에서 ansible 플레이북을 실행하는 방법
- Ansible을 사용하려면 terraform이 있는 로컬 시스템의 원격 제어 노드에서 ansible 플레이북을 실행해야 합니다. 이것은 원격 시스템에서 명령을 실행할 수 있게 해주는 terraform의 remote-exec 기능을 사용하여 생성할 수 있습니다.
provisioner "remote-exec" {
inline = [
"cd /root/ansible_terraform/aws_instance/",
"ansible-playbook instance.yml"
]
}
Ansible 플레이북 작업
- httpd, php, git 패키지 설치
- httpd 서비스 시작
- /var/www/html/web 폴더 만들기
- /var/www/html/ 폴더에 스토리지 포맷 및 마운트
- /var/www/html/web 폴더에 GitHub 저장소 복제
Ansible 구성 파일
- Ansible.cfg 파일의 Ansible 제어 노드에 있는 ip.txt 파일의 위치 를 인벤토리 주소로 제공해야 합니다.
Terraform Apply
provisioner "local-exec" {
command = "chrome http://${aws_instance.os1.public_ip}/web/"
}
Apply 적용 과정
Ansible 적용 과정 및 결과
애플리케이션 적용 화면
이처럼 Terraform과 Ansible을 연동하여 애플리케이션을 구축해보았는데요!
자동화 도구를 1개 사용하는 것 보다 함께 사용하는 효과는 정말 손 쉽게 할 수 있는 거 같아요!
상세하게 생성하는 내용은 추후 세션에서 보여드리겠습니다:)
감사합니다!
'INFRA > Operation' 카테고리의 다른 글
쿠버네티스 STEP3 Service, NodePort, ClusterIP (0) | 2022.08.05 |
---|---|
Terraform Script.sh 사용 설치 방법 - Azure (0) | 2022.08.04 |
앤서블 아키텍처 구성 및 프로세스 (0) | 2022.07.21 |
쿠버네티스 STEP2 Pod & Deployment (0) | 2022.07.20 |
테라폼 아키텍쳐 구성 및 워크플로우 (0) | 2022.07.11 |
댓글