CentOS 7 서버를 수동으로 구성하기 위해 튜토리얼을 사용하는 데 많은 시간을 소비했다는 것을 알았습니다. 튜토리얼의 수동 단계를 동일한 설정으로 여러 CentOS 7 서버를 구성하는 데 사용할 수 있는 자동화된 쉘 스크립트로 어떻게 변환할 수 있습니까?
사용하자이 튜토리얼예를 들어, 단순히 자동화할 작동 쉘 스크립트를 제공하는 것 이상으로 대답은 다른 구성 쉘 스크립트에 일반화될 수 있어야 합니다.이 튜토리얼.
이것은 쉘 스크립트에 대한 나의 첫 번째 시도입니다.
#!/bin/bash
yum update
yum install yum-utils bzip2 bzip2-devel wget curl tar
sudo yum install gcc-c++
cd /opt
wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz
tar zxf node-v0.12.7.tar.gz
cd node-v0.12.7
./configure --prefix=/usr/local
make
make install
npm install bower -g
npm install gulp -g
위의 쉘 스크립트를 올바르게 작성하는 방법은 무엇입니까? 예를 들어, 각 단계가 올바르게 완료되었는지 어떻게 확인하나요? 위 명령을 실행하려면 루트여야 합니다. sudoer로 실행하는 경우 정기적인 비밀번호 요청을 어떻게 처리합니까? 아니면 쉘 스크립트에 있다는 사실은 스크립트를 처음 호출할 때 sudoer 비밀번호만 제공하면 된다는 의미입니까?
저는 쉘 스크립팅을 처음 접하는 사람이므로 다른 쉘 스크립팅 초보자가 이해할 수 있는 언어로 설명해주세요.
또한 이는 yum install
대기와 같이 CentOS 7에만 국한된 것이 아닙니다.
답변1
귀하의 질문에는 여러 부분이 있으며 귀하가 실행하는 모든 명령에 익숙하다고 주장할 수는 없지만 다음은 제 의견입니다.
루트로(직접) 또는 sudo를 통해 전체 스크립트를 실행합니다. 이렇게 하면 스크립트 자체에서 sudo를 실행할 필요가 없습니다. 특정 단계를 수행하기 위해 sudo가 필요한 경우 sudoers에서 NOPASSWD 플래그를 사용하여 ID를 설정하거나 스크립트 실행 중에 비밀번호를 묻는 대화형 프롬프트를 수락해야 합니다.
각 단계의 올바른 실행에 대한 다른 일반적인 질문에 대답하려면 단계의 반환 코드를 확인하고 기존 프로그램이 반환 코드를 올바르게 설정하기를 바랍니다.
몇 가지 예:
약어:
yum update && \
yum install yum-utils bzip2 bzip2-devel wget curl tar
긴 손:
yum update
RC=$?
if [ $RC -ne 0 ]
then
print "Some error message here"
exit 1 ## or some other identifying error code
fi
yum install yum-utils bzip2 bzip2-devel wget curl tar
RC=$?
if [ $RC -ne 0 ]
then
print "Some other error message here"
exit 2 ## or some other identifying error code
fi
...
답변2
말씀하신 대로 자동화된 쉘 스크립트여야 합니다. 최소한 두 개의 yum 명령에 대해 추가해야 -y
yum이 대답을 "라고 가정할 수 있습니다.예“모든 질문에 대해 물어볼 것입니다.
보다Yum 매뉴얼 페이지, 관련 발췌:
-y, --assumeyes Assume yes; assume that the answer to any question which would be asked is yes. Configuration Option: assumeyes
알아야 할 몇 가지 중요한 팁을 포함한 자세한 내용은 기존 문제를 참조하세요."yum -y install"은 안전한가요?