Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CloudShellをIaC実行基盤として考える

濱田孝治
December 29, 2020

 CloudShellをIaC実行基盤として考える

re:Invent2020で待望のAWS版CloudShellが発表されました。いろんな使い方が想定されていますが、この資料では、AWS CloudShellをinfrastructure as Codeの実行基盤として使うときに、従来の方法と比較して考慮や注意が必要な点を纏めています。

濱田孝治

December 29, 2020
Tweet

More Decks by 濱田孝治

Other Decks in Technology

Transcript

  1. 4 IaCとは Infrastructure as Code(インフラをコードで定義) • CloudFormation • Terraform •

    AWS Cloud Development Kit(AWS CDK) • Pulumi コードはリポジトリに格納されバージョン管理される
  2. 5 IaC実⾏基盤とは インフラのコードを実⾏する場所 • CloudFormation • create-stack • Terraform •

    terraform plan • AWS Cloud Development Kit(AWS CDK) • cdk deploy • Pulumi • pulumi up
  3. 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とかは地獄
  4. 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の最新バージョンの反映にどのぐらいタイムラグあ るか不明なので、不安なら都度アップデートしましょう
  5. 14 4.IaC実⾏のための前準備 Terraformの場合 • IaCのコード • CloudFormationと同じ • Terraformの実⾏ •

    公式の「Install Terraform」のLinux版はそのまま動いた • ブートストラップ的なシェルにいれておけば⼿間なく準備でき そう • tfstateはそのアカウントのS3に⼊れておく前提