Slide 1

Slide 1 text

CloudShellを IaC実⾏基盤として考える by ハマコー 1

Slide 2

Slide 2 text

2 @hamako9999 ハマコー

Slide 3

Slide 3 text

3 IaC実⾏基盤ってなんやねん︖

Slide 4

Slide 4 text

4 IaCとは Infrastructure as Code(インフラをコードで定義) • CloudFormation • Terraform • AWS Cloud Development Kit(AWS CDK) • Pulumi コードはリポジトリに格納されバージョン管理される

Slide 5

Slide 5 text

5 IaC実⾏基盤とは インフラのコードを実⾏する場所 • CloudFormation • create-stack • Terraform • terraform plan • AWS Cloud Development Kit(AWS CDK) • cdk deploy • Pulumi • pulumi up

Slide 6

Slide 6 text

6 IaC実⾏基盤の代表例と Pros and Cons

Slide 7

Slide 7 text

7 IaC実⾏基盤の代表例とPros and Cons 構成 内容 Pros and Cons 作業⽤ クライアントPC • インフラ管理者のクライアントPCから コード実⾏ • 柔軟性は⾼いが実⾏環境を統⼀しづらい • 往々にして実⾏コードとリポジトリがずれ る EC2 (SSH接続) • EC2にSSHでログインして、コード実⾏ • IaC実⾏権限の管理が煩雑(SSH秘密鍵と IAMの2重管理) • EC2の料⾦が気になる EC2 (セッションマネー ジャー接続) • EC2にセッションマネージャーでログイ ンして、コード実⾏ • SSH接続よりマシ • EC2の料⾦が気になる Cloud9 • Cloud9にログインして、コード実⾏ • そもそもCloud9は開発環境だから使う意 味なさそう リポジトリから ⾃動適⽤ • プルリクエストでコードのテスト • エラーなければ特定ブランチマージから ⾃動デプロイ • アプリケーションデプロイフローの流れ をインフラコードに適⽤ • ⼀番オシャレで今どき • 実⾏コードがリポジトリと同⼀なのはすご く安⼼ • 構築が⼤変。terraformは良いが、CLI体系が 変なCloudFormationとかは地獄

Slide 8

Slide 8 text

8 CloudShellは IaC実⾏基盤として使えるか︖

Slide 9

Slide 9 text

9 IaC実⾏基盤として使うためにきになること 1. 実⾏権限 2. 料⾦ 3. 実⾏ログ 4. IaC実⾏のための前準備

Slide 10

Slide 10 text

10 1.実⾏権限 マネジメントコンソールアクセス時の実⾏権限をそのま ま使うため、ユーザー管理をIAMに統⼀できる AWS SSOユーザーでも問題なく権限を利⽤可能

Slide 11

Slide 11 text

11 2.料⾦ 「各リージョンで最⼤10個のシェルを同時に無料で利 ⽤可能」 ということは実質無料

Slide 12

Slide 12 text

12 3.実⾏ログ ヒストリーは残るが実⾏ログは⾃前で残す必要あり • cat $HISTFILE CloudShellは中⾝はFargateっぽいので、awslogsド ライバーからのCloudWatch Logsはそのうち対応され る匂いがするので、それを待ちましょう

Slide 13

Slide 13 text

13 4.IaC実⾏のための前準備 CloudFormationの場合 • IaCのコード • CodeCommit︓IAMの権限でそのまま”git clone” • GitHub︓認証させるのがめんどくさいため、GitHubプッシュ時 に⾃動でS3コピーしておいて、CloudShellから”aws s3 cp” • 注意︓homeディレクトリは容量が1Gなのと、IaCコードはテ ンポラリなので/tmp配下とかの利⽤を推奨 • CloudFormationの実⾏ • aws cli v2がそのまま使えるので、その前提のシェルから実⾏ できるなら問題なし • aws cli v2の最新バージョンの反映にどのぐらいタイムラグあ るか不明なので、不安なら都度アップデートしましょう

Slide 14

Slide 14 text

14 4.IaC実⾏のための前準備 Terraformの場合 • IaCのコード • CloudFormationと同じ • Terraformの実⾏ • 公式の「Install Terraform」のLinux版はそのまま動いた • ブートストラップ的なシェルにいれておけば⼿間なく準備でき そう • tfstateはそのアカウントのS3に⼊れておく前提

Slide 15

Slide 15 text

15 4.IaC実⾏のための前準備 Q︓IaC実⾏環境のためにコンテナは利⽤できないの か︖

Slide 16

Slide 16 text

16 4.IaC実⾏のための前準備 Q︓IaC実⾏環境のためにコンテナは利⽤できないの か︖ A︓CloudShellはそもそもコンテナベース。バイナリ インストールしてあれこれやってみましたが、Docker がそもそも使えないっぽい。深⼊りは怖いのでやってな い

Slide 17

Slide 17 text

17 結論 CloudShellは IaC実⾏基盤として使えるのか︖

Slide 18

Slide 18 text

18 結論 「⼤丈夫だ、問題ない」

Slide 19

Slide 19 text

19 まとめ いくらか制限はあるが、その制限をわりきって使うのは 問題なさそう • 実⾏ログをきちんと残す仕組みを構築 • 実⾏権限や履歴をCloudTrailで管理する • まずはステージングでやってみようね♡