IAC (Infrastructure As Code)
- 수동으로 엔지니어가 하나하나 리소스 정리하고 용량 정리하고 그 속에 운영체제, 서비스 구성하는 환경에서 자동화할 수 있는 도구를 사용해서 코드로 정의해서 한 번에 해결할 수 있게 하는 게 최근 트렌드
- 최근 수동으로 하는 작업은 잘 없음 (그렇다고 아예 없는 건 아님)
- 인프라를 코드로 정의해서 관리하는 것
- 테라폼이라는 도구를 이용해서 클라우드 환경에 해당하는 리소스들을 정의
- 리소스(인프라 자체)를 구성하는 데 사용하지 않는다
- 이미 구성이 되어있고 이미 정의가 된 image들의 공통의 작업을 수행해야 할 때 한 번에 설정할 때 사용
EX) AWS를 테라폼으로 관리를 하겠다면 YAML이라는 파일을 정의한다.
- 인스턴스 용량이라던지 속해야 하는 파일을 정리하는 것
- 정의를 하게 되면 AWS상에서 가상 네트워크 등이 생성된다.
- OS를 설치하지 않고 image를 사용한다. 이미지에 OS가 다 설치되어있음.
- 그래서 가상 머신에 OS가 자동으로 설치가 되어있다.
- 이런 시스템을 코드의 형태로 만드는 게 IAC
- AWS Cloudformation
※ 병렬 처리 : 동시다발적으로 처리한다.
Ansible 특징
- Agent Less 방식을 사용하는 게 가장 큰 특징
- 플레이북 단위로 작업 수행
- yaml을 작성해서 실행
절차적 작업 : 패키지를 설치 및 실행
선언적 작업 : 패키지가 설치된 상태에서 실행 중인 상태를 확인 후 있으면 다음 작업을 실행
Ansible 구성요소
# Ansible Software
- 상주 프로세스가 없고, 명령줄에 의해 동작 -> 장점
- Software만 설치하면 동작한다.
# Inventory
- 조작할 관리 대상 서버의 목록을 정의
- 여러 대의 관리대상 서버를 그룹화(인벤터리에서 제일 중요한 작업)하여 정의 가능
- WEB서버 DB서버 그룹화해서 사용 가능
- 정적 구성과 동적 구성으로 구분 (동적 인벤터리는 잘 사용하지 않음)
# Module
- Ansible에서 실행되는 하나의 명령
- 변경사항이 있을 경우에만 작업 수행
- Ansible 내부에 기본 내장 모듈이 존재
# Playbook
- YAML(어떤 구조인지만 파악) = JSON 같이 사용함
- 실제 스크립트 작업 과정을 YAML 형식으로 정의
- YAML : 데이터 정의어, 하나의 문법이라고 생각
- 프로젝트 단위 (작업 단위보다는 좀 더 큰 범주의 단위)
Ansible ad-hoc
- 단일 태스크 실행하여 자동화 가능
- 1회성 실행
'리눅스' 카테고리의 다른 글
GC 로그 및 heap 덤프 설정 (0) | 2024.05.13 |
---|---|
jstat 항목별 의미 (0) | 2024.05.08 |
Shell Script 실습 (0) | 2022.11.03 |
Shell Script (0) | 2022.11.03 |
PAM 인증 (0) | 2022.11.02 |