Cloud9にTerraform実行環境構築

2022年4月14日木曜日

Cloud9 CloudFormation Terraform

t f B! P L

  

やりたいこと

AWS内にCloud9を利用してTerraformの実行環境を作成します。
「自分のローカル環境にあまり余計なソフトウェアをインストールしたくないな。」
「ローカル環境に依存せず、毎回決まった環境を作成して再現性を重視したい。」
そんな方にこの記事が役に立てればと思います。

概要

パターン1

■Cfnテンプレート
→Github:cloud9-terraform-public-environment

【ポイント】
  1. クライアントからCloud9インスタンスへSSH接続
  2. パブリックサブネット配置のためインターネットと直接接続
  3. 必要コストは「Cloud9インスタンス利用料」のみ

パターン2

■Cfnテンプレート
→Github:cloud9-terraform-private-environment

【ポイント】
  1. SystemManagerのSessionManagerからCloud9インスタンスへはポートフォワーディング(参考記事1.)を利用して接続します。
  2. プライベートサブネット配置でインターネットからのインバウンド通信はなし
  3. 必要コストは「Cloud9インスタンス+NATGateway+VPCEndpoint」利用料
【構築時に気をつけたこと】
・セッションマネージャがCloud9インスタンスに接続するためのVPC要件など
・IAMロールに必要な権限や信頼ポリシーなど

上記の環境をCloudFormationでそれぞれ作成していきます。
※なおハンズオンの各種作業はコスト観点からパターン1のもので実施します。

ハンズオン

それでは、ハンズオンです。

※資料にGoogleスライドを使用していますが、文字が見づらいため「︙」ボタンを押して「全画面表示に変更」で確認頂きたいと思います。Escで全画面表示解除です。

  1. Cfnテンプレートで環境構築
    概要のGithubから必要なファイルを取得し、以下のスライドの通り実行。
  1. Cloud9のAMTCを無効化
    一部権限の制限があり、またIAMロールを切り替えるためAMTCは無効化します。
    AMTCについて解説されている記事がありますので以下を参照
    AWS Cloud9環境で利用できる一時クレデンシャル『AWS Managed Temporary Credentials』について調べてみた

  2. Cloud9インスタンスにCfnで作成したIAMロール(インスタンスプロファイル)割り当て

  3. (補足)
    ・今回作成しているIAMロールには動作確認のため、フルアクセスの権限を与えていますので、必要に応じてCfnのテンプレートのIAMロールの権限を変更してください。
    ・cloud9のターミナルでコマンド:「aws ec2 describe-instances」など叩いて動作するか確認する。  
  4. Terraformと各種必要なモジュールをインストールする
    (バージョンは「terraform.sh」の値をそれぞれ修正してお使いください。)
    ①シェルスクリプトファイルに実行権限を付与
    → chmod 755 terraform.sh
    (※実行権限のみに絞りたい場合は修正してください。)
    ②シェルスクリプトファイル実行
    → ./terraform.sh

    動作確認

    以下Cloud9での操作となります。
    1. S3バケットを作成するtfファイルを作成


    2. 上記ソースコードをcloud9上に配置する。

    3. ワークスペースを初期化
      コマンド:terraform init
    4. 作成するリソースの確認
      コマンド:terraform plan
      問題なく作成できるか確認してください。
    5. S3バケット作成
      コマンド:terraform apply

    まとめ

    Terraform実行環境の構築は以上です。これですぐにTerraform環境を用意することができるようになります。2パターン作成してみましたが、気軽に作成するならコストが安く済むパターン1で十分ですね。業務等でセキュリティを重視したいといった場合はパターン2を検討してみてもいいかもしれません。
    ローカル環境で管理できるから必要ないといった意見もあるかとは思いますが、自分自身がローカル環境にいろんなものを入れたくない気持ちがあり、今回作成してみました。この構築がなにかの役に立てれば幸いです。
    (IaC(CloudFormation)でIaC(Terraform)実行環境作るってどうなの?って思ったのは内緒)

    以上です。

    参考記事

    1.  AWS Systems Manager 経由で SSH トンネルを使用してプライベート VPC リソースにアクセスするにはどうすればよいですか?
    2.  Cloud9にTerraform環境を作ってみる

    使用サービス

    1.  AWS CloudFormation とは 
    2.  Terraform

    このブログを検索

    プロフィール

    ミニマリストなエンジニア AWSエンジニアとして技術支援を行っています。 好きなAWSサービスはCloudFormation。 (2022/3)AWS11冠達成!

    人気の投稿

    アーカイブ

    QooQ