사용하기 전에
Q. 네이버 클라우드 플랫폼 Init-Script이 무엇인가요?
- Init-Script는 사용자가 미리 작성해 둔 스크립트를 서버 생성 시 자동으로 실행시킬 수 있는 기능으로, 서버의 초기 환경 구축 시 편리하게 활용할 수 있습니다.
Q. Init-Script 생성 및 사용은 어떻게 하나요?
- 콘솔에 접속한 후 다음의 단계를 통해 쉽게 Init-Script를 생성 및 사용할 수 있습니다.
- 콘솔 접속 : 네이버 클라우드 플랫폼에서 제공하는 콘솔에 접속합니다.
- Script 생성 : 생성하고자 하는 Script 이름, OS 선택, Script를 작성한 후 생성합니다.
- 수정 및 삭제 : 생성한 Script를 수정 및 삭제가 가능합니다.
- 서버 생성 시 Init-Script 이용 : 생성한 Script는 서버 생성 시 적용하여 수행하도록 합니다. 단, 서버 이미지나 유사 서버로 서버를 생성할 경우에는 Init-Script를 이용할 수 없습니다.
Q. Init-Script의 주요 특징은 무엇인가요?
- 사용자 정의 스크립트를 관리 콘솔에서 편리하게 생성 및 관리합니다.
- 서버 생성 시 스크립트를 손쉽게 선택 및 적용할 수 있습니다.
- 관리 콘솔 뿐 아니라 RESTful API로도 제공되어 개발 시 다양하게 활용할 수 있습니다.
- 다양한 스크립트 언어 지원합니다.
- Linux 계열: Python, Perl, Shell 스크립트
- Windows 계열: Visual Basic 스크립트
- 서버를 처음 구동할 때 패키지 설치 및 환경 설정에 편리하게 이용할 수 있습니다.
Q. 어떤 경우에 Init-Script를 사용하나요?
- 같은 용도 서버를 여러 대 일괄로 생성하는 경우 : 사용자 스크립트 생성 후 여러 서버 생성 시 해당 스크립트 일괄 적용합니다.
- 동일한 환경의 서버를 주기적으로 생성하는 경우 : 사용자 스크립트를 생성하고 저장한 후, 서버 생성 시 해당 스크립트 선택 적용합니다.
- 용도별로 서버 초기 환경 관리가 필요한 경우 : 용도별로 다양한 스크립트를 생성하고 저장한 후, 서버 생성 시 필요에 따라 선택하여 사용합니다.
Script 생성
Step 1. 콘솔 접속
콘솔에 접속합니다.
① 초기에는 생성된 Script가 없음을 확인합니다. 상단 메뉴에서 +Script 생성 버튼을 클릭하여 Script를 생성할 수 있습니다.
Step 2. Script 생성
신규 Script를 생성합니다.
서버 생성 시 자동 실행될 Script를 사용자가 직접 생성할 수 있습니다.
사용자 Script로 인한 인프라 장애 발생 시, 네이버 클라우드 플랫폼에서는 지원하지 않습니다.
① 생성할 Script 이름을 입력합니다.
② OS 타입을 선택합니다. OS별로 사용할 수 있는 스크립트 유형이 다릅니다.
③ Script를 작성합니다.
- Linux는 Python/Perl/Shell 등의 스크립트 사용 가능합니다. 단, 첫 줄에 #!/bin/bash, #!/usr/bin/env python, #!/bin/perl 등과 같은 형태로 실행하고자 하는 스크립트 경로를 지정하고 실행하셔야 됩니다.
- Window는 Visual Basic 스크립트만 작성 가능합니다.
- 스크립트의 내용은 영문으로만 작성해야 하며, 한글, 주석 등은 포함될 수 없습니다.
- 스크립트 내용에 보안 침해가 있을 수 있는 내용은 포함시키면 안되며, 이로 인해 발생되는 문제에 대한 귀책사유가 될 수 있습니다.
④ 메모형식으로 설명을 입력해둡니다. (선택)
⑤ Script 생성 버튼을 클릭합니다.
Script 관리하기
수정
생성한 Script를 수정할 수 있습니다.
① 리스트에서 수정할 Script를 선택합니다.
② 수정 버튼을 클릭합니다.
③ Script 이름을 제외한 OS 타입 및 Script를 수정할 수 있습니다. 이후 +Script 수정 버튼을 클릭합니다.
삭제
생성한 Script를 삭제할 수 있습니다.
① 리스트에서 삭제할 Script를 선택합니다.
② 삭제 버튼을 클릭합니다. 삭제하면 리스트에서도 삭제됩니다.
서버 생성 시 Script 이용하기
서버 생성 시, 미리 생성해 둔 Script를 선택하여 적용할 수 있습니다.
① 서버의 서버 생성 버튼을 클릭합니다.
② 서버 생성 프로세스 중, 서버 생성 가이드 > Step 2. 서버 설정 단계를 확인합니다.
③ ‘Script 선택’ 항목에서 Init-Script 메뉴에서 생성한 Script 리스트가 노출됩니다. 적용할 Script를 선택하고 ‘서버 생성’ 이 완료되면 지정한 스크립트가 수행됩니다. 서버가 운영중인 상태에서 스크립트 설치가 진행중일 수도 있습니다.
- 설치 완료 여부를 확인하기 위해서는 진행 상태에 대한 로깅이 필요합니다.
- Linux는 /var/log/ncloud-init.log
- Windows는 C:\Program Files(X86)\NBP\ncloud-init\logs를 참고하면 됩니다.
Script Sample
Linux 계열의 경우
Apache HTTP Server 설치
Perl script sample
#!/usr/bin/perl –w
$result = `yum update-to httpd`;
if ($result =~ /but not installed/) {
print "http available\n";
if ($result =~ /httpd available/) {
print "http not installed\n";
$iresult = `yum -y install httpd`;
if ($iresult =~ /Complete/) {
print "http installed\n";
open (WP, ">/var/www/html/index.html") || die "cannot open index.html\n";
print WP `ifconfig eth0 | grep "inet addr" | awk \'{print \$2}\'`;
close(WP);
`chkconfig --level 345 httpd on`;
`service httpd restart`;
}
}
else {
print "http NOT available\n";
}
}
else {
print "http already installed\n";
}
Shell script sample
#!/bin/sh
result=`yum update-to httpd`
if [[ $result =~ *"but not installed"* ]]
then
if [[ $result =~ *"httpd available"* ]]
then
echo 'http available'
echo 'http not installed'
$iresult=`yum -y install httpd`
if [[ $iresult =~ *"Complete"* ]]
then
echo 'http installed'
echo 'test' >> /var/www/html/index.html
/sbin/chkconfig --level 345 httpd on
/sbin/service httpd restart
fi
else
echo 'http Not available'
fi
else
echo 'http already installed'
fi
Windows 계열의 경우
Java JDK 설치
Visual Basic script sample
LOG_DIRECTORY = "C:\Windows\Temp"
DEFAULT_LOG_FILE_PATH = LOG_DIRECTORY + "\init-install.log"
Set ws = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
' logging (file & stdout)
Function logInfo(str)
WScript.Echo CStr(Now()) + " [INFO]: " + str
Set objFile = objFSO.OpenTextFile(DEFAULT_LOG_FILE_PATH, 8, True)
objFile.WriteLine CStr(Now()) + " [INFO]: " + str
objFile.Close
End Function
tmp_jdk_download_path="C:\Windows\Temp\jdk.exe"
jdk_installer_url="http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-windows-x64.exe"
cmd="wget --no-check-certificate --no-cookies --header ""Cookie: oraclelicense=accept-securebackup-cookie"" " + jdk_installer_url + " -O " + tmp_jdk_download_path + " -c"
' download jdk
ws.Run cmd,,TRUE
WScript.Sleep 5000
javaInstallCmdStr = "C:\Windows\Temp\jdk.exe /s /L C:\Windows\Temp\jdk-install.log"
Set oExec1 = ws.Exec(javaInstallCmdStr)
Do While oExec1.Status = 0
loginfo "Info: Wait for install JDK to finish."
WScript.Sleep 10000
Loop
연관 정보 바로가기
아래 가이드에서 연관 정보를 확인할 수 있습니다.