서버관리_07 서버 구축 패키지 목록을 셸 스크립트 형태로 관리하기

 
  • 출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어

명령어: yum
키워드: RPM 패키지, 설치, 구축
사용처: 서버 구축 작업에서 패키지 설치를 자동화하고 싶을 때 사용합니다.

실행 예제

# ./yum-install.sh
Loaded plugins: fastestmirror, security
Loding mirror speeds from cached hostfile
(생략)
yum 명령어로 httpd, zsh, xy, git 설치

스크립트

#!/bin/sh

# 설치할 패키지명 정의
pkglist="httpd zsh xz git"            # ----- 1

# 패키지 목록에서 순서대로 한 줄씩 읽기
for pkg in $pkglist            # ------------ 2
do
    # yum 명령어로 패키지 설치
    yum -y install $pkg          # ---------- 3
done

해설

이 스크립트는 셸 변수 pkglist로 지정한 패키지를 서버에 자동으로 설치합니다. 신규 서버 초기 구축에 사용해서 처리를 자동화하는데 사용할 수 있습니다. 여기서는 httpd, zsh, xz, git을 설치한다고 가정합니다.

예제에서 패키지 관리에 사용하는 yum 명령어는 RPM 패키지를 설치하는데 사용됩니다. 의존 관계가 있는 패키지도 함께 설치해줘서 무척 편리하므로 rpm 명령어보다 널리 사용됩니다.

서버 구축 시 패키지 설치에 이렇게 스크립트를 쓰는데는 다 이유가 있습니다. 전통적으로 이런 설치 작업은 구축 작업서로 다음처럼 만들어서 문서화합니다.

  • 서버 구축 작업서 예제
    1. 필요한 패키지를 설치
    1.1 httpd 설치
    1.2 zsh 설치
    (생략)
    

하지만 이런 문서로 하는 작업은 서버 구축에 익숙하지 않으면 담당자에 따라 실수를 할 수도 있습니다. 작업서를 예제처럼 스크립트 형태로 만들면 다른 담당자와 교대해도 스크립트를 실행하기만 하면 되므로 작업 실수를 방지할 수 있습니다.

즉, 예제는 서버 구축 작업을 스크립트화해서 작업 편리성 향상과 실수를 방지하는 두 가지 목적을 위한 것입니다.

1 에서 설치할 패키지를 정의합니다. 여기서는 httpd, zsh, xz, git이라는 네 가지 패키지를 설치합니다. 이런 스크립트는 서버에 배포하는 작업을 하므로 목록은 외부 파일이 아니라 이렇게 스크립트에 두는 것이 좋습니다. 목록을 외부 파일로 만들면 목록 파일을 복사하는 걸 잊는다든지 해서 작업 실수가 생길 수도 있습니다.

2 에서 for문은 셸 변수 pkglist의 값을 셸 변수 pkg로 하나씩 읽어들입니다. 3 에서 이용하는 yum 명령어는 install을 지정해서 패키지를 설치합니다. yum 명령어에서 자주 사용하는 명령어를 표로 정리했습니다.

  • yum 주요 명령어

    명령어 의미
    yum install 패키지 설치
    yum info 패키지 정보 표시
    yum list 사용 가능한 패키지 목록 표시
    yum search 키워드로 패키지 검색
    yum update 이미 설치된 패키지를 업데이트
    yum erase 패키지 삭제

    그리고 yum 명령어로 패키지를 설치하면 도중에 설치할 것인지 묻게 됩니다.

  • yum 명령어로 설치하면 문의가 표시됨

    (생략)
    Installed size : 2.9 M
    Is this ok [y/N]:
    

-y 옵션을 사용하면 이런 문의에 전부 자동으로 y를 회답합니다. 여기에서는 자동화 스크립트를 만들기 때문에 -y 옵션이 필수입니다. 이렇게 하면 서버 패키지 설치 구축 작업을 스크립트로 자동화할 수 있습니다. 사용할 때는 각자 자기에게 맞도록 수정해서 사용하기 바랍니다.

주의사항

  • 이 스크립트는 패키지 설치를 실행하므로 root 권한으로 실행해야 합니다.
  • 리눅스(CentOS)의 yum 명령어를 이용하므로 CentOS에서만 동작합니다. Mac과 FreeBSD는 대상 외입니다.
  • 서버 구축자동화는 최근에 셰프(Chef)나 퍼핏(Puppet) 같은 고성능 소프트웨어가 널리 사용됩니다. 아직 오래되지 않은 소프트웨어이기 때문에 사용하려면 위험성도 있지만 패키지 설치뿐만 아니라 각종 설정 파일 자동 설정도 가능하는 등 무척 편리합니다. 서버 구축 자동화에 흥미가 있으면 조사해보기 바랍니다.