deployの自動化は重要ということで、aws codedeployに活躍してもらうことにしました
今回のdeployはec2へのdeploy
github -> codedeploy -> ec2インスタンス
codedeploy
AWS CodeDeploy は、Amazon EC2、AWS Fargate、AWS Lambda、オンプレミスで実行されるサーバーなど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化する、フルマネージド型のサービスです。
awsのdeployサービスです。
設定の流れ
- ec2にリリース用のタグ設定
- codedeployのアプリケーション作成
- codedeployのデプロイグループ作成
- codedeployのデプロイ画面よりデプロイグループを利用して、どのソースからdeployをするか設定し実行
準備
ec2のリリースしたいインスタンスにタグを付与
タグに該当するインスタンスへdeployが行われるため、判断できればなんでもいい。

aws consoleでcodedeploy のデプロイグループ作成
codedeployのアプリケーションとデプロイグループ作成
このデプロイグループでどのインスタンスにリリースを行うか設定ができる

新規でアプリケーション作成


デプロイグループ作成

名称、サービスロールを設定し、環境設定でリリースするインスタンスのタグを設定

エージェントの設定。更新にしておくほうがいいと思うが、最初は1回だけでやってみる。


エージェントの導入
ec2側にエージェントが入っている必要があり、エラーが出る場合は手動でいれたほうがいい。
コードにappspec.ymlを追加
version: 0.0
os: linux
files:
- source: /
destination: /var/www/app
sourceに元のファイル, destinationにサーバーの配置場所を書きます。
deployの作成
デプロイタグよりデプロイ作成

deployするコードを指定する
Githubのコードでリリースする場合、最初にGithubに接続からGithubにサインインすることで、アプリケーション設定とトークン発行が行われる

リポジトリ名はアカウント名から必要 例)kazu22002/TestApp

「デプロイの作成」で実行される
デプロイの履歴で実行されていることが確認できれば、とりあえず実行まで完了
まとめ
とりあえず実行までやってみました。実際のアプリケーションではもっと工夫が必要になりますが、コードをサーバーにリリースする。という部分がサービス任せになり、自動化への準備ができた感じです。
自動化する場合は、githubへコードが上がったことをトリガーにリリースが作成する仕組みが必要になります。
この辺りはcodepipelineやcircleciなど色々ありますね。
個人的には、まだ画面から設定を作りますが、awsコマンドで作るのは便利ですね。あまり多用していないため書き方がわかっていないだけですが、コマンドだと画面構成が変わっても使えるから後々わかりやすいかもしれないですね。
次は実際のアプリの場合にやったことを書いてみます。