15개 Bash 스크립트로 DevOps 자동화하기
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

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 파이프라인과 통합하여 배포 프로세스 간소화
  • "시간 절약" 및 "오류 감소"를 위해 필수적으로 도입