Blog

Terraformにおいてハマった話(モジュール x GitHubプロバイダー編)

はじめに

ニフティでエンジニアをしている添野 翔太です。ここ最近、@niftyトップページシステム基盤の刷新を進めています。
本稿ではGitHubプロバイダーを利用してCI/CDパイプラインに関するリソースをTerraformで管理しようとした際にハマったポイント、そしてそれに対する解決方法を紹介します。

背景

担当するシステムではGitHubでコードを管理しているのですが、CI/CDパイプラインに関連するCodeファミリーへソースコードをミラーリングするにあたりWEBフックを仕掛けています。そしてこちらのコードはモジュール側に存在します。

ハマったポイント

その他のコードの記載は割愛しますが、デプロイしたところ以下のような404エラーが出てくるようになりました。このままだとTerraform Applyを行うGitHub Actionsワークフロー上でもコケてしまう状態に…… 質問サイトなどを閲覧し調査を進めてみたのですが、解決に向けてなかなか進展しない状況でした。

ハマった原因

上記の404エラーを受けて、プロバイダー周りの設定がおかしくなっているのではないかという仮説を立てて、以下のコマンドを打ってみました。 上記の結果を見るとモジュール側と呼び出し側とでGitHubプロバイダーの設定が違うことに気付きました。この事が今回の404エラーを引き起こした原因です。
より具体的には、公式ドキュメントによれば、sourceの指定がintegrations/githubに変わり、デフォルトだとhashicorp/githubの方が落ちてきている状態だったことです。

解決方法

そこで今回はモジュール側にもrequired_providersを用いた設定を施したファイルを配置しました。 そうしたらプロバイダーの設定が揃いました。 そうして404エラーは無事に解決されました。ついでにterraform init時のWarningメッセージも消えました。思い返すとこのWarningメッセージで原因と解決策を思い付けたかもしれないなと思いました。

まとめ

今回はGitHubプロバイダーを利用してCI/CDパイプラインに関するリソースをTerraformで管理しようとした際にハマったポイント、そしてそれに対する解決方法を紹介しました。
何かの参考になったら幸いです。

We are hiring!

ニフティでは、さまざまなプロダクトへ挑戦するエンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトよりお気軽にご連絡ください! Tech TalkやMeetUpも開催しております!
こちらもお気軽にご応募ください!