Help us understand the problem. What is going on with this article?

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

More than 5 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"
            }
        }
    ]
}
daikumatan
2002-2015: Fujixerox, Numerical simulation Engineer 2015-2016: NVIDIA Japan, BD Manager 2016-2020: Rescale Japan, Evangelist 2020-Present: XTREME-D, CTO
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away