2.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 managed-node-01.example.com -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root
명령이 root를 반환하면 관리 노드에서
sudo
를 올바르게 구성한 것입니다.
추가 리소스
- RHEL 8에서 제어 노드 준비
-
sudoers(5)
매뉴얼 페이지