5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こちらはNew Relic 使ってみた情報をシェアしよう! by New Relic Advent Calendar 2024の13日目の記事になります。

概要

  • タイトル通り、TerraformでNew Relicのリソースをインポートする時の注意点について記載いたします。

基礎

  • [terraform import]というコマンドを実行すると、対象のITリソースの情報をTerraformの管理下におく事が可能です。 参考:公式サイト
  • import時に必要な情報はTerraformのNew Relicプロバイダのページに記載されています。
    • 例えばアラートポリシーの場合は、アラートポリシーのIDとNew RelicアカウントIDが必要と記載されています。
      image.png

※対象New RelicプロバイダのVer.について

  • 2024/12/13時点での最新Ver.であるv3.53.0になります。
    • 本稿では一つ前のVer.のv3.52.1で発生した事象も解説します。

注意!

以下のリソースをインポートする際には注意が必要

  • ①インポートした値が変。そのままterraform plan (or apply)を実行すると失敗する
    • 対象リソース
      • newrelic_alert_muting_rule
      • [最新Ver.では解消済み]newrelic_synthetics_monitor、newrelic_synthetics_script_monitor
  • ②importする時に必要な情報がNew RelicのUI上から取得出来ない
    • 対象リソース
      • newrelic_workload
      • newrelic_service_level

①インポートした値が変。そのままterraform plan (or apply)を実行すると失敗する

・newrelic_alert_muting_rule

  • リソースについて:MutingRule
  • 事象
    • repeat_countが0と定義されているため、terraform planを実行するとエラーが返ってくる。
      • repeat_countはUI上だと[end repeat]の中のAfter部にあたる。
        image.png
      • 実際の定義では、Repeatで[Never]を指定しているため、そもそも選択できない項目であるため項目自体が無い or nullが定義されているが正しいと思うが「0」がなぜか入ってきている。
        image.png
  • 対応
    • [end repeat]部をコメントアウトするか、値を0からnullに変更するとエラーが回避出来ます。
      • どちらもOKであることは確認していますが、後者が美しいような気がします。

・[最新Ver.では解消済み]newrelic_synthetics_monitor、newrelic_synthetics_script_monitor

※v3.52.1で発生した事象で、現最新Ver.[v3.53.0]では解消している事象のため、折りたたみで表示します。 - 対象:SynetheticsのMonitorリソース(PingMonitor、ScriptAPIなど) - 原因:冒頭のIssueにも記載されている通り、[locations_public]の値がnullであるため。

image.png

  • 対応:
    • 適切なロケーションを手動で定義
      image.png

②importする時に必要な情報がNew RelicのUI上から取得出来ない

前述の[基礎]部分でも例としてアラートポリシーのインポート方法を記載しておりますが、インポート時の必要な情報はNew RelicのUI上から取得可能です。
ただ、以下のリソースに関しては現状、NerdGraphからじゃないと取得が出来ない様です。。(なんで!?)
NerdGraphの使用方法についてはNew Relicの公式ドキュメントをご参照ください。

newrelic_workload

  • 対象:Workloads
  • 公式ドキュメントよりインポートに必要なのは、<アカウントID>:<ワークロードid>:との事だが、ワークロードIDは見当たらず・・
    image.png
  • 対応
    • NerdGraphにて以下コマンドを実行し、対象のワークロードIDが特定できます。
Workload IDの特定
        {
        actor {
        account(id: <アカウントID>) {
        workload {
        collection(guid: "<対象ワークロードのGUID>") {
            account {
                id
                }
                id
                name
                guid
                }
            }
        }
    }
}
  • 結果として以下のように[id]部分にてワークロードIDが確認できます。 (値はマスクしてますが実際は数字が表示されます。)
    image.png

newrelic_service_level

  • 対象:Service Level

  • 公式ドキュメントよりインポートに必要なのは、<アカウントID>:<サービスレベルid>:との事だが、ワークロードと同様にUIからは見つけられず・・
    image.png

  • 対応

    • ワークロードと同様でNerdGraphにて以下コマンドを実行すると、対象のサービスレベルIDが特定できます。
Service Level IDの特定
{
  actor {
    entity(guid: "<対象サービスレベルのGUID>") {
      serviceLevel {
        indicators {
          guid
          id
          name
        }
      }
    }
  }
}
  • 結果として以下のように[id]部分にてサービスレベルIDが確認できます。 (値はマスクしてますが実際は数字が表示されます。)
    image.png

まとめ(という名の感想)

  • 基本的には何事もなくimport出来るリソースが多いですが、上記の通り一部「アレ?」と思う事象がある。
  • 一部のNewRelicのリソースIDがUIから見えない件は・・何かあるんですかね?APIキーがUIからコピー出来なくなった件と関係ある・・?
  • 他、未確認の事象もあるとは思いますが自分自身が把握している内容を共有させていただきました。
    本稿の内容が皆様のお役に立つ機会があれば幸いです。
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?