Red Hat Enterprise Linux 에 Ansible 설치하기

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 랩에서는 Red Hat Enterprise Linux (RHEL) 시스템에 Ansible Core 를 설치하는 방법을 배우게 됩니다. Ansible 은 시스템 관리 및 구성, 애플리케이션 배포, 복잡한 IT 워크플로우 오케스트레이션을 가능하게 하는 강력한 자동화 도구입니다.

ansible-core 패키지를 설치하기 위해 sudo 권한을 가진 dnf 패키지 관리자를 사용합니다. ansible-core는 핵심 Ansible 엔진과 명령줄 도구를 제공합니다. 설치 후에는 Ansible 의 버전을 확인하고 기본 명령을 실행하여 Ansible 이 제대로 작동하는지 확인합니다.

이것은 Red Hat Enterprise Linux 시스템으로 작업하는 시스템 관리자 및 DevOps 엔지니어에게 기본적인 기술입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 82%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

dnf 를 사용하여 Ansible Core 설치

이 단계에서는 dnf 패키지 관리자를 사용하여 ansible-core 패키지를 설치합니다. Ansible Core 는 자동화 작업에 필요한 ansible, ansible-playbook 및 기타 핵심 명령줄 도구를 포함하여 필수 Ansible 엔진을 제공합니다.

dnf (Dandified YUM) 패키지 관리자는 Red Hat Enterprise Linux 에서 소프트웨어 패키지를 관리하기 위한 표준 도구입니다. 소프트웨어 설치에는 관리자 권한이 필요하므로 sudo 명령을 사용해야 합니다.

자동 확인과 함께 Ansible Core 를 설치하려면 다음 명령을 실행하십시오.

sudo dnf install ansible-core -y

-y 플래그는 모든 프롬프트에 자동으로 "yes"로 응답하여 설치를 비대화형으로 만듭니다. 시스템은 템플릿을 위한 Jinja2 및 YAML 처리를 위한 PyYAML 을 포함하여 ansible-core와 해당 Python 종속성을 다운로드하여 설치합니다.

패키지 해결 및 설치 진행 상황을 보여주는 다음과 유사한 출력을 볼 수 있습니다.

Updating Subscription Management repositories.
Last metadata expiration check: ...
Dependencies resolved.
================================================================================
 Package                  Arch   Version                Repository         Size
================================================================================
Installing:
 ansible-core             noarch 2.16.x-x.el9            rhel-9-appstream   xx M
Installing dependencies:
 python3-jinja2           noarch x.x.x-x.el9              rhel-9-appstream   xxx k
 python3-yaml             x86_64 x.x.x-x.el9              rhel-9-appstream   xxx k
 ...

Transaction Summary
================================================================================
Install  XX Packages

Complete!

Ansible 설치 확인

이제 Ansible Core 를 설치했으므로, 버전을 확인하고 필수 명령줄 도구를 사용할 수 있는지 확인하여 설치가 성공적으로 완료되었는지 확인해 보겠습니다.

먼저, 다음을 실행하여 Ansible 버전을 확인합니다.

ansible --version

이 명령은 핵심 버전, Python 버전 및 다양한 구성 요소의 위치를 포함하여 Ansible 설치에 대한 자세한 정보를 표시합니다. 다음과 같은 출력을 볼 수 있습니다.

ansible [core 2.14.18]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

각 줄의 의미를 이해해 보겠습니다.

  • ansible [core 2.14.18]: 설치된 Ansible Core 버전을 표시합니다.
  • config file: 기본 설정을 포함하는 주요 Ansible 구성 파일을 가리킵니다.
  • configured module search path: Ansible 이 사용자 정의 모듈을 찾는 디렉토리입니다.
  • ansible python module location: 핵심 Ansible Python 코드가 설치된 위치입니다.
  • ansible collection location: Ansible 컬렉션 (패키지된 모듈 및 플러그인) 이 저장된 디렉토리입니다.
  • executable location: ansible 명령 바이너리의 실제 위치입니다.
  • python version: Ansible 이 사용하는 Python 인터프리터 버전입니다.
  • jinja version: 동적 콘텐츠에 Ansible 이 사용하는 템플릿 엔진 버전입니다.
  • libyaml = True: 빠른 YAML 파서가 더 나은 성능을 위해 사용 가능한지 확인합니다.

이것은 Ansible 이 제대로 설치되어 사용할 준비가 되었음을 확인합니다. 다음으로, ansible-playbook 명령을 사용할 수 있는지 확인해 보겠습니다.

ansible-playbook --version

Ansible 플레이북을 실행하는 데 필수적인 ansible-playbook 도구에 대한 유사한 버전 정보를 볼 수 있습니다.

간단한 명령어로 Ansible 테스트

이 단계에서는 로컬 시스템에 대해 간단한 명령을 실행하여 Ansible 설치를 테스트합니다. 프로젝트 디렉토리로 이동하여 사전 구성된 인벤토리 파일을 사용하여 Ansible 임시 명령을 실행합니다.

프로젝트 디렉토리로 이동하여 기본 ping 기능을 테스트합니다.

cd /home/labex/project
ansible localhost -m ping

ping 모듈은 실제로 ICMP 패킷을 보내지 않습니다. 대신 Ansible 이 대상에 연결하여 Python 코드를 실행할 수 있는지 확인합니다. 성공적인 응답은 다음과 같습니다.

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

이 출력을 분석해 보겠습니다.

  • localhost | SUCCESS: 명령이 localhost 대상에서 성공적으로 실행되었음을 보여줍니다.
  • ansible_facts: 실행 중에 발견된 시스템 정보를 포함합니다.
  • discovered_interpreter_python: Ansible 이 찾아서 사용할 Python 인터프리터 경로입니다.
  • changed: false: 시스템에 변경 사항이 없음을 나타냅니다 (ping 은 읽기 전용).
  • ping: "pong": Ansible 연결을 확인하는 고전적인 응답입니다.

"pong" 응답은 Ansible 이 올바르게 작동하고 대상 시스템과 통신할 수 있음을 확인합니다.

또한 setup 모듈을 사용하여 시스템 정보를 수집해 보겠습니다.

ansible localhost -m setup -a "filter=ansible_distribution*"

이 명령은 setup 모듈을 사용하여 시스템 팩트를 수집하며, 특히 배포 정보를 필터링합니다. Red Hat Enterprise Linux 시스템에 대한 세부 정보가 포함된 출력을 볼 수 있습니다.

localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "RedHat",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/redhat-release",
        "ansible_distribution_file_search_string": "Red Hat",
        "ansible_distribution_file_variety": "RedHat",
        "ansible_distribution_major_version": "9",
        "ansible_distribution_release": "Plow",
        "ansible_distribution_version": "9.6",
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

시스템 팩트 출력 이해:

  • ansible_distribution: Linux 배포판 이름 (RedHat)
  • ansible_distribution_file_parsed: Ansible 이 배포 파일 읽기에 성공했는지 여부
  • ansible_distribution_file_path: 배포 정보가 포함된 파일
  • ansible_distribution_file_search_string: 배포를 식별하는 데 사용되는 텍스트 패턴
  • ansible_distribution_file_variety: 배포판 계열 (RedHat 계열)
  • ansible_distribution_major_version: 주 버전 번호 (9)
  • ansible_distribution_release: 릴리스 코드명 (Plow)
  • ansible_distribution_version: 전체 버전 번호 (9.6)
  • discovered_interpreter_python: Ansible 이 발견한 Python 인터프리터

이것은 Ansible 이 대상 호스트에서 시스템 정보를 성공적으로 수집할 수 있음을 확인하며, 이는 시스템 특성을 기반으로 조건부 자동화를 생성하는 데 필수적입니다.

사용 가능한 Ansible 모듈 탐색

Ansible 은 다양한 자동화 작업을 위한 수백 개의 내장 모듈과 함께 제공됩니다. 설치 후 즉시 사용할 수 있는 기능을 이해하기 위해 사용 가능한 일부 모듈을 살펴보겠습니다.

사용 가능한 모듈 목록을 보려면 다음을 실행합니다.

ansible-doc -l | head -20

ansible-doc -l 명령은 사용 가능한 모든 모듈을 나열하고, head -20을 사용하면 처음 20 개의 모듈을 표시합니다. 이를 통해 Ansible 로 사용할 수 있는 광범위한 자동화 기능에 대한 아이디어를 얻을 수 있습니다. 다음과 유사한 출력을 볼 수 있습니다.

ansible.builtin.add_host               Add a host (and alternatively a grou...
ansible.builtin.apt                    Manages apt-packages
ansible.builtin.apt_key                Add or remove an apt key
ansible.builtin.apt_repository         Add and remove APT repositories
ansible.builtin.assemble               Assemble configuration files from fr...
ansible.builtin.assert                 Asserts given expressions are true
ansible.builtin.async_status           Obtain status of asynchronous task
ansible.builtin.blockinfile            Insert/update/remove a text block su...
ansible.builtin.command                Execute commands on targets
ansible.builtin.copy                   Copy files to remote locations
ansible.builtin.cron                   Manage cron.d and crontab entries
ansible.builtin.debconf                Configure a .deb package
ansible.builtin.debug                  Print statements during execution
ansible.builtin.dnf                    Manages packages with the `dnf' pack...
ansible.builtin.dpkg_selections        Dpkg package selection selections
ansible.builtin.expect                 Executes a command and responds to p...
ansible.builtin.fail                   Fail with custom message
ansible.builtin.fetch                  Fetch files from remote nodes
ansible.builtin.file                   Manage files and file properties
ansible.builtin.find                   Return a list of files based on spec...

모듈 목록 형식 이해:

  • ansible.builtin.: 이것이 Ansible Core 와 함께 제공되는 내장 모듈임을 나타냅니다.
  • Module name (모듈 이름): 플레이북 또는 임시 명령에서 모듈을 호출할 때 사용하는 이름입니다.
  • Description (설명): 모듈이 수행하는 작업에 대한 간략한 설명입니다.

자주 사용되는 몇 가지 중요한 모듈:

  • command (명령): 대상 시스템에서 셸 명령을 실행합니다.
  • copy (복사): 제어 머신에서 원격 호스트로 파일을 복사합니다.
  • dnf: Red Hat 시스템에서 패키지를 설치, 업데이트 또는 제거합니다.
  • file (파일): 디렉토리를 생성하고, 권한을 설정하거나, 파일 속성을 관리합니다.
  • debug (디버그): 문제 해결을 위해 플레이북 실행 중에 메시지를 인쇄합니다.

특정 모듈에 대한 자세한 문서를 얻으려면 모듈 이름과 함께 ansible-doc 명령을 사용할 수 있습니다. 예를 들어, copy 모듈에 대해 알아보려면:

ansible-doc copy

이렇게 하면 예제 및 매개변수 설명을 포함하여 copy 모듈에 대한 포괄적인 문서가 표시됩니다. ansible-doc 명령은 모든 Ansible 모듈에 대한 자세한 문서를 제공하여 다양한 자동화 기능을 사용하는 방법을 쉽게 배울 수 있도록 합니다. 읽기를 마쳤으면 q를 눌러 문서 뷰어를 종료합니다.

요약

이 실습에서는 Red Hat Enterprise Linux 시스템에 Ansible Core 를 설치하고 확인하는 방법을 성공적으로 배웠습니다. 수행한 작업은 다음과 같습니다.

  1. Ansible Core 설치: sudo dnf install ansible-core -y 명령을 사용하여 공식 Red Hat 저장소에서 핵심 Ansible 패키지 및 해당 종속성을 설치했습니다.

  2. 설치 확인: ansibleansible-playbook 명령의 버전을 확인하여 Ansible 이 제대로 설치되었는지 확인했습니다.

  3. 기본 기능 테스트: 다음을 포함하여 설치가 올바르게 작동하는지 확인하기 위해 간단한 Ansible 명령을 실행했습니다.

    • ping 모듈을 사용하여 연결 테스트
    • setup 모듈을 사용하여 시스템 팩트 수집
  4. 사용 가능한 모듈 탐색: ansible-doc을 사용하여 광범위한 Ansible 모듈 라이브러리에 대한 문서를 검색하고 읽는 방법을 배웠습니다.

이제 RHEL 에 완전히 작동하는 Ansible 설치가 있으며 인프라 자동화를 시작하는 데 필요한 기본 명령을 이해합니다. 이 기반은 플레이북 작성, 인벤토리 관리 및 복잡한 자동화 워크플로우 구현과 같은 더 고급 Ansible 주제를 준비합니다.