Puppetdb Report to Csv

Query puppetdb for the last report of this node, and convert the returned json document to csv with the help of jq:

curl \
	-s -G \
	--cert /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem \
	--key /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem \
	--cacert /etc/puppetlabs/puppet/ssl/certs/ca.pem  \
	https://puppetdb:8081/pdb/query/v4 \
	--data-urlencode 'query=[
		"from", "reports",
		["=", "certname", "'$(hostname -f)'"],
		["order_by", [["end_time", "desc"]]],
		["limit", 1]
	]' | jq -r ' .[] |
		[
			.certname,
			.status,
			.end_time,
			( .metrics.data[] | select(.name == "total") | select(.category == "time") | .value | tostring )
		] | @csv'

This will result in something like this

"Foo","unchanged","2019-04-05T18:26:00.866Z","10.1234"