AWS, DockerとTerraform
先日、Docker、コンテナの基礎を学べるチュートリアルに取り組んでみました。
教材にしたのはこちら。
・AWSで学ぶコンテナの基礎 – 外道父の匠
http://blog.father.gedow.net/2019/04/25/container-on-aws-part0/
「AWS ECS+Fargate構成の構築」がメインですが、
- AWSの各リソース作成はTerraformを使用
- Dockerイメージの作成コードはCodeCommitで管理し、CodeBuildでビルド、CodePipelineで自動作成
と、サーバー環境構築を省力化するツールも併せて学べるような内容となっています。
進めていく中で、チュートリアル内のコードに関して、
- RAILSのバージョン違い(6.0と5.2)
- Terraformのバージョン違い(0.12と0.11)
- Terraformで、チュートリアルに記述のないローカル変数の定義
といった点でハマって序盤はかなり苦戦し、時間もかかりましたが、修正箇所はほぼ同じなので、コツをつかんでからはスムーズに進むようになりました。
バージョンについては、古いバージョンを使ってもよかったのだろうし、ローカル変数は、変数を使わずに値を直書きすれば簡単に解決したのかもしれませんが、ハマった箇所をひとつずつ解決していくことで理解が進んだともいえます。
Dockerについては、以前少し触ってみた感じでは、
「アプリケーション開発担当者が、アプリケーションの動作環境を簡単に構築、運用するための機能」
という印象で、サーバー構築専門の僕としては、あまり出番はないのかな、とも思っていました。
しかし、ある程度はサーバー・ネットワークの知識ないと導入が難しいので、部分的にでも、環境構築を支援できるようになれればと思います。
Terraformは初めて使ってみました。
- サクサク動作する(あたりまえ?)。
- 利用者が多くネット上に情報が多い。
- 多くのクラウドサービスに対応。
- リソースをひとつずつ追加できる。
- planを実行したときのメッセージがわかりやすい。
といった点で便利だな、と。
記述フォーマットも違和感がないですし、(こちらもほとんど使ったことはありませんが)CloudFormationよりも使いやすいように感じました。
VPC、サブネットといった初期ネットワーク作成や、検証用EC2インスタンスの作成といった、自分用のTerraformコードの作成から始めて、定番のコードを蓄えていきたいです。
Alibaba Cloudにも対応しているので、そちらも試してみたいですね。
コンテナや構築自動化への取り組みはほとんどできていなかったので、よい機会となりました。