go-vyos
go-vyos is a Go library designed for interacting with VyOS devices through their REST API. This documentation is intended to guide you in using go-vyos for programmatic management of your VyOS devices.
go-vyos Documentation & Source Code on GitHub allows you to access and contribute to the library’s code.
go-vyos on pkg.go.dev for detailed instructions on the installation, configuration, and operation of the go-vyos library.
Installation
You can install go-vyos:
go install "github.com/ganawaj/go-vyos/vyos"
Getting Started
Importing and Disabling TLS Verification
import "github.com/ganawaj/go-vyos/vyos"
client := vyos.NewClient(nil).WithToken("AUTH_KEY").WithURL("https://192.168.0.1").Insecure()
Initializing a VyDevice Object
import (
"github.com/ganawaj/go-vyos/vyos"
"os"
)
hostname := os.Getenv('VYDEVICE_HOSTNAME')
port := os.Getenv('VYDEVICE_PORT')
url := fmt.Sprintf("https://%s:%s", hostname, port)
apikey := os.Getenv('VYDEVICE_APIKEY')
verify_ssl := os.Getenv('VYDEVICE_VERIFY_SSL')
client := vyos.NewClient(nil).WithToken(apikey).WithURL(url)
if verify_ssl == "false" {
client = client.Insecure()
}
Using go-vyos
Configure, then Set
out, resp, err := c.Conf.Set(ctx, "interfaces ethernet eth0 address 192.168.1.1/24")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
Show a Single Object Value
out, resp, err := c.Show.Do(ctx, "interfaces dummy dum1 address")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
fmt.Printf("Data: %v\n", out.Data)
Configure, then Show Object
out, resp, err := c.Conf.Get(ctx, "interfaces dummy dum1", nil)
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
fmt.Printf("Data: %v\n", out.Data)
Configure, then Show Multivalue Object
options := RetrieveOptions{
Multivalue: true,
}
out, resp, err := c.Conf.Get(ctx, "interfaces dummy dum1", options)
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
Configure, then Delete Object
out, resp, err := c.Conf.Delete(ctx, "interfaces dummy dum1")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
Configure, then Save
out, resp, err := c.Conf.Save(ctx, "")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
Configure, then Save File
out, resp, err := c.Conf.Save(ctx, "/config/test300.config")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
Show Object
out, resp, err := c.Show.Do(ctx, "system image")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
fmt.Printf("Data: %v\n", out.Data)
Generate Object
out, resp, err := c.Generate.Do(ctx, "pki wireguard key-pair")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
fmt.Printf("Data: %v\n", out.Data)
Reset Object
out, resp, err := c.Reset.Do(ctx, "ip bgp 192.0.2.11")
if err != nil {
panic("Error: %v", err)
}
fmt.Println(out.Success)
fmt.Printf("Data: %v\n", out.Data)
Configure, then Load File
out, resp, err := c.ConfigFile.Load(ctx, "/config/test300.config")