はじめに
こちらはNew Relic 使ってみた情報をシェアしよう! by New Relic Advent Calendar 2024の13日目の記事になります。
概要
- タイトル通り、TerraformでNew Relicのリソースをインポートする時の注意点について記載いたします。
基礎
- [terraform import]というコマンドを実行すると、対象のITリソースの情報をTerraformの管理下におく事が可能です。 参考:公式サイト
- import時に必要な情報はTerraformのNew Relicプロバイダのページに記載されています。
- 例えばアラートポリシーの場合は、アラートポリシーのIDとNew RelicアカウントIDが必要と記載されています。
- 例えばアラートポリシーの場合は、アラートポリシーのIDとNew RelicアカウントIDが必要と記載されています。
※対象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
- 事象
- 対応
- [end repeat]部をコメントアウトするか、値を0からnullに変更するとエラーが回避出来ます。
- どちらもOKであることは確認していますが、後者が美しいような気がします。
- [end repeat]部をコメントアウトするか、値を0からnullに変更するとエラーが回避出来ます。
・[最新Ver.では解消済み]newrelic_synthetics_monitor、newrelic_synthetics_script_monitor
※v3.52.1で発生した事象で、現最新Ver.[v3.53.0]では解消している事象のため、折りたたみで表示します。
- 対象:SynetheticsのMonitorリソース(PingMonitor、ScriptAPIなど) - 原因:冒頭のIssueにも記載されている通り、[locations_public]の値がnullであるため。②importする時に必要な情報がNew RelicのUI上から取得出来ない
前述の[基礎]部分でも例としてアラートポリシーのインポート方法を記載しておりますが、インポート時の必要な情報はNew RelicのUI上から取得可能です。
ただ、以下のリソースに関しては現状、NerdGraphからじゃないと取得が出来ない様です。。(なんで!?)
NerdGraphの使用方法についてはNew Relicの公式ドキュメントをご参照ください。
newrelic_workload
- 対象:Workloads
- 公式ドキュメントよりインポートに必要なのは、<アカウントID>:<ワークロードid>:との事だが、ワークロードIDは見当たらず・・
- 対応
- NerdGraphにて以下コマンドを実行し、対象のワークロードIDが特定できます。
Workload IDの特定
{
actor {
account(id: <アカウントID>) {
workload {
collection(guid: "<対象ワークロードのGUID>") {
account {
id
}
id
name
guid
}
}
}
}
}
newrelic_service_level
-
公式ドキュメントよりインポートに必要なのは、<アカウントID>:<サービスレベルid>:との事だが、ワークロードと同様にUIからは見つけられず・・
-
対応
- ワークロードと同様でNerdGraphにて以下コマンドを実行すると、対象のサービスレベルIDが特定できます。
Service Level IDの特定
{
actor {
entity(guid: "<対象サービスレベルのGUID>") {
serviceLevel {
indicators {
guid
id
name
}
}
}
}
}
まとめ(という名の感想)
- 基本的には何事もなくimport出来るリソースが多いですが、上記の通り一部「アレ?」と思う事象がある。
- Synetheticsの事象もGithubのIssueに挙がっていた内容で今回の最新Ver.で修正されましたので、問題については見つけ次第開発者に共有することが大事だなぁと思いました。(私も後であげておこうと思います。)
- 一部のNewRelicのリソースIDがUIから見えない件は・・何かあるんですかね?APIキーがUIからコピー出来なくなった件と関係ある・・?
- 他、未確認の事象もあるとは思いますが自分自身が把握している内容を共有させていただきました。
本稿の内容が皆様のお役に立つ機会があれば幸いです。