블로그로 돌아가기

Ubuntu 20.04에 Ansible 설치 및 구성하기

Ubuntu 20.04에 Ansible 설치 및 구성하기

시스템 관리자라면 사용 중인 모든 서버와 컴퓨터를 일관된 방식으로 관리하는 것이 중요합니다. 구성 관리 시스템은 이 프로세스를 크게 간소화할 수 있습니다. 이러한 시스템은 중앙 위치에서 모든 시스템을 효율적으로 관리합니다.

On Linux에는 여러 구성 관리 시스템을 사용할 수 있습니다. 예를 들어, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine 등이 있습니다. Puppet 및 Chef와 같은 도구는 더 복잡하고 고급인 경향이 있는 반면, Ansible은 단순함과 사용 편의성을 제공합니다. Ansible을 작동시키기 위해 노드에 추가 클라이언트 소프트웨어를 설치할 필요가 없습니다. 대신 Ansible은 SSH를 사용하여 시스템을 관리하고 자동화합니다. Ansible은 오픈 소스 소프트웨어입니다. 또한 확장성이 뛰어나고 일관되며 신뢰할 수 있습니다.

이 가이드는 다음 환경에서 Ansible을 설치하고 구성하는 방법을 보여줍니다: Ubuntu 20.04.

Ubuntu에서의 Ansible

Ansible은 세 가지 유형의 자동화를 수행할 수 있습니다:

  • 프로비저닝(Provisioning): 인프라의 요구 사항에 따라 다양한 서버를 구축할 수 있습니다.

  • 구성 관리(Configuration management): 서버의 다양한 구성 변경을 수행할 수 있습니다. 예를 들어 서비스 시작 및 중지, 애플리케이션 및 업데이트 설치, 보안 정책 구현 등이 있습니다.

  • 애플리케이션 배포(Application deployment): 자체 개발한 애플리케이션을 운영 시스템에 자동으로 배포하여 DevOps를 더 쉽게 만들어 줍니다.

Ansible은 호스팅 서버든 기존 서버든, 가상화 플랫폼이든 클라우드든 거의 모든 IT 환경에서 – 완벽하게 작동할 수 있습니다. 또한 데이터베이스, 네트워크, 방화벽, 스토리지 장치 등 다양한 시스템의 관리도 지원합니다. CloudSigma도 Ansible을 지원합니다 자사의 클라우드 인프라를 위해.

사전 요구 사항

이 가이드를 진행하려면 몇 대의 머신이 필요합니다:

  • 제어 노드(Control node): 제어 노드는 모든 호스트 노드에 연결하여 작업을 지시하고 시스템의 다양한 측면을 관리하는 중앙 노드입니다. 제어 노드는 로컬 머신이든 원격 서버든 – 무엇이든 될 수 있습니다.

  • 호스트 노드(Host node): Ansible 호스트는 Ansible 제어 노드가 자동화할 수 있는 머신입니다.

가이드 제목에서 알 수 있듯이, 이 모든 머신은 최신 패키지가 설치된 Ubuntu 20.04로 구성되어야 합니다. 다음은 이에 대한 빠른 가이드입니다: Ubuntu 서버 설정하기. Ansible은 SSH를 사용하여 머신에 연결하므로 모든 호스트 노드는 제어 노드와 SSH 키가 올바르게 설정되어 있어야 합니다. 모든 호스트 노드의 authentication_keys 파일에 제어 노드의 공개 SSH 키가 추가되어 있는지 확인하십시오. 다음 튜토리얼을 통해 Linux 서버에 SSH 키를 생성하고 추가하는 방법.

1단계: Ansible 설치

Ubuntu의 경우 추가 패키지나 저장소 구성이 필요하지 않습니다. Ansible은 공식 Ubuntu 패키지 서버에서 직접 제공됩니다. 시스템 수준의 변경을 수행하려면 관리자 권한(root 사용자 또는 sudo 권한이 있는 일반 사용자)이 필요합니다. sudoers 파일은 사용자 및 그룹에 대한 sudo 권한을 관리합니다.

먼저 제어 노드 역할을 할 컴퓨터에 Ansible을 설치합니다. 제어 노드에 Ansible을 설치하려면 다음 명령을 실행합니다:

Control apt update

Install ansible

SSH 인증 메커니즘으로 비밀번호를 사용하려는 경우, sshpass 패키지를 설치해야 합니다:

Install sshpass

2단계: 인벤토리 파일 구성

Ansible에서 인벤토리 파일은 Ansible이 관리할 모든 hosts에 대한 정보를 포함합니다. inventory file에 등록된 수십 또는 수백 개의 서버일 수 있습니다. 서버는 그룹 및 하위 그룹으로 나눌 수도 있습니다. 일반적으로 inventory file은 특정 hosts 또는 그룹에만 유효한 변수를 설정하는 데 사용됩니다. 이는 플레이북과 템플릿을 작성할 때 유용한 기법입니다. 특정 변수는 플레이북 실행 방식에 영향을 미칠 수도 있습니다.

Ansible에는 기본 인벤토리 파일이 함께 제공됩니다. 먼저 텍스트 편집기에서 파일을 엽니다:

Ansible hosts file

기본적으로 인벤토리 파일에는 참조할 수 있는 다양한 예시가 포함되어 있습니다. 다음은 이름이 servers 이고 세 개의 서로 다른 서버를 포함하는 그룹의 예입니다. 변수 ansible_python_interpreter는 인벤토리에 포함된 모든 호스트에 대한 Python 인터프리터를 정의합니다. ansible_user 지시어를 사용하면 Ansible이 연결할 사용자 계정을 선언할 수 있습니다:

Ansible hosts file updated

다음으로 파일을 저장하고 편집기를 닫습니다. 인벤토리를 확인하려면 다음 명령을 실행합니다:

출력은 다음과 같아야 합니다:

Ansible inventory list

3단계: 연결 테스트

인벤토리 파일을 구성한 후, Ansible이 SSH를 통해 해당 서버에 연결할 수 있는지 테스트해야 합니다. 모든 호스트 노드에 단순히 핑(ping)을 보내는 것으로 테스트할 수 있습니다. control 노드에서 모든 호스트 노드로 핑을 보냅니다:

ping 모듈은 다음 사항을 확인합니다:

  • 호스트 접근성

  • SSH 자격 증명의 유효성

  • 호스트가 Python을 사용하여 Ansible 모듈을 실행할 수 있는지 여부

출력은 다음과 같아야 합니다:

Ansible ping all

특정 노드로부터의 응답이 pong이라면, 해당 노드가 서버에서 Ansible 명령 및 플레이북을 실행할 준비가 되었음을 의미합니다.

4단계: 임시(Ad-Hoc) 명령 실행

이 단계는 선택 사항입니다. 하지만 원격 서버에 대한 Ansible의 전체 기능을 확인하는 데 유용할 수 있습니다. 이 섹션은 추가적인 Ansible 사용법 및 구성에 대한 기본적인 소개 역할도 할 수 있습니다. 노드에 대한 연결이 확인되면 임시(ad-hoc) 명령과 플레이북을 실행할 수 있습니다. 원격 서버에서 일반적으로 실행하는 모든 명령은 Ansible을 사용하여 모든 서버에서 실행할 수 있습니다.

여기서 다음 명령을 실행합니다. 모든 노드의 디스크 사용량을 동시에 확인합니다:

Ansible all df cmd

테스트를 위해 ping 모듈을 실행한 것처럼, 임시 명령 기능을 사용하여 다양한 Ansible 모듈을 실행할 수도 있습니다. 예를 들어, apt 모듈은 Ubuntu의 APT 패키지 관리자와 함께 작동합니다. 원격 Ubuntu 노드에서 패키지를 관리할 수 있습니다. 시스템 수준의 변경을 수행하려면 root 권한이 필요합니다. 원격 노드에서 root 로그인을 허용하거나 사용자가 관리자 작업을 실행할 수 있는 권한을 가지고 있어야 합니다.

다음 예시에서 Ansible은 모든 호스트 노드에 Nginx를 설치합니다:

단일 서버에서만 명령을 실행하려면 어떻게 해야 할까요? 서버를 지정하기 위해 (인벤토리 파일 내에서 할당된) 서버 별칭을 사용합니다:

Adhoc cmd df selected host

여러 서버를 지정할 수도 있습니다. 각 대상 서버 별칭을 콜론을 구분 기호로 사용하여 선언합니다:

Adhoc cmd df multiple hosts

마치며

이 가이드에서는 Ansible을 설치하고 Ansible 제어 노드에서 임시 명령을 실행하기 위한 인벤토리 파일을 구성하는 단계를 단계별로 설명했습니다. 구성이 완료되면 제어 노드는 호스트에서 실행하려는 모든 명령이나 플레이북을 실행할 수 있습니다.

즐거운 컴퓨팅 되세요!

author

Pranay Kapgate

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.