How To Use The Vultr Go Library To Get Server Info

Introduction

The official Vultr Go library can be used to interact with the Vultr API. The Vultr API allows you to control the resources associated with your account, including servers, dns, firewall, snapshots, network, and more. This tutorial will give an introduction to using the official Go API client by creating a simple application to get information about your servers.

Prerequisites

  • A computer running Windows, Linux, or macOS with Go 1.12+ installed.
  • Basic programming knowledge.
  • Optional: An IDE supporting Go (for example Visual Studio Code, emacs, or Atom).

Goals

  • To learn how to use the official Vultr API library.
  • To write a program to view server information.

Step 1: Creating the project

First, we will start by creating a new module (project). Usually, you would use the URL to a repository for your code as the module name, but that is beyond the scope of this tutorial. For now, we will use serverinfo as the module name.

To create the project, run the following commands:

# Create the folder in the current directory.
mkdir serverinfo

# Enter the new folder.
cd serverinfo

# Initialize the module.
go mod init serverinfo

Step 2: Downloading the library

Next, we will download the API library from GitHub (a code hosting site). To download libraries, you need to use the go get command. This will automatically download the library and its dependencies while adding it to the go.mod file. In the same terminal you opened earlier, enter the following command:

go get github.com/vultr/govultr

Step 3: Getting your API key

To use the API client, you will need your API key. You can retrieve your API key from the API tab of the Account section of your Dashboard. You will also need to authorize your IP address to use the API key. You can find your IP address by going to ifconfig.me. Note that you are looking for your public IP, not your private one. Your private IP is what you would find in your network settings on your computer, and is in one of the following CIDR ranges: 10.0.0.0/8, 172.16.0.0/12, or 192.168.0.0/16.

Once you have your IP address, add it under the Access Control section. In the box after the /, type 32. /32 is a netmask meaning 255.255.255.255. This means that only your IP is included in the range.

Warning: Protect your API key like you would protect your password. The API key has access to your entire account, including billing, servers, and storage.

Step 4: Creating the program file

Now, we are going to start working on the program. Open up the folder we created in your choice of editor, and create a file named main.go.

Inside the file, type or copy-paste the following code:

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/vultr/govultr"
)

func main() {

}

The package main tells Go that we are creating a command, not a library. The import statement declares the dependencies we will be using. func main() is the function called when we run our program.

Step 5: Initializing the API client

The next step is to initialize the API client. To do this, we need to use the govultr.NewClient(http.Client, string) function. Add the following code inside the main() function:

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

Replace YOURAPIKEY with the API key you retrieved earlier.

Let's look at this code a bit closer. On the left side of the :=, we have client. That is the name of a variable. A variable stores values. On the right side, we have a function call to govultr.NewClient. The first parameter is nil, because we don't need to change the default HTTP client. The second parameter is the API key we are using to authenticate ourselves. The := operator assigns the right-side to the left side, in this case, the result of the function call to client.

Step 6: Using the API

Our program still doesn't do anything yet. To make it useful, we are going to retrieve information about our servers from Vultr. We will use the govultr.Client.Server.List(context.Context) ([]govultr.Server, error) function. Add the following code at the end of the main() function:

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

In this code, we are calling the API function to retrieve the server information. Don't worry about the meaning of the context yet, as that is a more advanced topic. For now, all we need to know is that the context controls how the API client runs. context.Background() returns an empty context. After we retrieve the server information into the two variables, servers and err, we check if there was an error. If so, we tell inform the user of the error and exit with code 1 (error).

Step 7: Showing the information

Now that we have an array of servers in the servers variable ([]govultr.Server), we can actually display it. Add the following code at the end of the main() function:

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,
    )
}

First, we print (display) a header, Servers:. Then, we loop over the servers array, ignoring the index by assigning it to _, and assigning the current server to the server variable. Inside the loop, we display the server's label, IP address, location, pending charges, current bandwidth, and allowed bandwidth. To do this efficently, we use format strings, the string which looks like " %s (%s) - %s - $%s pending charges - %.2f/%s GB bandwidth\n". The %s means to substitute the next string, while the %.2f means to print the next float (decimal number) rounded to 2 decimal places. The rest of the format string is printed literally (as-is).

Step 8: Running

At this point, your code should look like the following:

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,
        )
    }
}

We can now run the code. Return to the terminal we opened earlier and enter the command go run. The output will resemble the following:

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

If you receive an error, ensure your API key and IP address are correct.

Conclusion

At this point, you will have successfully learned the basics of how to use the official API client and written a program which will display information about the servers in your account.

Further steps

From here, you can do much more. For example, you could write a program to provision a new server when you are low on memory. You could write an app to automatically upgrade your server when you are low on bandwidth or storage. You could even write a tool to automatically update DNS records based on your current IP.

For more information on the govultr library, you can find the govultr library documentation on godoc.

govultr is an open-source project. If you find any bugs in govultr, you can report them on GitHub. You can also contribute to the code directly by submitting a pull request.



Leave a Comment

Custom ISO on Bare Metal

Custom ISO on Bare Metal

Introduction Vultr does not currently have a system in place to allow custom ISOs to be uploaded and mounted to bare metal. However, this does not stop yo

Cómo crear registros DNS o PTR inversos en el panel de control de Vultr

Cómo crear registros DNS o PTR inversos en el panel de control de Vultr

Introducción a Vultr Reverse DNS Para agregar un PTR o un registro DNS inverso para la dirección IP de sus instancias, debe seguir los pasos que se detallan a continuación:

Tiempo de corrección en el servidor de Windows

Tiempo de corrección en el servidor de Windows

De manera predeterminada, un VPS Vultr con Windows Server 2012 tiene la hora del sistema establecida en la zona horaria UTC. Puede cambiar la zona horaria como desee, pero cambiándola t

Automatizar actualizaciones de Ubuntu 16 con scripts de inicio de Vultr

Automatizar actualizaciones de Ubuntu 16 con scripts de inicio de Vultr

Ubuntu 16 y versiones posteriores realizan tareas periódicas relacionadas con apt (como actualizar la lista de paquetes y aplicar actualizaciones desatendidas) utilizando un temporizador systemd. Thi

Acceder al modo de usuario único (restablecer contraseña de root)

Acceder al modo de usuario único (restablecer contraseña de root)

Para restablecer la contraseña de root de su servidor, deberá iniciar en modo de usuario único. Acceda a su servidor en el portal de clientes de Vultr, luego siga el paso

Cómo restaurar una instantánea

Cómo restaurar una instantánea

Las instantáneas son una forma efectiva de hacer una copia de seguridad completa de su servidor. No podrá restaurar archivos individuales, sino todo el servidor. Thi

Comenzando con Cloud-Init

Comenzando con Cloud-Init

Cloud-init es un proyecto de código abierto compatible con la mayoría de las distribuciones de Linux. Las instancias de Vultr creadas antes de 2017 tenían este software instalado de forma predeterminada. Th

Clonación de un servidor virtual con Vultr

Clonación de un servidor virtual con Vultr

En ocasiones, deberá clonar un servidor virtual ya sea para fines de escala o para cambiar la región del servidor, por ejemplo. En Vultr, esto es fácil, un

Ejemplo de carta de autorización para anuncios de BGP

Ejemplo de carta de autorización para anuncios de BGP

Utilice la siguiente plantilla cuando solicite autorización para anuncios de BGP. CARTA DE AUTORIZACIÓN [FECHA] A quien corresponda, Thi

Configurar red privada

Configurar red privada

Si está asignando una red privada a una máquina existente (o está implementando su propio sistema operativo), deberá configurar las direcciones IP en la red privada.

Instale Nginx + PHP FPM + Caching + MySQL en Ubuntu 12.04

Instale Nginx + PHP FPM + Caching + MySQL en Ubuntu 12.04

Probablemente mucha gente vaya a usar sus VPS Vultr como servidores web, una buena opción sería Nginx como servidor web. En este tema voy a describir o

Guía de portabilidad de datos Vultr

Guía de portabilidad de datos Vultr

¿Cómo puedo descargar mis datos en la nube de Vultr? Portabilidad de datos en la plataforma Vultr Ofrecemos una serie de soluciones simples para que lo descargue

Bloque de almacenamiento Vultr

Bloque de almacenamiento Vultr

La tecnología Vultrs Cloud Block Storage le permite montar almacenamiento escalable de alto rendimiento en su instancia, lo que hace que la administración del espacio sea significativamente más

Ejecutar CoreOS en un Vultr VPS

Ejecutar CoreOS en un Vultr VPS

Lea: Vultr ahora ofrece CoreOS en la página de pedidos: esta guía explica cómo configurar CoreOS manualmente. Estas instrucciones lo guiarán a través de la carrera

Requisitos para cargar un sistema operativo ISO a Vultr

Requisitos para cargar un sistema operativo ISO a Vultr

Vultr ofrece una amplia variedad de sistemas operativos para elegir. A veces, sin embargo, es posible que desee cargar su propio sistema operativo ISO personalizado, como Kal

Agregue una dirección IPv4 secundaria a su VPS

Agregue una dirección IPv4 secundaria a su VPS

Este tutorial explica cómo configurar una dirección IPv4 adicional en su Vultr VPS. Asumiremos lo siguiente: La dirección IP principal de su VPS es 1.2.3.4.

RPKI

RPKI

RPKI (Infraestructura de clave pública de recursos) es una forma de ayudar a prevenir el secuestro de BGP. Utiliza firmas criptográficas para validar que un ASN está permitido t

Módulo Vultr WHMCS

Módulo Vultr WHMCS

Nota: Lea este documento completo antes de instalar Vultr WHMCS Módulo Información del módulo Versión: 2.0.0 (actualizado) Fecha de lanzamiento: 25 de junio de 2019

Enable Windows Audio on a Windows Server Instance

Enable Windows Audio on a Windows Server Instance

Note: This guide will work for Windows 2012 R2 and Windows 2016 instances. Windows Servers, by default, do not have the Windows Audio service enabled.

Configurando IPv6 en su VPS

Configurando IPv6 en su VPS

Cada uno de estos ejemplos asume una subred IPv6 de 2001: db8: 1000 :: / 64. Deberá actualizarlos con la subred que se le ha asignado. Estaremos usin

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.