An API client interface for PuppetDB
Please note that there since I wrote this, there is now a PuppetDB client implementation by Ken Barber from Puppet that you can also choose to use: https://github.com/kbarber/puppetdb-client-go
Package contains interface to PuppetDB v3 API. Interface is still work in progress and does not cover the entire API.
Run go get github.com/akira/go-puppetdb
.
import (
"github.com/akira/go-puppetdb"
)
Create a Client with PuppetDB Hostname:
// second parameter enables verbose output
client := puppetdb.NewClient("localhost", 8080, true)
resp, err := client.Nodes()
...
resp, err := client.NodeFacts("node123")
...
It's also possible to use tls
client := puppetdb.NewClientSSL("puppet", 8081,"key.pem", "cert.pem", "ca.pem", true)
resp, err := client.Nodes()
...
resp, err := client.NodeFacts("node123")
...
It's also possible to query the puppet master services api now
client := puppetdb.NewClientSSLMaster("puppet", 8081,"key.pem", "cert.pem", "ca.pem", true)
resp, err := client.Profiler()
...
It's also possible to update/delete/view certificates
client := puppetdb.NewClientSSLMaster("puppet", 8081,"key.pem", "cert.pem", "ca.pem", true)
_, err, code := p.PuppetCertificateUpdateState("certname", "revoked")
err, code := p.PuppetCertificateDelete("certname")
certs, err := p.PuppetCertificates()
cert, err := p.PuppetCertificate("certname")
...
...
Queries can be represented as an array of strings and turned into JSON:
query, err := puppetdb.QueryToJSON([]string{"=", "report", "aef00"})
resp, res_err := client.Events(query, nil)
Malte Krupa (temal-)
Will Roberts (willroberts)
Daniel Selans (dselans)
Tim eyzermans (negast)