5장. RHEL 시스템 역할을 사용하여 성능 모니터링
시스템 관리자는 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
서브스크립션이 시스템에 연결되어 있습니다.
절차
ansible
이라는 사용자를 생성하여 플레이북을 관리하고 실행합니다.[root@control-node]# useradd ansible
새로 생성된
ansible
사용자로 전환합니다.[root@control-node]# su - ansible
이 사용자로 나머지 절차를 수행합니다.
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> ...
키 파일에 제안된 기본 위치를 사용합니다.
- 선택 사항: 연결을 설정할 때마다 Ansible에서 SSH 키 암호를 입력하라는 메시지를 표시하지 않으려면 SSH 에이전트를 구성합니다.
다음 콘텐츠를 사용하여
~/.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
사용자로 작업을 실행합니다. - 플레이북을 적용할 때마다 원격 사용자의 루트 암호를 입력하라는 메시지를 표시합니다. 이는 보안상의 이유로 권장됩니다.
관리 호스트의 호스트 이름을 나열하는 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 주소를 지정합니다.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
사용자로 다음 단계를 수행합니다.-
Red Hat 자동화 허브를
~/.ansible.cfg
파일의 기본 콘텐츠 소스로 정의합니다. 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/
디렉터리에 컬렉션을 설치합니다.
-
Red Hat 자동화 허브를
다음 단계
- 관리형 노드를 준비합니다. 자세한 내용은 관리 노드 준비를 참조하십시오.
5.1.2. 관리형 노드 준비
관리형 노드는 인벤토리에 나열되는 시스템이며, 플레이북에 따라 제어 노드에서 구성합니다. 관리 호스트에 Ansible을 설치할 필요가 없습니다.
사전 요구 사항
- 제어 노드를 준비합니다. 자세한 내용은 RHEL 8에서 제어 노드 준비를 참조하십시오.
제어 노드에서 SSH 액세스 권한이 있어야 합니다.
중요root
사용자로 직접 SSH 액세스는 보안 위험이 있습니다. 이 위험을 줄이기 위해 이 노드에 로컬 사용자를 생성하고 관리 노드를 준비할 때sudo
정책을 구성합니다. 그런 다음 제어 노드의 Ansible은 로컬 사용자 계정을 사용하여 관리 노드에 로그인하고root
와 같은 다른 사용자로 플레이북을 실행할 수 있습니다.
절차
ansible
이라는 사용자를 생성합니다.[root@managed-node-01]# useradd ansible
나중에 제어 노드는 이 사용자를 사용하여 이 호스트에 대한 SSH 연결을 설정합니다.
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
사용자로 수행할 때 이 암호를 입력해야 합니다.관리 노드에
ansible
사용자의 SSH 공개 키를 설치합니다.제어 노드에
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.
프롬프트가 표시되면
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
암호를 입력하라는 메시지가 표시되면 암호를 입력합니다.
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.
제어 노드에서 명령을 원격으로 실행하여 SSH 연결을 확인합니다.
[ansible@control-node]$ ssh managed-node-01.example.com whoami ansible
ansible
사용자에 대한sudo
구성을 생성합니다.visudo
명령을 사용하여/etc/sudoers.d/ansible
파일을 만들고 편집합니다.[root@managed-node-01]# visudo /etc/sudoers.d/ansible
일반 편집기를 통해
visudo
를 사용할 때의 이점은 이 유틸리티에서 파일을 설치하기 전에 구문 분석 오류와 같은 기본 검사를 제공한다는 것입니다.요구 사항을 충족하는
/etc/
파일에서 sudoers 정책을 구성합니다. 예를 들면 다음과 같습니다.sudoers
.d/ansibleansible
사용자 암호를 입력한 후 이 호스트의 모든 사용자 및 그룹으로 모든 명령을 실행할 수 있는 권한을ansible
사용자에게 부여하려면 다음을 사용합니다.ansible ALL=(ALL) ALL
ansible
사용자 암호를 입력하지 않고 이 호스트의 모든 사용자 및 그룹으로 모든 명령을 실행할 수 있는 권한을ansible
사용자에게 부여하려면 다음을 사용합니다.ansible ALL=(ALL) NOPASSWD: ALL
또는 보안 요구 사항과 일치하는 더 세분화된 정책을 구성합니다.
sudoers
정책에 대한 자세한 내용은sudoers(5)
매뉴얼 페이지를 참조하십시오.
검증
모든 관리형 노드의 제어 노드에서 명령을 실행할 수 있는지 확인합니다.
[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" } ...
하드 코딩된 모든 그룹에는 인벤토리 파일에 나열된 모든 호스트가 동적으로 포함됩니다.
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
를 올바르게 구성한 것입니다.
추가 리소스
- RHEL 8에서 제어 노드 준비
-
sudoers(5)
매뉴얼 페이지