LabHub

RHEL 계열 관리 · RHCE — Ansible 로 RHEL 을 다룬다 · 실습

Ansible 로 RHEL 을 실제로 바꾼다

LabHub 에서 이어서 보기

이 실습은 진짜 RHEL 계열에서 돕니다

VM 안에 AlmaLinux 9 가 떠 있습니다. systemd 가 PID 1 로 돌고, **SELinux 가
Enforcing** 이며, firewalld 가 살아 있습니다. 플레이북이 시스템을 진짜로
바꾸고, 채점기는 그 결과를 시스템에서 직접 읽습니다.

기존 Ansible 코스는 파드에서 돌아 문법 확인까지가 전부였습니다. 여기서는
설정하지 않으면 실제로 막힙니다.

처음 뜨는 데 2분쯤 걸립니다.

목표

RHCE 시험이 실제로 묻는 것들을 한 바퀴 돕니다. 사용자, 서비스, SELinux,
방화벽, 템플릿, 그리고 멱등성입니다.

왜 중요한가

RHCE(EX294)는 "Ansible 문법을 아는가" 를 묻지 않습니다. **시스템을 원하는
상태로 만들 수 있는가**를 묻습니다. 그래서 감점의 대부분이 문법이 아니라
이런 데서 나옵니다.

마지막 것이 특히 중요합니다. 멱등하지 않은 플레이북은 **돌릴 때마다 무언가를
바꾸는 플레이북**입니다. 그러면 "이번 실행이 무엇을 바꿨는가" 를 알 수 없고,
핸들러가 매번 서비스를 재시작해 불필요한 중단이 생깁니다.

단계

1. /root/rhce/inventory.ini[webservers] 그룹으로 이 호스트를 넣고, /root/rhce/ansible.cfg 도 만드세요. ansible webservers -m ping 이 성공해야 합니다.
2. /root/rhce/users.ymlwebadmin 그룹과 alice·bob 사용자(셸 /bin/bash, 보조 그룹 webadmin)를 만드세요. 반복(loop) 을 쓰세요.
3. /root/rhce/service.ymlhttpd 를 설치하고 started 와 enabled 를 모두 만족시키세요. curl http://127.0.0.1/ 이 200 이어야 합니다.
4. /root/rhce/selinux.ymlhttpd_can_network_connect 불리언을 영구히 켜고, /srv/webhttpd_sys_content_t 컨텍스트를 붙이세요.
5. /root/rhce/firewall.ymlhttp 서비스를 방화벽에 여세요. runtime 과 permanent 를 모두 만족시켜야 합니다.
6. /root/rhce/templates/index.html.j2 로 호스트명이 들어간 페이지를 만들고 /root/rhce/template.yml 로 배포하세요. 바뀔 때만 httpd 를 재시작하는 핸들러를 쓰세요.
7. 위 전부를 부르는 /root/rhce/site.yml 을 만드세요. 그리고 상태를 일부러 흔들어 놓은 뒤(서비스 중지·파일 삭제·계정 삭제) 두 번 돌려 changed 수를 /root/rhce/idempotent.txtchanged_first=·changed_second= 로 적으세요.
첫 번째는 0보다 커야 하고 두 번째는 0 이어야 합니다. 흔들지 않고 재면 첫 실행부터 0 이라 "고쳐서 0 이 됐다" 와 "원래 아무것도 안 했다" 를 구분할 수 없습니다.
8. /root/rhce/report.mdselinux=Enforcing, idempotent=yes, playbooks=<개수> 세 줄과 설명을 쓰세요.

참고

단계 8개

  1. 인벤토리와 설정 파일
  2. 사용자와 그룹을 만든다
  3. 서비스는 두 가지를 만족해야 한다
  4. SELinux 는 켜져 있고 실제로 막는다
  5. runtime 과 permanent 는 다르다
  6. 바뀔 때만 재시작한다
  7. 두 번째 실행은 조용해야 한다
  8. 무엇을 배웠나