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

  • 5
    Like
  • 1
    Comment
More than 1 year has 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"
            }
        }
    ]
}