Top takeaways
今回の記事は Terraform の前提となる知識については紹介をしません。
もし Terraform を初めて触る場合には Terraform のチュートリアルなどを通して Terraform の簡単な概要を掴んでから改めて本ブログを読んで頂けたらと思います。
Terraform は HashiCorp 社が OSS として公開しているクラウドなどの設定をコードで管理するための IaC のツールとして多くの開発者から利用されています。
New Relic でも provider を公開しておりアラートやダッシュボードの作成などを Terraform から行うことができるようになっております。
今回は New Relic One と AWS アカウントをTerraform を利用して連携させる方法をご紹介したいと思います。
今回のサンプルコードは Github にて公開しておりますのでこちらのブログを読む際の参考にして頂ければと思います。
https://github.com/newrelickk/terraform-cloud-link-account/tree/master/aws_integration
動作環境
今回は以下の環境で動作の検証を行いました。
- Terraform 1.1.6
- hashicorp/newrelic 2.41.1
- hashicorp/aws 4.6.0
- macOS 12.2.1
Terraform 本体のバージョンや provider のバージョンは常に更新されています。
今回はサンプルのコードをご用意致しますが今後アップデートが入った際はアップデートされたものに合わせてご利用頂ければと思います。
https://registry.terraform.io/namespaces/newrelic
Set Up
まずは provider の設定などを行います。
以下にサンプルの設定を用意致しますので皆様の環境に合わせてセットアップを行ってください。
providers.tf
今回は newrelic のアカウントIDと api_key を環境変数経由で渡せる形にしています。
account_id と api_key という環境変数を定義したファイルを作成します。
variables.tf
IAM Role の作成
先に AWS の IAM Role の作成を行います。
こちらがサンプルのコードになります。
iam_role.tf
ここで another_aws_account_id という環境変数が登場してきましたが、 AWS 連携のドキュメントを参考にして頂いくと Another AWS Account という項目がありますので表示されたアカウントを環境変数に設定してください。
https://docs.newrelic.com/jp/docs/infrastructure/amazon-integrations/connect/connect-aws-new-relic-infrastructure-monitoring/
先程環境変数を定義したファイルと同じファイルに another_aws_account_id の環境変数を追加します。
もちろん直接 var.another_aws_account_id の部分を置き換えてしまっても問題ありません。
最後に New Relic と AWS の連携を行うための設定を行います。
newrelic_cloud_aws_link_account のリソースを使用して連携を行います。
以下がサンプルのコードになります。
link.tf
New Relic One と AWS の連携
ここまでセットアップできれば後は Terraform を実際に適用させるだけですので実際に Terraform のコマンドを実行してみましょう。
New Relic の画面から連携ができているかを確認しましょう。
メニュー上の 「Infrastructure」を選択するとメニューバーが表示されますので 「AWS」を選択して頂くと AWS 連携の画面へと遷移が出来ます。
AWS の項目を選択した後では連携に成功していた場合 API polling と Metic Streams で画面が異なりますが以下のようになっていれば連携は成功です。
最後に
最後に AWS との連携はこれで完了ですが API で取得するリソース、Metrics Streams の場合は別で firehose などを利用し New Relic に対して CloudWatch のメトリクスを転送する必要がありますがまた別のブログで Terraform で Metic Streams を設定する方法をご紹介したいと思います。
Terraform を始めとする IaC ツールを活用することはこれからクラウドを活用していく上で必須のツールになっていきますので是非 New Relic のリソースをコードで管理するファーストステップとしてご活用して頂ければと思います。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.