15 개의 Bash 스크립트로 DevOps 작업 자동화하여 Elden Ring을 즐길 수 있게 하기
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 초보 DevOps 엔지니어 및 루틴 작업 자동화 필요 인력
- 난이도: 중간 (Bash 기초 지식 필요, 복잡한 인프라 설정 없음)
핵심 요약
- Bash 스크립트는 DevOps 작업 자동화에 효율적
check_system_health.sh
: 시스템 상태(메모리, CPU, 디스크 사용량)를 실시간으로 모니터링clean_old_logs.sh
: 오래된 로그 파일을 정기적으로 삭제하여 디스크 공간 확보auto_deploy_docker.sh
: Docker 컨테이너를 한 명령어로 배포 가능- Bash는 빠르고 유연한 자동화 도구
- Python 또는 Ansible 대신 사용 가능, "기본이 설치되어 있는 언어"
- "시스템 동작 원리"를 이해하게 하며, DevOps의 핵심 역량 강화
섹션별 세부 요약
1. 시스템 건강 모니터링
check_system_health.sh
스크립트free
,top
,df
명령어를 활용하여 메모리, CPU, 디스크 사용량 요약- 로그 파일에서 메모리 사용량이 높은 상위 5개 프로세스 추적
- 일일 크론잡으로 이메일로 보고서 전송 가능
2. 디스크 공간 관리
biggest_files.sh
스크립트- 지정 디렉토리 내 파일 크기 계산 및 상위 10개 파일 정렬
- 예시:
./biggest_files.sh /var/log
→/var/log
디렉토리 내 대용량 파일 식별 - 주기적인 크론잡으로 디스크 공간 부족 예방
3. 로그 자동 정리
clean_old_logs.sh
스크립트- 기본값:
/var/log
디렉토리 내 7일 이상된.log
파일 삭제 find
명령어와-mtime
옵션 활용- 삭제 시
rm -v
로 진행 상황 실시간 확인
4. Docker 컨테이너 자동 배포
auto_deploy_docker.sh
스크립트docker pull
,docker stop
,docker rm
,docker run
명령어를 일괄 처리- CI/CD 파이프라인과 연동하여 자동 배포 가능
- 생산 환경 사용 시
--env-file
또는--health-check
옵션 추가 권장
5. 네트워크 상태 모니터링
ping_test.sh
스크립트- 호스트 펑션 테스트 및 패킷 손실 기록
- 기본값: Google DNS(
8.8.8.8
) 사용, 결과를.log
파일에 저장 - 크론잡으로 주기적으로 실행하여 네트워크 문제 예방
6. Git 자동 커밋/푸시
git_push_auto.sh
스크립트- 현재 디렉토리의 변경사항을 자동 커밋 및 푸시
- 커밋 메시지: 사용자 지정 또는 자동 생성 (예:
what-the-commit
활용)
7. PostgreSQL 백업 자동화
pg_backup.sh
스크립트pg_dump
명령어로 시스템 시간 기반.sql
백업 생성- S3 또는 원격 서버로 백업 파일 전송 가능
tar.gz
압축으로 백업 파일 저장
8. 디렉토리 압축 및 아카이빙
archive_directory.sh
스크립트- 지정 디렉토리의 파일을 시스템 시간 기반
.tar.gz
파일로 압축 - 기본값:
/var/log
디렉토리, 아카이브 저장 경로:~/archives
9. 실시간 파일 변경 감지
watch_directory.sh
스크립트inotifywait
사용하여/etc
,/var/www
등의 디렉토리 변경 감지- 변경 이벤트(생성, 수정, 삭제)를 로그 파일 및 콘솔에 실시간 기록
10. SSH 실패 로그 모니터링
detect_ssh_failures.sh
스크립트/var/log/auth.log
에서 실패한 SSH 로그인 시도 추적- IP 주소와 시간 기록, 빈도 기반 정렬
- Slack 웹훅 또는 이메일 알림 연동 가능
결론
- Bash 스크립트는 DevOps 작업 자동화의 핵심 도구
- 크론잡과 연동하여 예방적 관리 가능 (예: 주간 로그 정리, 일일 시스템 건강 점검)
- CI/CD 파이프라인과 통합하여 배포 프로세스 간소화
- "시간 절약" 및 "오류 감소"를 위해 필수적으로 도입