검색

5장. RHEL 시스템 역할을 사용하여 성능 모니터링

download PDF

시스템 관리자는 Ansible Automation Platform 제어 노드에서 메트릭 RHEL 시스템 역할을 사용하여 시스템의 성능을 모니터링할 수 있습니다.

5.1. RHEL 시스템 역할을 사용하도록 컨트롤 노드 및 관리형 노드 준비

개별 RHEL 시스템 역할을 사용하여 서비스 및 설정을 관리하려면 먼저 제어 노드와 관리 노드를 준비해야 합니다.

5.1.1. RHEL 8에서 제어 노드 준비

RHEL 시스템 역할을 사용하기 전에 제어 노드를 구성해야 합니다. 그런 다음 이 시스템은 플레이북에 따라 인벤토리에서 관리 호스트를 구성합니다.

사전 요구 사항

  • RHEL 8.6 이상이 설치되어 있어야 합니다. RHEL 설치에 대한 자세한 내용은 설치 미디어에서 RHEL 상호 작용 설치를 참조하십시오.

    참고

    RHEL 8.5 및 이전 버전에서 Ansible 패키지는 Ansible Core 대신 Ansible Engine을 통해 제공되었으며 다른 수준의 지원이 제공되었습니다. 패키지가 RHEL 8.6 이상의 Ansible 자동화 콘텐츠와 호환되지 않을 수 있으므로 Ansible Engine을 사용하지 마십시오. 자세한 내용은 RHEL 9 및 RHEL 8.6 이상 AppStream 리포지토리에 포함된 Ansible Core 패키지에 대한 지원 범위를 참조하십시오.

  • 시스템이 고객 포털에 등록되어 있습니다.
  • Red Hat Enterprise Linux Server 서브스크립션이 시스템에 연결되어 있습니다.
  • 선택 사항: Ansible Automation Platform 서브스크립션이 시스템에 연결되어 있습니다.

절차

  1. ansible 이라는 사용자를 생성하여 플레이북을 관리하고 실행합니다.

    [root@control-node]# useradd ansible
  2. 새로 생성된 ansible 사용자로 전환합니다.

    [root@control-node]# su - ansible

    이 사용자로 나머지 절차를 수행합니다.

  3. SSH 공개 및 개인 키를 생성합니다.

    [ansible@control-node]$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/ansible/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase): <password>
    Enter same passphrase again: <password>
    ...

    키 파일에 제안된 기본 위치를 사용합니다.

  4. 선택 사항: 연결을 설정할 때마다 Ansible에서 SSH 키 암호를 입력하라는 메시지를 표시하지 않으려면 SSH 에이전트를 구성합니다.
  5. 다음 콘텐츠를 사용하여 ~/.ansible.cfg 파일을 생성합니다.

    [defaults]
    inventory = /home/ansible/inventory
    remote_user = ansible
    
    [privilege_escalation]
    become = True
    become_method = sudo
    become_user = root
    become_ask_pass = True
    참고

    ~/.ansible.cfg 파일의 설정은 우선 순위가 높으며 전역 /etc/ansible/ansible.cfg 파일의 설정을 재정의합니다.

    이러한 설정을 통해 Ansible은 다음 작업을 수행합니다.

    • 지정된 인벤토리 파일의 호스트를 관리합니다.
    • 관리 노드에 대한 SSH 연결을 설정할 때 remote_user 매개변수에 설정된 계정을 사용합니다.
    • sudo 유틸리티를 사용하여 관리 노드에서 root 사용자로 작업을 실행합니다.
    • 플레이북을 적용할 때마다 원격 사용자의 루트 암호를 입력하라는 메시지를 표시합니다. 이는 보안상의 이유로 권장됩니다.
  6. 관리 호스트의 호스트 이름을 나열하는 INI 또는 YAML 형식으로 ~/inventory 파일을 생성합니다. 인벤토리 파일에서 호스트 그룹을 정의할 수도 있습니다. 예를 들어 다음은 3개의 호스트와 US 라는 호스트 그룹 1개가 있는 INI 형식의 인벤토리 파일입니다.

    managed-node-01.example.com
    
    [US]
    managed-node-02.example.com ansible_host=192.0.2.100
    managed-node-03.example.com

    제어 노드에서 호스트 이름을 확인할 수 있어야 합니다. DNS 서버가 특정 호스트 이름을 확인할 수 없는 경우 호스트 항목 옆에 있는 ansible_host 매개변수를 추가하여 IP 주소를 지정합니다.

  7. RHEL 시스템 역할을 설치합니다.

    • Ansible Automation Platform이 없는 RHEL 호스트에서 rhel-system-roles 패키지를 설치합니다.

      [root@control-node]# yum install rhel-system-roles

      이 명령은 /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/ 디렉터리에 컬렉션을 설치하고 ansible-core 패키지를 종속성으로 설치합니다.

    • Ansible Automation Platform에서 ansible 사용자로 다음 단계를 수행합니다.

      1. Red Hat 자동화 허브를 ~/.ansible.cfg 파일의 기본 콘텐츠 소스로 정의합니다.
      2. Red Hat 자동화 허브에서 redhat.rhel_system_roles 컬렉션을 설치합니다.

        [ansible@control-node]$ ansible-galaxy collection install redhat.rhel_system_roles

        이 명령은 ~/.ansible/collections/ansible_collections/redhat/rhel_system_roles/ 디렉터리에 컬렉션을 설치합니다.

다음 단계

5.1.2. 관리형 노드 준비

관리형 노드는 인벤토리에 나열되는 시스템이며, 플레이북에 따라 제어 노드에서 구성합니다. 관리 호스트에 Ansible을 설치할 필요가 없습니다.

사전 요구 사항

  • 제어 노드를 준비합니다. 자세한 내용은 RHEL 8에서 제어 노드 준비를 참조하십시오.
  • 제어 노드에서 SSH 액세스 권한이 있어야 합니다.

    중요

    root 사용자로 직접 SSH 액세스는 보안 위험이 있습니다. 이 위험을 줄이기 위해 이 노드에 로컬 사용자를 생성하고 관리 노드를 준비할 때 sudo 정책을 구성합니다. 그런 다음 제어 노드의 Ansible은 로컬 사용자 계정을 사용하여 관리 노드에 로그인하고 root 와 같은 다른 사용자로 플레이북을 실행할 수 있습니다.

절차

  1. ansible 이라는 사용자를 생성합니다.

    [root@managed-node-01]# useradd ansible

    나중에 제어 노드는 이 사용자를 사용하여 이 호스트에 대한 SSH 연결을 설정합니다.

  2. ansible 사용자의 암호를 설정합니다.

    [root@managed-node-01]# passwd ansible
    Changing password for user ansible.
    New password: <password>
    Retype new password: <password>
    passwd: all authentication tokens updated successfully.

    Ansible에서 sudo 를 사용하여 작업을 root 사용자로 수행할 때 이 암호를 입력해야 합니다.

  3. 관리 노드에 ansible 사용자의 SSH 공개 키를 설치합니다.

    1. 제어 노드에 ansible 사용자로 로그인하고 SSH 공개 키를 관리 노드에 복사합니다.

      [ansible@control-node]$ ssh-copy-id managed-node-01.example.com
      /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub"
      The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established.
      ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
    2. 프롬프트가 표시되면 yes 를 입력하여 연결합니다.

      Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
      /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
      /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    3. 암호를 입력하라는 메시지가 표시되면 암호를 입력합니다.

      ansible@managed-node-01.example.com's password: <password>
      
      Number of key(s) added: 1
      
      Now try logging into the machine, with:   "ssh 'managed-node-01.example.com'"
      and check to make sure that only the key(s) you wanted were added.
    4. 제어 노드에서 명령을 원격으로 실행하여 SSH 연결을 확인합니다.

      [ansible@control-node]$ ssh managed-node-01.example.com whoami
      ansible
  4. ansible 사용자에 대한 sudo 구성을 생성합니다.

    1. visudo 명령을 사용하여 /etc/sudoers.d/ansible 파일을 만들고 편집합니다.

      [root@managed-node-01]# visudo /etc/sudoers.d/ansible

      일반 편집기를 통해 visudo 를 사용할 때의 이점은 이 유틸리티에서 파일을 설치하기 전에 구문 분석 오류와 같은 기본 검사를 제공한다는 것입니다.

    2. 요구 사항을 충족하는 /etc/ sudoers.d/ansible 파일에서 sudoers 정책을 구성합니다. 예를 들면 다음과 같습니다.

      • ansible 사용자 암호를 입력한 후 이 호스트의 모든 사용자 및 그룹으로 모든 명령을 실행할 수 있는 권한을 ansible 사용자에게 부여하려면 다음을 사용합니다.

        ansible   ALL=(ALL) ALL
      • ansible 사용자 암호를 입력하지 않고 이 호스트의 모든 사용자 및 그룹으로 모든 명령을 실행할 수 있는 권한을 ansible 사용자에게 부여하려면 다음을 사용합니다.

        ansible   ALL=(ALL) NOPASSWD: ALL

    또는 보안 요구 사항과 일치하는 더 세분화된 정책을 구성합니다. sudoers 정책에 대한 자세한 내용은 sudoers(5) 매뉴얼 페이지를 참조하십시오.

검증

  1. 모든 관리형 노드의 제어 노드에서 명령을 실행할 수 있는지 확인합니다.

    [ansible@control-node]$ ansible all -m ping
    BECOME password: <password>
    managed-node-01.example.com | SUCCESS => {
        	"ansible_facts": {
        	    "discovered_interpreter_python": "/usr/bin/python3"
        	},
        	"changed": false,
        	"ping": "pong"
    }
    ...

    하드 코딩된 모든 그룹에는 인벤토리 파일에 나열된 모든 호스트가 동적으로 포함됩니다.

  2. Ansible command 모듈을 사용하여 모든 관리 노드에서 whoami 유틸리티를 실행하여 권한 에스컬레이션이 올바르게 작동하는지 확인합니다.

    [ansible@control-node]$ ansible all -m command -a whoami
    BECOME password: <password>
    managed-node-01.example.com | CHANGED | rc=0 >>
    root
    ...

    명령이 root를 반환하면 관리 노드에서 sudo 를 올바르게 구성한 것입니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.