[RHEL] dnf-automatic 을 이용한 패키지 업데이트 자동화
구성 환경: AWS RHEL 9 instance
만약 패키지들을 정기적으로 업데이트 하려면 어떻게 해야할까?
RHEL 에서는 패키지 업데이트를 자동으로 및 정기적으로 확인하고 다운로드하려면 dnf-automatic 패키지에서 제공하는 DNF 자동 도구를 사용할 수 있다.
- DNF Automatic 은 systemd 타이머, cron 작업 및 기타 해당 도구를 사용하여 자동 및 일반 실행에 적합한 대체 명령줄 인터페이스이다.
- DNF Automatic 은 필요에 따라 패키지 메타데이터를 동기화한 다음 사용 가능한 업데이트를 확인한다. 그런 다음 도구는 구성 방법에 따라 다음 작업 중 하나를 수행할 수 있다. 그런 다음 표준 출력 또는 이메일과 같이 선택한 메커니즘에서 작업 결과를 보고 가능하다.
- 종료
- 업데이트된 패키지 다운로드
- 업데이트 다운로드 및 적용
동작 테스트 해보기
1) sudo su 로 root 권한으로 접속
어차피 테스트 이기도 하고 계속 sudo 를 쳐야하는 어려움 때문에 먼저 선수처버림.
2) timedate 한국 시간대로 맞추기.
타이머 설정을 한국시간대로 할 것이기 때문.
timedatectl
timedatectl set-timezone Asia/Seoul
systemctl daemon-reload
3) dnf-automatic 설치
dnf install dnf-automatic
rpm -qi dnf-automatic
4) dnf-automatic 설정 및 원하는 업데이트 시간으로 타이머 설정
vi /etc/dnf/automatic.conf
## download_updates = yes 로 바꿔주기
## 업데이트되게 하려면. 내 테스트 목적 자체가 자동으로 최신 패키지로 설치 및 업데이트 되어야하는 것이기 때문.
vi /usr/lib/systemd/system/dnf-automatic.timer
[Unit]
Description=dnf-automatic timer
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target
[Timer]
OnCalendar=*-*-* 19:45 #원하는 시간으로(한국시간대)
RandomizedDelaySec=0
Persistent=true
[Install]
WantedBy=timers.target
5) curl 버전 다운그레이드
# 현재 패키지(curl) 버전 확인
rpm -q curl
# 해당 패키지의 가능한 버전 확인
dnf --showduplicates list curl
# 원하는 버전으로 다운그레이드
dnf downgrade curl-<version>
6) 재실행
systemctl daemon-reload
systemctl restart dnf-automatic.timer
systemctl status dnf-automatic.timer
7) 타이머 잘 동작하는지 확인

-> 실시간으로 timer가 동작하고 있는 것을 볼 수 있다.
테스트 결과 ㅣ 다운그레이드 시켰던 curl 버전이 시간이 지나 다시 업그레이드된 것을 확인할 수 있다.



느낀점:
테스트할 때 명령어 하나하나씩 실행하고 나서 잘 먹혔는지 확인하기. ex) systemctl status 명령어 사용해서 동작 확인.
그리고 만약 문제가 생겼다면 어느 로그를 봐야하는지 빠르게 파악이 필요함. ex) cat /var/log/dnf.log

참고자료