LINEで送る
Pocket

[DigitalOcean]CircleCIでTerraformのCI/CD環境を実装してみた

前回ではDigitalOceanでのTerraform x CircleCIの実装をしましたが、今回はAWSで試してみました。今回は本番の他にStagingが増えただけなので、実装方法は基本変わらない作りとなっています。


■構成

  • Repository

  • CI/CDフロー

  • 流れ
  1. プルリクを出す
  2. stg/本番 terraform init terraform fmt , terraform validate ,terraform plan
  3. master マージ
  4. stg/本番 terraform init terraform fmt , terraform validate , terraform plan , terraform apply

■.circleci/config.yml

  • Environment Variables

PRD_TERRAFORM_AWS_ACCESS_KEY_ID
PRD_TERRAFORM_AWS_SECRET_ACCESS_KEY

STG_TERRAFORM_AWS_ACCESS_KEY_ID
STG_TERRAFORM_AWS_SECRET_ACCESS_KEY

追加したのは環境ごとのクレデンシャルを読み込ませており、 Jobs でprdとstgを分けています。それに毎回マージするたびに terraform apply されてしまうので怖いのですが、基本planでエラーが出ていれば止まるので、制御文入れればもっと安全ですね。さらに改善する余地がありますな。あとterraformのコンテナイメージは hashicorp/terraform:light にすると最新を持ってきてしまうのでバージョン固定にしています。


■Test merge

  • fail

  • push

  • master merge


■まとめ

とりあえずザッーと作ってしまいましたが、実際に運用してみると課題がありそうですな。でも、terraformは頻繁にバージョンアップがあるし、CI回すことで冪等性も保たれるということがメリットになります。ちなみに terraform apply してもエラーが出ることもありますが、Deployサーバーなどでエラーを解決してプルリクを出せば結局問題なく運用できると思います。運用し始めたけどplanまででいいかも。。

LINEで送る
Pocket


adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社のインフラをECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください