Vultr Goライブラリを使用してサーバー情報を取得する方法

前書き

公式のVultr Goライブラリを使用して、Vultr APIを操作できます。Vultr APIを使用すると、サーバー、dns、ファイアウォール、スナップショット、ネットワークなど、アカウントに関連付けられたリソースを制御できます。このチュートリアルでは、サーバーに関する情報を取得する簡単なアプリケーションを作成して、公式のGo APIクライアントの使用方法を紹介します。

前提条件

  • Go 1.12+がインストールされたWindows、Linux、またはmacOSを実行しているコンピューター。
  • 基本的なプログラミングの知識。
  • オプション:GoをサポートするIDE(Visual Studio Code、emacs、Atomなど)。

ゴール

  • 公式Vultr APIライブラリの使用方法を学習します。
  • サーバー情報を表示するプログラムを作成します。

ステップ1:プロジェクトを作成する

まず、新しいモジュール(プロジェクト)の作成から始めます。通常、コードのリポジトリへのURLをモジュール名として使用しますが、これはこのチュートリアルの範囲外です。ここでは、モジュール名としてserverinfoを使用します。

プロジェクトを作成するには、次のコマンドを実行します。

# Create the folder in the current directory.
mkdir serverinfo

# Enter the new folder.
cd serverinfo

# Initialize the module.
go mod init serverinfo

ステップ2:ライブラリをダウンロードする

次に、GitHub(コードホスティングサイト)からAPIライブラリをダウンロードします。ライブラリをダウンロードするには、go getコマンドを使用する必要があります。これにより、ライブラリとその依存関係が自動的にダウンロードされ、go.modファイルに追加されます。前に開いたのと同じターミナルで、次のコマンドを入力します。

go get github.com/vultr/govultr

ステップ3:APIキーを取得する

APIクライアントを使用するには、APIキーが必要です。ダッシュボードの [ アカウント]セクションの [ API ]タブからAPIキーを取得できます。また、APIキーを使用するには、IPアドレスを承認する必要があります。ifconfig.meにアクセスすると、IPアドレスを確認できます。プライベートIPではなくパブリック IPを探していることに注意してください。あなたのプライベートIPを使用すると、コンピュータ上のネットワーク設定に見つけるだろうもので、以下のCIDR範囲のいずれかである:10.0.0.0/8172.16.0.0/12、または192.168.0.0/16

IPアドレスを取得したら、[ アクセス制御]セクションに追加します。/の後のボックスに、と入力し32ます。/32はネットマスクの意味 255.255.255.255です。つまり、IPのみが範囲に含まれます。

警告:パスワードを保護するのと同じように、APIキーを保護してください。APIキーは、請求、サーバー、ストレージを含むアカウント全体にアクセスできます。

ステップ4:プログラムファイルの作成

これからプログラムに取り掛かります。選択したエディターで作成したフォルダーを開き、という名前のファイルを作成しますmain.go

ファイル内に、次のコードを入力するかコピーして貼り付けます。

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/vultr/govultr"
)

func main() {

}

package main我々は、コマンドではなく、ライブラリを作成していることを行くように指示します。importステートメントは、使用する依存関係を宣言します。func main()プログラムを実行するときに呼び出される関数です。

ステップ5:APIクライアントを初期化する

次のステップは、APIクライアントを初期化することです。これを行うには、govultr.NewClient(http.Client、string)関数を使用する必要があり ます。main()関数内に次のコードを追加します。

client := govultr.NewClient(nil, "YOURAPIKEY")

YOURAPIKEY以前に取得したAPIキーに置き換えます。

このコードをもう少し詳しく見てみましょう。の左側にあり:=ます client。それが変数の名前です。変数は値を格納します。右側には、govultr.NewClientへの関数呼び出しがあります。デフォルトのHTTPクライアントを変更する必要がないため、最初のパラメーターはnilです。2番目のパラメーターは、自分自身を認証するために使用するAPIキーです。:=オペレータは、この場合には、左側への関数呼び出しの結果を右側に割り当てますclient

ステップ6:APIを使用する

私たちのプログラムはまだ何もしていません。これを便利にするために、Vultrからサーバーに関する情報を取得します。私たちは、使用する govultr.Client.Server.List(context.Context)([] govultr.Server、エラー) 関数。main()関数の最後に次のコードを追加します。

servers, err := client.Server.List(context.Background())
if err != nil {
    fmt.Fprintf(os.Stderr, "Error: %v\n", err)
    os.Exit(1)
}

このコードでは、API関数を呼び出してサーバー情報を取得しています。より高度なトピックなので、コンテキストの意味についてはまだ心配しないでください。とりあえず、知っておく必要があるのは、コンテキスト がAPIクライアントの実行方法を制御することだけです。context.Background()は空のcontextを返し ます。サーバー情報を取得して、サーバーerrという2つの変数に入れ たら、エラーがないかどうかを確認します。その場合は、ユーザーにエラーを通知し、コード1(エラー)で終了します。

ステップ7:情報を表示する

サーバー変数([] govultr.Server)にサーバーの配列があるので、実際に表示できます。main()関数の最後に次のコードを追加します。

fmt.Println("Servers:")
for _, server := range servers {
    fmt.Printf("  %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidth\n",
        server.Label,
        server.MainIP,
        server.Location,
        server.PendingCharges,
        server.CurrentBandwidth,
        server.AllowedBandwidth,
    )
}

まず、ヘッダーを印刷(表示)しServers:ます。次に、servers配列をループ し、インデックスをに割り当てて無視し_、現在のサーバーをサーバー変数に割り当てます。ループ内では、サーバーのラベル、IPアドレス、場所、保留中の請求、現在の帯域幅、および許容帯域幅を表示します。これを効率的に行うために、次のような文字列である フォーマット文字列を使用します" %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidth\n"%s しながら、次の文字列を置換する手段%.2f手段は、次のフロート(小数点数)を印刷するためには、小数点以下2桁に丸め。フォーマット文字列の残りの部分は、文字通り(現状のまま)印刷されます。

ステップ8:実行

この時点で、コードは次のようになります。

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/vultr/govultr"
)

func main() {
    client := govultr.NewClient(nil, "YOURAPIKEY")

    servers, err := client.Server.List(context.Background())
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error: %v\n", err)
        os.Exit(1)
    }

    fmt.Println("Servers:")
    for _, server := range servers {
        fmt.Printf("  %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidth\n",
            server.Label,
            server.MainIP,
            server.Location,
            server.PendingCharges,
            server.CurrentBandwidth,
            server.AllowedBandwidth,
        )
    }
}

これでコードを実行できます。前に開いたターミナルに戻り、コマンドを入力しgo runます。出力は次のようになります。

Servers:
  server1 (198.51.100.4) - New Jersey - $3.70 pending charges - 17.64/1000 GB bandwidth
  server2 (198.51.100.9) - Toronto - $1.70 pending charges - 3.24/500 GB bandwidth

エラーが発生した場合は、APIキーとIPアドレスが正しいことを確認してください。

結論

この時点で、公式APIクライアントの使用方法の基本を首尾よく学び、アカウント内のサーバーに関する情報を表示するプログラムを作成しました。

さらなるステップ

ここから、さらに多くのことができます。たとえば、メモリが不足しているときに新しいサーバーをプロビジョニングするプログラムを作成できます。帯域幅またはストレージが不足しているときにサーバーを自動的にアップグレードするアプリを作成できます。現在のIPに基づいてDNSレコードを自動的に更新するツールを作成することもできます。

govultrライブラリの詳細については、godocでgovultrライブラリのドキュメントをご覧ください

govultrは オープンソースプロジェクトです。govultrにバグを見つけた場合は、GitHubで報告でき ますプルリクエストを送信して、コードに直接貢献することもでき ます。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。