바로 가기

Ansible 기본 사항 학습하기

URL 복사

Ansible은 오픈소스 IT 자동화 엔진으로, 프로비저닝, 구성 관리, 애플리케이션 배포, 오케스트레이션, 기타 여러 가지 IT 프로세스를 자동화합니다.

Ansible 자동화를 사용해 소프트웨어를 설치하고, 매일 반복되는 태스크를 자동화하고, 인프라를 프로비저닝하고, 보안 및 컴플라이언스를 강화하고, 시스템을 패치하고, 조직 전체에 자동화를 공유할 수 있습니다.

Ansible은 노드에 연결한 후 모듈이라고 하는 소규모 프로그램을 노드로 푸시하는 방식으로 작동합니다. Ansible에서는 이 모듈을 사용하여 자동화 태스크를 완료합니다. 이러한 프로그램은 원하는 시스템 상태의 리소스 모델이 되도록 작성됩니다. 그런 다음, Ansible은 해당 모듈을 실행하고 완료 후 제거합니다.

모듈이 없는 경우 태스크를 완수하려면 애드혹 명령 및 스크립팅에 의존해야 합니다. Ansible은 Red Hat® Enterprise Linux®, CentOS 또는 Fedora, Ubuntu, Debian 및 기타 여러 운영 체제에 설치할 수 있습니다.

Ansible은 에이전트리스입니다. 즉, Ansible이 관리하는 노드에 설치할 소프트웨어가 필요하지 않습니다. Ansible은 사용자가 인벤토리에서 관리하려는 머신에 관한 정보를 읽습니다. Ansible에는 기본 인벤토리 파일이 있지만, 자체 인벤토리 파일을 생성하여 어떤 서버를 관리할지를 정의할 수 있습니다. 

Ansible은 SSH 프로토콜을 사용해 서버에 연결하여 태스크를 실행합니다. 기본적으로 Ansible은 SSH 키를 ssh-agent와 함께 사용하고, 현재 사용자 이름을 사용해 원격 머신에 접속합니다. 루트 로그인은 필요하지 않습니다. 어떤 사용자로도 로그인이 가능하며 어떤 사용자에게도 su 또는 sudo 명령어를 사용할 수 있습니다.

SSH가 안전한 통신 연결을 설정하는 방법 알아보기

라스트 마일 자동화: 에지 환경에서 일관성과 확장성 보장

연결이 완료되면 Ansible은 실행을 위해 명령 또는 플레이북에 필요한 모듈을 원격 머신으로 전송합니다. Ansible은 사람이 읽을 수 있는 YAML 템플릿을 사용하므로 사용자는 고급 프로그래밍 언어를 배우지 않아도 반복 태스크가 자동으로 수행되도록 프로그래밍할 수 있습니다.

Ansible에는 태스크를 자동화하는 데 사용할 수 있는 기본 모듈이 포함되어 있지만, 사용자가 모듈을 직접 작성할 수도 있습니다. Ruby, Python 또는 Bash 등 JSON을 반환할 수 있는 언어라면 무엇이든 Ansible 모듈을 작성할 수 있습니다. Windows 자동화 모듈은 Powershell로도 작성할 수 있습니다. 

Ansible을 사용해 애드혹 명령을 실행할 수도 있습니다. 이를 위해서 커맨드라인에서 직접 명령을 실행하거나 모듈을 호출할 수 있습니다. 플레이북은 사용되지 않습니다. 일회성 태스크에는 이 방법이 괜찮지만 더 복잡한 태스크에서는 Ansible Playbook을 사용해야 합니다.

Ansible Playbook은 IT 프로세스를 오케스트레이션하는 데 사용됩니다. 플레이북은 하나 이상의 플레이가 포함된 YAML 파일(.yml 또는 .yaml 확장자 사용)로, 시스템을 원하는 상태로 정의하는 데 사용됩니다. 이는 Ansible 플레이북 내에서 사용할 수 있는 독립 실행형 스크립트인 Ansible 모듈과는 다릅니다. 

플레이는 Ansible 인벤토리 파일의 호스트 선택 항목에 대해 실행 순서가 지정된 태스크 세트로 구성되어 있습니다. 태스크는 플레이를 구성하는 요소로, Ansible 모듈을 호출합니다. 플레이에서 태스크는 작성된 순서로 실행됩니다.  

Ansible은 실행 중에 시스템의 상태를 계속 파악할 수 있습니다. Ansible이 시스템을 스캔하여 시스템의 플레이북 설명과 실제 시스템 상태가 일치하지 않음을 발견하면 시스템을 플레이북과 일치시키는 데 필요한 모든 변경을 수행합니다. 

Ansible에는 '점검 모드'가 있으므로 시스템에서 상태를 변경하기 전에 이 모드를 통해 플레이북 및 애드혹 명령을 검증할 수 있습니다. 이를 통해 실제 변경 없이도 Ansible이 하게 될 작업이 무엇인지 알 수 있습니다. Ansible의 핸들러는 시스템에 변경 작업을 한 후 특정 태스크를 실행하는 데에만 사용됩니다. 핸들러는 플레이북의 다른 모든 플레이가 종료되면 태스크에 의해 트리거되고 한 번 실행됩니다.

변수는 플레이북 실행 방식을 변경할 수 있게 지원하는 Ansible의 개념입니다. 변수는 패키지 버전 또는 파일 경로와 같은 시스템 간 차이를 설명하는 데 사용됩니다. Ansible을 사용하면 다양한 시스템에서 플레이북을 실행할 수 있습니다. Ansible 변수는 플레이북이 실제로 하고 있는 작업에 맞게 정의되어야 합니다. 변수는 변수들이 서로를 재정의하는 순서를 정의하는 변수 우선 순위를 따릅니다. 플레이북에 변수를 포함할 때 이를 이해하는 것이 중요합니다.

특별한 종류의 플레이북인 Ansible 역할은 태스크, 변수, 구성 템플릿, 복잡한 오케스트레이션을 완료하는 데 필요한 기타 지원 파일을 포함하고 있어 완전히 독립적이며 이식이 가능합니다. Collection 내에 여러 역할이 존재할 수 있으므로 Automation HubAnsible Galaxy를 통해 콘텐츠를 쉽게 공유할 수 있습니다.

Ansible을 사용해 작업할 때는 Collection에 대해서도 이해해야 합니다. Collection은 플레이북, 역할, 모듈, 플러그인을 포함할 수 있는 Ansible 콘텐츠용 배포 형식입니다.

구성 관리란 컴퓨터 시스템, 서버 및 소프트웨어를 원하는 상태로 일관되게 유지하는 프로세스로, 시간이 지나면서 다양한 변경 사항이 적용되더라도 시스템이 계속 정상적으로 작동하도록 합니다. 전통적으로 이 작업은 시스템 관리자가 맡아 수동으로 또는 사용자 정의 스크립팅을 통해 처리했습니다.

Red Hat® Ansible® Automation Platform을 구성 관리 툴로 사용하면 시스템의 현재 상태를 저장하므로 시스템을 해당 상태로 유지관리하는 데 도움이 됩니다. 

구성 관리 툴은 변경 사항과 배포를 더 빠르게 수행하고 잠재적인 인적 오류를 없애는 동시에 예측 가능하고 확장 가능한 시스템 관리를 실현합니다. 또한 리소스 상태를 추적할 수 있으므로 동일한 패키지를 두 번 설치하는 것과 같은 반복적인 태스크를 수행하지 않아도 됩니다. 

Ansible의 구성 관리 자동화를 사용하면 심각한 상황이 발생한 후 더욱 효과적으로 시스템을 복구할 수 있습니다. 알 수 없는 이유로 서버가 중단될 경우 새로운 서버를 신속하게 배포할 수 있으며, 모든 변경 사항 또는 업데이트 레코드를 확보하여 문제의 원인을 파악할 수 있습니다. 

오늘날 인프라는 소프트웨어에 정의되어 있는 경우가 많으며 가상화컨테이너로 인해 프로비저닝 프로세스 속도는 빨라지고 하드웨어 프로비저닝 및 관리를 자주 할 필요가 없어졌습니다.

각 배포에 대해 프로비저닝을 수동으로 관리해야 하는 경우 변경 사항을 추적하고, 버전을 관리하고, 오류 및 비일관성을 방지하기가 어렵습니다. 어떠한 인프라든 상관없이 프로비저닝을 자동화하면 훨씬 수월하게 이를 실현할 수 있으므로 애플리케이션의 운영 라이프사이클을 자동화하기 위한 첫 번째 단계입니다. 

Ansible을 사용해 환경의 기본 인프라, 가상화 호스트 및 하이퍼바이저, 네트워크 장치, 베어 메탈 서버를 프로비저닝할 수 있습니다. 또한 클라우드 내에서 서비스를 설치하고, 컴퓨팅 호스트를 추가하는 한편 리소스, 서비스 및 애플리케이션을 프로비저닝할 수 있습니다.

Ansible Playbook을 사용해 원하는 인프라 상태를 설명한 후 Ansible을 통해 이를 프로비저닝할 수 있습니다. 플레이북을 사용해 인프라를 코드화하면 매번 동일한 환경을 프로비저닝할 수 있습니다. 

배포 자동화를 구현하면 자동화된 프로세스에 따라 테스트 환경과 프로덕션 환경 간에 소프트웨어를 이동할 수 있게 됩니다. 따라서 소프트웨어 제공 주기 전반에 걸쳐 안정적으로 배포를 반복할 수 있습니다. 배포 자동화는 DevOps 사례를 지원하고 CI/CD 파이프라인을 관리하는 데 중요한 요소입니다.

개발팀과 운영팀의 애플리케이션 배포 방식 또는 환경 구성 방식이 서로 다른 경우 배포 자동화는 불가능합니다. 일관성이 있는 환경이어야 자동화할 수 있습니다. 다시 말해 프로덕션 환경을 비롯한 모든 환경에서 동일한 배포 프로세스를 사용해야 합니다. 

배포 파이프라인은 일반적으로 빌드, 테스트, 배포의 3가지 주요 단계로 이루어집니다(더 많을 수도 있음). 이 파이프라인을 통해 배포 프로세스를 자동화하고 코드를 커밋 단계에서 배포 단계로 빠르게 이동할 수 있습니다. Ansible을 이용하면 하나의 공통 프레임워크에서 멀티 티어 애플리케이션을 안정적이고 일관성 있게 배포할 수 있습니다. 필요한 서비스를 구성하고 플레이북을 사용해 애플리케이션 아티팩트를 푸시할 수 있습니다.

일반적으로 자동화란 단일 태스크의 자동화를 의미합니다. 반면 오케스트레이션은 여러 이기종 시스템 전반에서 다양한 단계를 수반하는 프로세스 또는 워크플로우를 자동화하는 방식을 뜻합니다. 

클라우드 오케스트레이션은 서버를 프로비저닝하거나 배포하고, 스토리지 용량을 할당하고, 가상 머신을 생성하고, 네트워킹을 관리하는 등의 많은 태스크에 사용할 수 있습니다. 클라우드 오케스트레이션을 지원하는 다른 오케스트레이션 툴도 많습니다. Ansible은 한 가지 옵션입니다. 서버 구성 및 관리, 애플리케이션 배포도 Ansible과 같은 툴로 오케스트레이션할 수 있습니다.

애플리케이션 배포를 통해 각각 담당하는 역할과 구성 및 배포를 갖춘 프론트엔드 및 백엔드 서비스, 데이터베이스, 모니터링, 네트워크, 스토리지를 확보할 수 있습니다. 오케스트레이션은 각 단계가 원하는 방식으로 수행되도록 보장합니다. Ansible은 플레이북에서 태스크를 작성된 순서로 실행하여 오케스트레이션을 지원합니다. 따라서 애플리케이션 배포 프로세스가 정확한 순서로 진행되는 것을 알 수 있습니다. 

네트워크 자동화는 프로그래밍할 수 있는 로직을 사용해 네트워크 리소스와 서비스를 관리합니다. 네트워크 자동화를 통해 네트워크 운영(NetOps) 팀은 네트워크 인프라 및 애플리케이션 서비스를 사용자가 수동으로 하는 것보다 더 빠르게 구성, 확장, 보호 및 통합할 수 있습니다.

지난 몇십 년 동안 기반 기술은 진화를 거듭해온 반면 네트워크 관리는 큰 변화가 없었습니다. 네트워크는 보통 수동으로 구축, 운영, 유지관리됩니다. 그러나 네트워크 구성 및 업데이트에 대한 전통적인 수동식 접근 방식은 너무 느리고 오류가 발생하기 쉽기 때문에 신속한 변경이 필요한 워크로드 요구 사항을 효과적으로 지원할 수 없습니다. 

네트워크 운영 팀은 네트워크 리소스 및 서비스 관리를 자동화하여 민첩성과 유연성을 높이고 현대적인 비즈니스 요구 사항을 효과적으로 지원할 수 있습니다.

보안 자동화는 보안 프로세스, 애플리케이션, 인프라를 통합하기 위해 자동화 기술을 사용하여 사람의 개입을 줄인 상태에서 태스크를 수행합니다. 자동화를 통해 일상 업무를 간소화하고 처음부터 보안을 프로세스와 애플리케이션 및 인프라에 통합할 수 있습니다. 보안 자동화를 완벽하게 구현할 경우 보안 침해로 인한 평균 비용을 95%나 절감할 수 있습니다.

보안 프로세스를 자동화하면 수작업 없이도 위협을 더 빠르게 식별 및 검증하고 에스컬레이션할 수 있습니다. 보안 사고가 발생하면 보안 팀은 Ansible을 사용해 해당 환경에서 피해를 입은 여러 시스템의 문제를 동시에 신속히 해결하고 사고에 더 빠르게 대응할 수 있습니다.

보안 팀은 Ansible을 사용해 인벤토리, 플레이북 또는 권한을 공유하는 작업의 시퀀스를 구성하여 조사 또는 문제 해결을 완전히 자동화할 수 있습니다. Red Hat Ansible Automation Platform은 제3사 외부 로그 집계 서비스와 통합됩니다. 따라서 보안 팀이 동향을 파악하고, 인프라 이벤트를 분석하고, 이상 징후를 모니터링하고, 서로 다른 이벤트의 상관 관계를 파악하는 데 도움이 됩니다.

Red Hat Enterprise Linux Automation with Ansible 

이 과정에서는 Ansible Automation Platform 최신 버전으로 Linux® 시스템 관리 태스크를 자동화하는 방법을 교육합니다. Ansible Automation Platform을 사용해 프로비저닝, 구성, 애플리케이션 배포, 오케스트레이션을 자동화하는 데 필요한 기술을 배우게 됩니다.

Ansible Basics: Automation Technical Overview

이 온디맨드 온라인 동영상 시리즈는 Ansible 자동화와 구성 관리, 프로비저닝, 배포, 그리고 Ansible을 사용하여 클라우드, 가상 및 물리 환경 전체에서 컴퓨팅 인프라를 관리하는 방법을 소개합니다.

Red Hat은 자동화 기술을 위해 우수한 오픈소스 커뮤니티와 협력하고 있습니다. Red Hat의 엔지니어는 기능, 신뢰성, 보안을 개선하여 고객의 현업 부서와 IT 부서가 지속적으로 안정적이고 안전하게 업무를 수행할 수 있도록 지원합니다. 

Red Hat Ansible Automation Platform에는 플레이북, 분석 등 전사적 자동화를 구현하는 데 필요한 모든 툴이 포함되어 있습니다. 사용자는 시각적 대시보드, 역할 기반 액세스 제어 등을 통해 IT 인프라를 중앙에서 관리하고 제어하여 운영의 복잡성을 줄일 수 있습니다.

Red Hat Ansible Automation Platform에는 Automation Analytics도 포함되어 있으므로 운영팀은 이를 이용해 Ansible Automation Platform을 실행하는 여러 팀 전반에 걸쳐 사용량, 가동 시간, 실행 패턴을 분석할 수 있습니다.

조직은 자동화를 손쉽게 구현하는 능력이 필요할 뿐 아니라 적절한 수준의 거버넌스와 제어로 여러 프로젝트 및 팀에 걸쳐 자동화를 공유하고 재사용할 수도 있어야 합니다. 효과적인 자동화 솔루션으로 새로운 애플리케이션과 서비스를 더 신속하게 배포하고, IT 인프라를 더 효율적으로 관리하고, 애플리케이션 개발의 생산성을 높여 보세요.

추가 자료

문서

DevSecOps란?

DevOps의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 주요 역할을 해야 합니다.

문서

클라우드 보안은 무엇이 다른가요?

매우 심각한 보안 문제는 기존 IT는 물론 클라우드 시스템에도 영향을 미칩니다. 차이점을 알아보세요.

문서

SOAR란?

SOAR은 사례 및 워크플로우 관리, 태스크 자동화, 중앙에서 위협 인텔리전스에 액세스하여 쿼리 및 공유할 수 있는 기능 등 보안 팀에서 사용하는 세 가지 주요 소프트웨어 기능을 가리킵니다.

보안에 대한 자세한 내용

제품

사용자 아이덴티티를 관리하고 커뮤니케이션을 비공개로 유지하는 보안 프레임워크입니다.

클라우드 네이티브 애플리케이션을 더 안전하게 빌드, 배포 및 실행할 수 있도록 지원하는 엔터프라이즈 수준의 쿠버네티스 네이티브 컨테이너 보안 솔루션입니다.

Red Hat 인프라에 대한 보안, 성능 및 가용성 위협을 식별하고 해결하도록 지원하는 예측 분석 서비스

빌트인 보안 정책을 갖춘 단일 콘솔로 쿠버네티스 클러스터와 애플리케이션을 관리합니다.

리소스