LogicMonitorTerraformプロバイダーの発表

クリック*クリック*スクロール*クリック*

その音は私の存在の悩みの種です。 その音(コマンドの入力とボタンのクリックの音)は、数年前に技術業務の多くの側面をどのように処理したかを示しています。 手動で…

クリック*

小規模なクラウドインフラストラクチャがあった頃は、EC2ホスト、ロール/ポリシー、DNSレコードなどはすべて手動で作成されていました。 クラウドの存在感が高まるにつれ、新しいリソースの作成を管理するのに役立ついくつかの社内ソリューションを開発しました。 サーバー数が増え、インフラストラクチャの複雑さが増すにつれて、このアプローチの管理は困難になりました。 その時点で、EC2管理コンソールはマッドマックス映画のシーンのように見えました。 インフラストラクチャを効率的に構築、拡張、管理するために、 HashiCorpのTerraform.

なぜテラフォームなのか

Terraform はプロビジョニング用のオープンソース オーケストレーション ツールです、管理、およびクラウド インフラストラクチャのバージョン管理。 Terraform は、構成ファイルを目的のインフラストラクチャ状態の青写真として使用し、定義された状態に一致するようにリソースを更新または作成することで、ターゲット環境を変更します。 データセンターの概要を定義し、これに従う」コードとしてのインフラストラクチャ」モデルにより、繰り返し可能な自動化が可能になります。

LogicMonitorのメインアプリケーションを サービス指向アーキテクチャー。 Terraformを使用すると、インフラストラクチャ構成のさまざまな部分をアーカイブ可能なバージョン管理されたコードに抽象化できます。 Terraformがクラウドインフラストラクチャを管理するための頼りになるツールになると、別の問題が発生しました…これらの新しくプロビジョニングされたすべてのアイテムを監視ソリューションにどのように取り込むのでしょうか。

クリック*

すべての優れたOpsツールは、瞬間的な輝きと純粋で揺るぎない怠惰の子孫だと思います。 このようにして、LogicMonitor TerraformProviderが誕生しました。 単一のモノリシックアプリケーションから移行し始めたため、インフラストラクチャの複雑化に対応するために、より多くのインスタンスをプロビジョニングし、Amazon WebServicesの他のサービスを利用する必要がありました。 ザ・ LogicMonitorTerraformプロバイダー 監視ソリューション内でこれらの新しいリソースを自動的に追加および管理することにより、運用チームの時間と時折手根管を節約します。

スタートガイド

Terraformを初めて使用する場合は、 Terraform入門ドキュメントの公式。 この記事は、アプリケーションとそのさまざまな要素(つまり、リソース、変数、依存関係など)を紹介するのに役立ちます。 次のいくつかの例では、LogicMonitor Terraformプロバイダーを使用して、デバイスとデバイスグループをLogicMonitorに追加する方法を示します。 また、Terraformの要素を組み合わせて、LogicMonitorプロバイダーを他のリソースと組み合わせて実装する方法の実際の例を作成します。

まず、認証する必要があります(一連の API資格情報 LogicMonitor内)。 XNUMXつの方法は、logicmonitorプロバイダーブロック内で初期化することです。


    provider "logicmonitor" {
      api_id  = "${var.logicmonitor_api_id}"
      api_key = "${var.logicmonitor_api_key}"
      company = "${var.logicmonitor_company}"
    }
  

もうXNUMXつは、プロバイダーがサポートする環境変数を使用して資格情報を設定することです。


    export LM_API_ID=xyz
    export LM_API_KEY=xyz
    export LM_COMPANY=xyz
  

LogicMonitorにデバイスグループリソースを作成するには、次の内容のファイルmain.tfを作成します。


    resource "logicmonitor_device_group" "group1" {
      name = "NewGroup"
      properties {
        "snmp.community" = "xxxxx"
        "system.categories" = "a,b,c,d"
        "jmx.port" = "9003"
      }
    }
  

terraform applyは、「snmp.community」、「system.categories」、および「jmx.port」のプロパティが設定された「NewGroup」という名前の新しいデバイスグループを作成します。


    logicmonitor_device_group.group1: Creating...
      disable_alerting:             "" => "true"
      name:                         "" => "NewGroup"
      properties.%:                 "0" => "3"
      properties.jmx.port:          "" => "9003"
      properties.snmp.community:    "" => "xxxxx"
      properties.system.categories: "" => "a,b,c,d"
    logicmonitor_device_group.group1: Creation complete (ID: 779)
  


テラフォーム

  テラフォーム適用 以前に実行すると、terraform.tfstateファイルがローカルに作成されました。 このファイルは、テンプレートで定義されたリソースをインフラストラクチャの実際の状態と比較するためにTerraformによって使用されます。 これには、LogicMonitor内のこれらのリソースの構成が含まれます。 LogicMonitor内でデバイスが削除されたり、グループプロパティが更新されたりすると、次の テラフォーム適用 ローカル状態ファイルと一致するようにLogicMonitorアカウントを構成します。 この状態ファイルは保持する必要があります リモートから チームメイトと協力して、ローカルに保存された独自の状態ファイルを使用する複数の寄稿者を回避する場合。

Terraformデータソース

Terraformデータソースを使用すると、データをフェッチして、他のTerraform構成の他の場所で使用できるようになります。 たとえば、LogicMonitor Terraformプロバイダーでは、現在コレクターリソースをプロビジョニングしていませんが、ユーザーはTerrafromデータソースを使用して既存のリソースを定義できます。 コレクタ デバイスをに関連付ける(デバイスをコレクターに関連付ける必要があることに注意してください)。 コレクターデータソースは、作成日に基づいて、またはフィルター処理された名前/説明によって、アクティブなコレクターを検索します。 デバイスグループのデータソースを使用して、名前またはカスタムプロパティに一致する特定のグループをフィルタリングすることもできます。

データソースを使用して特定のデバイスグループとコレクターを検索するデバイスを追加する例を次に示します。


    data "logicmonitor_collectors" "collectors" {
      most_recent = true
    }
    resource "logicmonitor_device" "host" {
      ip_addr          = "10.32.12.18"
      disable_alerting = true
      collector        = "${data.logicmonitor_findcollectors.collectors.id}"
      hostgroup_id     = "${data.logicmonitor_devicegroup.devicegroups.id}"
      properties {
       "app" = "haproxy"
       "system.categories" = "a,b,c,d"
      }
    }
    
    data "logicmonitor_device_group" "devicegroups" {
      filters {
        "property" = "name"
        "operator" = "~"
        "value"    = "Mesos"
      },
    }
  

LogicMonitorプロバイダーを他のプロバイダーと一緒に使用する

Terraformのパワーは、リソースを相互に組み合わせて使用​​するときに非常に優れています。 たとえば、以下のスニペットは、LogicMonitorプロバイダーと一緒にTerraformAWSプロバイダーを使用する方法を示しています。


    data "logicmonitor_collectors" "collectors" {
      most_recent = true
    }
    resource "aws_instance" "instance1" {
      ami           = "${var.ami}"
      instance_type = "${var.instance_type}"
      ....
    }
    
    resource "logicmonitor_device" "newdevice" {
      ip_addr   = "${aws_instance.instance1.*.private_ip}"
      collector = "${data.logicmonitor_collectors.collectors.id}"
    }
  

リソースaws_instanceは、設定されたamiとインスタンスタイプでAWSインスタンスをプロビジョニングします。 aws_instance.instance1。*。private_ip AWSによって作成されたときに計算された属性です。 この属性は、リソースの生成された出力であり、他のリソースの入力として使用できます。 Terraformは、で作成された参照に基づいてリソースの作成を注文するため、 main.tf ファイルの場合、Terraformは、インスタンスが作成されてIPが認識されるまで、ec2インスタンスをデバイスとしてLogicMonitorに追加しません。

クリック*

LogicMonitor Terraformプロバイダーは、次の場所にあります。 TerraformのGithubアカウント。 これは積極的に開発されており、フィードバックやプルリクエストを奨励および感謝しています。 Terraformを使用して、クラウドインフラストラクチャの作成の自動化を開始できます。また、LogicMonitorをご利用で、[デバイスの追加]ボタン、[ホストグループの管理]、または[送信]をクリックするのにうんざりしている場合は、

あなただけが持っている もう1回クリックして移動

…あなたが顧客でない限り…あなたは XNUMXクリック

LogicMonitorプロバイダーは活発に開発されています。 貢献することをお勧めします!