根据某些事实值从 puppetdb 收集基本的实例详细信息,例如主机名和 IP

安娜乔斯

我如何开发一个自动运行并从 puppetdb 获取详细信息的脚本?我是 puppet 的新手。基本上我想根据“web 服务器”、“应用服务器”等因素值从 puppetdb 收集库存。我使用开源 puppet。

价值

查询 puppetdb 就像运行 curl 一样简单。

例如,如果您有一个名为 $role 的事实并且某些节点具有角色“Web 服务器”,则您可以获得运行该角色的所有节点的清单转储:

 curl -G -H  "Accept: application/json" 'http://localhost:8080/pdb/query/v4/inventory' --data-urlencode 'query=["=",["fact","role"], "web server"]' |jq '.'

现在,也许您只想知道服务器的主机名并将每个清单发送到另一个应用程序,就像这样:

#!/bin/bash
# Iterate over nodes if $role 'web server'
curl -s -G -H  "Accept: application/json" 'http://localhost:8080/pdb/query/v4/nodes' --data-urlencode 'query=["=",["fact","role"], "web server"]' | jq -r '.[]|[ .certname ]| @tsv' |
while IFS=$'\t' read -r host; do
  echo "Do something with $host"
  # Save one dump per host
  curl -s -G -H  "Accept: application/json" 'http://localhost:8080/pdb/query/v4/inventory' --data-urlencode 'query=["=","certname","'${host}'"]' > "node-${host}.inventory.log"
done

这是非常基本的示例,它们的 api 非常强大且易于使用,您可以查询任何内容(事实、资源、目录、库存),甚至可以进行复杂的查询,例如与 MySQL 服务器对话,请在此处查看他们的教程:https:/ /puppet.com/docs/puppetdb/5.1/api/query/tutorial.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章