Edited at

[JAWS-UG HPC] #1 AWS CLI で CAELinux(ami-65816465)を立ち上げる

More than 3 years have passed since last update.

今回のハンズオンで X2Go および、OpenFOAM を除く、マネージメントコンソールの作業を aws cli で実現すると下記のようになります。確認がまだ甘いので、何かあればご連絡を!

ami-65816465によるインスタンスは 同一リージョン上に1つしかない ことを想定して、本資料を作成しております


0 事前準備


0.1 AWS CLI 環境のインストール(AWS CLI 環境がない人のみ)

JAWS-UG CLI のページが参考になります。このページの "JAWS-UG CLIハンズオンの事前準備"を実施してください。

http://qiita.com/tcsh/items/14c3278f69ab073afe0f

jqもインストールしておいてください。


0.2 AWS CLIのバージョン確認


  • 今回は以下のバージョンで動作確認済みです


    • AWS CLI 1.8.5




command

aws --version



結果

aws-cli/1.8.5 Python/2.7.10 Darwin/14.5.0



0.3 リージョンの決定


command

export AWS_DEFAULT_REGION='ap-northeast-1'



0.4 変数の確認

下記コマンドを実行し、想定されるプロファイル(アクセスキー、シークレットキー、リージョン)となっていることを確認します。


command

aws configure list



結果

      Name                    Value             Type    Location

---- ----- ---- --------
profile <not set> None None
access_key ****************DZGQ shared-credentials-file
secret_key ****************SkuR shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config


1. CAELinuxをEC2で起動してみよう!


1.1 CAELinuxのAMIの決定

下記は東京リージョン(ap-northeast-1)のみ有効です


変数の決定

AMI=ami-65816465



1.2 InstanceTypeの決定


変数の決定

INSTANCE_TYPE=c4.xlarge



1.3 セキュリティグループの決定

これを指定しないと、defaultのセキュリティーグループがつきますが、sshできない設定になっており、ログインできません。必ずやりましょう。

以下のURLの、セキュリティグループ "ec2-ssh-global-inbound" を作成してださい。 

http://qiita.com/tcsh/items/77f8c9887634fd67f4d8

下記のコマンドを実行し、"ec2-ssh-global-inbound" があることを確認します。


command

aws ec2 describe-security-groups \

--query 'SecurityGroups[].GroupName'

利用するセキュリティグループ名を指定します。


変数の設定

VPC_SG_NAME='ec2-ssh-global-inbound'


セキュリティグループのIDを取得します。


command

VPC_SG_ID=$( \

aws ec2 describe-security-groups \
--filter Name=group-name,Values=${VPC_SG_NAME} \
--query 'SecurityGroups[].GroupId' \
--output text \
) \
&& echo ${VPC_SG_ID}

結果(例)


command

sg-xxxxxxxx



1.4 KeyPairの決定

キーペアを決めます。キーペアを始めて作る場合はこちらを参考に作成してください。1.1からの作業で大丈夫だと思います。


command

KEY='<あらかじめ作成したkeyPair名>'



1.5 インスタンスの起動

インスタンスを起動します。

いろいろ詳細に設定したければ、こちら が参考になります。


変数の確認

cat << ETX

image-id: ${AMI}
instance-type:
${INSTANCE_TYPE}
key-name:
${KEY}
security-group-ids:
${VPC_SG_ID}

ETX


インスタンス(CAELinux)を起動します。


command

aws ec2 run-instances \

--image-id ${AMI} \
--instance-type ${INSTANCE_TYPE} \
--key-name ${KEY} \
--security-group-ids ${VPC_SG_ID}


結果例

{

"OwnerId": "XXXXXXXXXXXX",
"ReservationId": "r-b010fa42",
"Groups": [],
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": "",
"RootDeviceType": "ebs",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"LaunchTime": "2015-09-17T13:46:57.000Z",
"PrivateIpAddress": "XXX.XXX.XXX.XXX",
"ProductCodes": [],
"VpcId": "vpc-XXXXXXXX",
"StateTransitionReason": "",
"InstanceId": "i-XXXXXXXX",
"ImageId": "ami-65816465",
"PrivateDnsName": "ip-XXX-XXX-XXX-XXX.ap-northeast-1.compute.internal",
"KeyName": "<あらかじめ作成したkeyPair>",
"SecurityGroups": [
{
"GroupName": "default",
"GroupId": "sg-XXXXXXXX"
}
],
"ClientToken": "",
"SubnetId": "subnet-XXXXXXXX",
"InstanceType": "t2.micro",
"NetworkInterfaces": [
{
"Status": "in-use",
"MacAddress": "06:69:07:e4:b3:79",
"SourceDestCheck": true,
"VpcId": "vpc-XXXXXXXX",
"Description": "",
"NetworkInterfaceId": "eni-38d5cf4e",
"PrivateIpAddresses": [
{
"PrivateDnsName": "ip-XXX-XXX-XXX-XXX.ap-northeast-1.compute.internal",
"Primary": true,
"PrivateIpAddress": "XXX.XXX.XXX.XXX"
}
],
"PrivateDnsName": "ip-XXX-XXX-XXX-XXX.ap-northeast-1.compute.internal",
"Attachment": {
"Status": "attaching",
"DeviceIndex": 0,
"DeleteOnTermination": true,
"AttachmentId": "eni-attach-01b2471a",
"AttachTime": "2015-09-17T13:46:57.000Z"
},
"Groups": [
{
"GroupName": "default",
"GroupId": "sg-XXXXXXXX"
}
],
"SubnetId": "subnet-XXXXXXXX",
"OwnerId": "XXXXXXXXXXXX",
"PrivateIpAddress": "XXX.XXX.XXX.XXX"
}
],
"SourceDestCheck": true,
"Placement": {
"Tenancy": "default",
"GroupName": "",
"AvailabilityZone": "ap-northeast-1a"
},
"Hypervisor": "xen",
"BlockDeviceMappings": [],
"Architecture": "x86_64",
"StateReason": {
"Message": "pending",
"Code": "pending"
},
"RootDeviceName": "/dev/sda1",
"VirtualizationType": "hvm",
"AmiLaunchIndex": 0
}
]
}


1.6 インスタンス(CAELinux)の起動確認

下記コマンドを実行します。


command

aws ec2 describe-instances --filters Name=instance-state-name,Values=running | jq -r '.Reservations[] | .Instances[] | "\(.ImageId) \(.State | .Name)"' | grep $AMI


5分くらいまって、結果が次のようになるまで待ちます


結果

ami-65816465 running



1.7 EC2上に起動したCAELinuxのIPアドレスの取得

ami-65816465で立ち上げたインスタンスのIPアドレスを取得します。

このamiで立ち上げたCAELinuxは東京リージョンに1つのケースの場合、そのIPアドレスは下記にて取得できます。


command

IP_ADRESS=`aws ec2 describe-instances --filters Name=instance-state-name,Values=running | jq -r '.Reservations[] | .Instances[] | "\(.ImageId) \(.PublicIpAddress)"' | grep $AMI | awk '{print $2}'` && echo ${IP_ADRESS}



結果

XXX.XXX.XXX.XXX


IPアドレスが表示されればOK!


1.8 EC2上に起動したCAELinuxへのログイン


command

KEY_PAIR_PATH='<あらかじめ作成し保存した${KEY}のファイルパス>'



command

ssh -i ${KEY_PAIR_PATH} ubuntu@${IP_ADRESS}



2. OpenFOAMの実行


2.1 caelinuxアカウントの設定


command

cd

./setupCAELinuxUser.sh

指示に従って任意のパスワードを入力します。


2.2 X2Go Clientの起動

GUI操作なので詳細は省略します。

お手元のPCからX2Go Clientを立ち上げて、ログインしてください


2.3 OpenFOAM 起動/プリ処理/実行/可視化

OpenFOAM terminalからの操作、もしくはGUI操作なので詳細は省略します。

PPT資料を参考にしてください


3. 後始末


3.1 InstanceIdの取得


command

INSTANCE_ID=`aws ec2 describe-instances --filters Name=instance-state-name,Values=running | jq -r '.Reservations[] | .Instances[] | "\(.ImageId) \(.InstanceId)"' | grep $AMI | awk '{print $2}'` && echo ${INSTANCE_ID}



結果例

i-XXXXXXXX



3.2 インスタンスの削除


command

aws ec2 terminate-instances \

--instance-ids ${INSTANCE_ID}


結果例

{

"TerminatingInstances": [
{
"InstanceId": "i-5a5db3ff",
"CurrentState": {
"Code": 32,
"Name": "shutting-down"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}