開発環境をEC2に移行したい。
こんにちは!k-junです。
コロナでいろいろ暇なので、パソコンの開発環境をEC2に移行した話でもしようと思います。 自分の現在所持しているパソコンがMacBook 13-inch(2017) 8GB 2.3 GHz デュアルコアIntel Core i5というスペックなのですが、ここ最近開発が急に辛くなってきまして。といっても購入したのが約2年前かつ入社前ということで時期的にも買い替えには微妙な時期... ということでひとまず開発環境をEC2に移すことにしました。
他の人のブログではLambdaで管理していたりといろいろとお洒落なことをやっていたのですが、自分は簡易的なものをひとまず作ることにしました。
EC2の基本的な動作は全てMakefiledで管理することとしました。public-adderssがいちいち変わってめんどくさいのでroute53で独自ドメインを購入しておきます。https環境も同時に手に入るのでいい感じですね。
run-instance: # ubuntu 18.04 aws ec2 run-instances --image-id ami-0cd744adeca97abb1 --instance-type t2.xlarge --key-name YOUR_KEY_PAIR --security-groups YOUR_SECURITY_GROUP --user-data file://${PWD}/init.sh describe-instances: aws ec2 describe-instance-status | jq -r ".InstanceStatuses[] | select(.InstanceState.Name == \"running\") | .InstanceId" | xargs aws ec2 describe-instances --instance-id | jq -r ".Reservations[].Instances[] | .InstanceId, .PublicIpAddress" stop-instances: aws ec2 stop-instances --instance-ids YOUR_INSTANCE_ID start-instances: aws ec2 start-instances --instance-ids YOUR_INSTANCE_ID terminate-instances: aws ec2 describe-instance-status | jq -r ".InstanceStatuses[] | select(.InstanceState.Name == \"running\") | .InstanceId" | xargs aws ec2 terminate-instances --instance-id change-resource-record-sets: aws route53 list-hosted-zones --max-items 1 | jq -r ".HostedZones[] | .Id" | xargs aws route53 change-resource-record-sets --change-batch file://${PWD}/ipaddress.json --hosted-zone-id ssh-login: ssh -i ~/.ssh/KeijunAWSKeyPair.pem ubuntu@your.domain.com
現状はinstanceのstopとstartgがinstance-idを手打ちになっているので、tagなどを使ってあとでいい感じにしようかとは思っています。流石にいちいちコピペなんてやってられないですからね...
初期スクリプトはとりあえず、最低限のものだけを突っ込んでおきます。Dockerあれば開発できるやろ。
#!/bin/bash # basic setup apt -y update apt-get -y update # vim setting add-apt-repository -y ppa:jonathonf/vim apt -y update apt install -y vim cd /home/ubuntu git clone http://github.com/k-jun/dotfiles chown -r ubuntu /home/ubuntu/ chgrp -r ubuntu /home/ubuntu/ runuser -l ubuntu -c 'cd dotfiles && bash install.sh' # docker apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - apt-key fingerprint 0ebfcd88 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get -y update apt-get install -y docker-ce docker-ce-cli containerd.io # to use docker command without sudo # groupadd docker usermod -ag docker ubuntu
route53のルーティングを変更する際の設定です。aws route53 change-resource-record-sets --generate-cli-skeleton
でテンプレートの設定ファイルを精製してくれるのでこれを編集して用いています。
{ "Comment": "update resource record to created instance's public ip address", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "your.domain.com.", "Type": "A", "TTL": 300, "ResourceRecords": [ { "Value": "13.230.8.132" } ] } } ] }
これでひとまずはコマンドで開発環境を作成してまでできているはずです。現状軽いものから移行しようとしているのですが、まだまだ問題も多く完全には移行できていない状態です... お金が溜まって僕が新しいMacを買うのが先になってしまうかもしれませんね...