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

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

C47bda32c8455a59471cd7e19c32c074?s=47 濱田孝治
December 29, 2020

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

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

C47bda32c8455a59471cd7e19c32c074?s=128

濱田孝治

December 29, 2020
Tweet

Transcript

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

  2. 2 @hamako9999 ハマコー

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

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

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

    terraform plan • AWS Cloud Development Kit(AWS CDK) • cdk deploy • Pulumi • pulumi up
  6. 6 IaC実⾏基盤の代表例と Pros and Cons

  7. 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とかは地獄
  8. 8 CloudShellは IaC実⾏基盤として使えるか︖

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

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

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

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

  13. 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の最新バージョンの反映にどのぐらいタイムラグあ るか不明なので、不安なら都度アップデートしましょう
  14. 14 4.IaC実⾏のための前準備 Terraformの場合 • IaCのコード • CloudFormationと同じ • Terraformの実⾏ •

    公式の「Install Terraform」のLinux版はそのまま動いた • ブートストラップ的なシェルにいれておけば⼿間なく準備でき そう • tfstateはそのアカウントのS3に⼊れておく前提
  15. 15 4.IaC実⾏のための前準備 Q︓IaC実⾏環境のためにコンテナは利⽤できないの か︖

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

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

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

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