핵심 요약
今回の記事は 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 のリソースをコードで管理するファーストステップとしてご活用して頂ければと思います。
이 블로그에 표현된 견해는 저자의 견해이며 반드시 New Relic의 견해를 반영하는 것은 아닙니다. 저자가 제공하는 모든 솔루션은 환경에 따라 다르며 New Relic에서 제공하는 상용 솔루션이나 지원의 일부가 아닙니다. 이 블로그 게시물과 관련된 질문 및 지원이 필요한 경우 Explorers Hub(discuss.newrelic.com)에서만 참여하십시오. 이 블로그에는 타사 사이트의 콘텐츠에 대한 링크가 포함될 수 있습니다. 이러한 링크를 제공함으로써 New Relic은 해당 사이트에서 사용할 수 있는 정보, 보기 또는 제품을 채택, 보증, 승인 또는 보증하지 않습니다.