今回のハンズオンで X2Go および、OpenFOAM を除く、マネージメントコンソールの作業を aws cli で実現すると下記のようになります。確認がまだ甘いので、何かあればご連絡を!
ami-65816465
によるインスタンスは 同一リージョン上に1つしかない ことを想定して、本資料を作成しております
0 事前準備
0.1 AWS CLI 環境のインストール(AWS CLI 環境がない人のみ)
JAWS-UG CLI のページが参考になります。このページの "JAWS-UG CLIハンズオンの事前準備"を実施してください。
jqもインストールしておいてください。
0.2 AWS CLIのバージョン確認
- 今回は以下のバージョンで動作確認済みです
- AWS CLI 1.8.5
aws --version
aws-cli/1.8.5 Python/2.7.10 Darwin/14.5.0
0.3 リージョンの決定
export AWS_DEFAULT_REGION='ap-northeast-1'
0.4 変数の確認
下記コマンドを実行し、想定されるプロファイル(アクセスキー、シークレットキー、リージョン)となっていることを確認します。
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" があることを確認します。
aws ec2 describe-security-groups \
--query 'SecurityGroups[].GroupName'
利用するセキュリティグループ名を指定します。
VPC_SG_NAME='ec2-ssh-global-inbound'
セキュリティグループのIDを取得します。
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}
結果(例)
sg-xxxxxxxx
1.4 KeyPairの決定
キーペアを決めます。キーペアを始めて作る場合はこちらを参考に作成してください。1.1からの作業で大丈夫だと思います。
KEY='<あらかじめ作成したkeyPair名>'
1.5 インスタンスの起動
インスタンスを起動します。
いろいろ詳細に設定したければ、こちら が参考になります。
cat << ETX
image-id: ${AMI}
instance-type: ${INSTANCE_TYPE}
key-name: ${KEY}
security-group-ids: ${VPC_SG_ID}
ETX
インスタンス(CAELinux)を起動します。
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)の起動確認
下記コマンドを実行します。
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アドレスは下記にて取得できます。
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へのログイン
KEY_PAIR_PATH='<あらかじめ作成し保存した${KEY}のファイルパス>'
ssh -i ${KEY_PAIR_PATH} ubuntu@${IP_ADRESS}
2. OpenFOAMの実行
2.1 caelinuxアカウントの設定
cd
./setupCAELinuxUser.sh
指示に従って任意のパスワードを入力します。
2.2 X2Go Clientの起動
GUI操作なので詳細は省略します。
お手元のPCからX2Go Clientを立ち上げて、ログインしてください
2.3 OpenFOAM 起動/プリ処理/実行/可視化
OpenFOAM terminalからの操作、もしくはGUI操作なので詳細は省略します。
PPT資料を参考にしてください
3. 後始末
3.1 InstanceIdの取得
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 インスタンスの削除
aws ec2 terminate-instances \
--instance-ids ${INSTANCE_ID}
{
"TerminatingInstances": [
{
"InstanceId": "i-5a5db3ff",
"CurrentState": {
"Code": 32,
"Name": "shutting-down"
},
"PreviousState": {
"Code": 16,
"Name": "running"
}
}
]
}