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

AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン

hiyanger
March 31, 2024

AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン

2024/3/12 自社内にて実施

hiyanger

March 31, 2024
Tweet

More Decks by hiyanger

Other Decks in Technology

Transcript

  1. CONFIDENTIAL ディレクトリ構成 13 modules →common(環境共通リソース) →network.tf(VPC、サブネット)  ec2.tf  s3.tf bucketpolicy(バケポリjson格納用) dev

    →main.tf  provider.tf(AWSのprofile名をここに記述) backend.tf(terraformのリソース管理ファイル.tfstateの格納先などを記述) variable.tf terraform.tfvars prd 今回は使わない(一応mainにマージするとBグループアカウントにあるパイプラインが動く) .gitignore(git push除外ファイル) ※各環境配下 buildspec_apply.yml(codebuild用ファイル) buildspec.plan.yml(codebuild用ファイル)
  2. CONFIDENTIAL Terraform ハンズオン 14 1.端末plan用 terraform1.5.7インストール https://qiita.com/kamatama_41/items/ba59a070d8389aab7694  VSCodeに拡張もいれる「HashiCorp Terraform」 2.CodeCommit→cicd-tf→developブランチからfeatureブランチを作成

    feature/XXX 3.IAMからcodecommit認証情報をダウンロードしてVSCodeでgit clone→作成したfeatureブランチに切り替え 4.ローカルからのplan用にAWSクレデンシャルをstg/provider.tfへ記述(push時にはコメントアウトする) 5.Terraformコード作成 https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/resources/codecommit_repository  ※リソース名の頭には「dev」をつけましょう 「${env}」という記述でstg/terraform.tfvarsから取得できます。  (環境固有の変数が設定可能。環境共通変数はlocal変数で記述できる。変数の動きは重要なので余裕あれば適当に使ってみるとよいかも   アカウント番号とか差し替えが起こりやすいものがでてきたら変数使ってみてください。コンフリクトしたらうまく調整。)  ① VPC/サブネット作成 https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/resources/default_vpc  できそうなら ② ①へEC2作成 https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/resources/instance  できそうなら ③ S3へ①からフローログ設定(バケポリDeleteBucket禁止だけ記述。外出しで記述すること/環境名は変数で記述 P10)  https://registry.terraform.io/providers/hashicorp/aws/5.24.0/docs/data-sources/s3_bucket 6.端末からのterraform init/terraform planでデプロイ確認 7.VSCodeでステージング→コミット→git push 8.CodeCommitからdevelopへプルリクエスト→マージ(実施時に声をかけること) 9.Codepipelineにてterraform planを確認できたら手動でApproval(承認)する 10.terraform applyが正常に流れれば完了(最後にローカルからterraform destroyしとく) planの確認は自端末から、 実際のapplyはパイプラインから流します! (パイプラインを流すのは手間なので、planは さくっとterraformコマンドを流せる時端末も使う) ここまでみんな一緒にやる ここからはVPCだけで9までの流れみせて、 そのあとは各自やってもらう 各リソースはデプロイさえできれ ばOK。なので、EC2につながると かリソースレベルの動作確認は 基本不要。