기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 지정 부트스트랩 작업
AWS ParallelCluster 는 클러스터가 생성될 때 기본 부트스트랩 작업 이전(설치 전) 또는 이후(설치 후) 임의의 코드를 실행할 수 있습니다. 대부분의 경우 이 코드는 Amazon Simple Storage Service(Amazon S3)에 저장되고 HTTPS 연결을 통해 액세스됩니다. 이 코드는 루트로 실행되며 클러스터 OS에서 지원되는 어떠한 스크립트 언어로든 작성될 수 있습니다. 코드는 일반적으로 Bash 또는 Python으로 작성됩니다.
, NATAmazon Elastic Block Store(AmazonEBS) 또는 스케줄러 구성과 같은 클러스터 배포 부트스트랩 작업이 시작되기 전에 설치 전 작업이 호출됩니다. 일부 사전 설치 작업에는 스토리지 수정, 사용자 및 패키지 추가가 포함될 수 있습니다.
설치 후 작업은 클러스터 부트스트랩 프로세스가 완료된 후에 호출됩니다. 설치 후 작업은 인스턴스가 완전히 구성되고 완료된 것으로 간주되기 전에 발생하는 마지막 작업을 제공합니다. 일부 사후 설치 작업에는 스케줄러 설정 변경, 스토리지 및 패키지 수정이 포함될 수 있습니다.
구성 중에 인수를 지정하여 인수를 스크립트에 전달할 수 있습니다. 이를 위해 인수는 따옴표로 묶여서 사전 설치 또는 사후 설치 작업에 전달됩니다.
사전 설치 또는 사후 설치 작업이 실패하면 인스턴스 부트스트랩도 실패합니다. 성공할 경우 종료 코드 0으로 표시됩니다. 다른 종료 코드는 인스턴스 부트스트랩이 실패했음을 나타냅니다.
실행 중인 헤드 노드와 컴퓨팅 노드를 구분할 수 있습니다. /etc/parallelcluster/cfnconfig
파일을 소싱하고 헤드 및 컴퓨팅 노드에 대해 가능한 값이 각각 “MasterServer
” 및 “ComputeFleet
”인 cfn_node_type
환경 변수를 평가합니다.
#!/bin/bash . "/etc/parallelcluster/cfnconfig" case "${cfn_node_type}" in MasterServer) echo "I am the head node" >> /tmp/head.txt ;; ComputeFleet) echo "I am a compute node" >> /tmp/compute.txt ;; *) ;; esac
구성
다음 구성 설정은 사전 설치 및 사후 설치 작업과 인수를 정의하는 데 사용됩니다.
# URL to a preinstall script. This is run before any of the boot_as_* scripts are run # (no default) pre_install = https://
<bucket-name>
.s3.amazonaws.com/my-pre-install-script.sh
# Arguments to be passed to preinstall script # (no default) pre_install_args = argument-1 argument-2 # URL to a postinstall script. This is run after any of the boot_as_* scripts are run # (no default) post_install = https://<bucket-name>
.s3.amazonaws.com/my-post-install-script.sh
# Arguments to be passed to postinstall script # (no default) post_install_args = argument-3 argument-4
인수
처음 두 개의 인수 $0
및 $1
은 스크립트 이름과 URL에 예약됩니다.
$0 => the script name $1 => s3 url $n => args set by pre/post_install_args
예
다음은 클러스터에 R 패키지를 설치하는 간단한 사후 설치 스크립트를 생성하는 단계입니다.
-
스크립트를 생성합니다.
#!/bin/bash echo "post-install script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:2}"
-
올바른 권한을 사용하여 스크립트를 Amazon S3에 업로드합니다. 퍼블릭 읽기 권한이 적절하지 않은 경우, s3_read_resource 또는 s3_read_write_resource 파라미터를 사용하여 액세스 권한을 부여하세요. 자세한 내용은 Amazon S3 작업 단원을 참조하십시오.
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://<bucket-name>/myscript.sh
중요
Windows에서 스크립트를 편집한 경우 스크립트를 Amazon S3CRLF에 업로드하기 전에 줄 끝을 LF에서 LF로 변경해야 합니다.
-
새 설치 후 작업을 포함하도록 AWS ParallelCluster 구성을 업데이트합니다.
[cluster default] ... post_install = https://
<bucket-name>
.s3.amazonaws.com/myscript.sh
post_install_args = 'R curl wget'버킷에 퍼블릭 읽기 권한이 없는 경우 를 URL 프로토콜
s3
로 사용합니다.[cluster default] ... post_install = s3://
<bucket-name>
/myscript.sh
post_install_args = 'R curl wget' -
클러스터를 시작합니다.
$
pcluster create mycluster
-
출력을 확인합니다.
$
less /var/log/cfn-init.log
2019-04-11 10:43:54,588 [DEBUG] Command runpostinstall output: post-install script has 4 arguments arg: s3://
<bucket-name>
/test.sh arg: R arg: curl arg: wget Loaded plugins: dkms-build-requires, priorities, update-motd, upgrade-helper Package R-3.4.1-1.52.amzn1.x86_64 already installed and latest version Package curl-7.61.1-7.91.amzn1.x86_64 already installed and latest version Package wget-1.18-4.29.amzn1.x86_64 already installed and latest version Nothing to do