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

根据一些事实值从puppetdb收集基本instace详细信息,如主机名和IP,puppet,Puppet,如何开发一个脚本,自动运行并从puppetdb获取详细信息?我是puppet的新手。基本上我想根据“web服务器”、“应用服务器”等因子值从puppetdb收集库存。我使用开源puppet。查询puppetdb就像运行curl一样简单 例如,如果您有一个名为$role的事实,并且某些节点具有“web服务器”角色,则可以获得运行该角色的所有节点的清单转储: curl -G -H "Accept: application/json" 'http://localhost:8080/pdb/quer

如何开发一个脚本,自动运行并从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服务器对话,请查看此处的教程:。

查询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服务器对话,请查看此处的教程:。

对于您的用例,也许只是让您的脚湿了,上面的答案没有错,但是,像这样运行可能是一种替代或补充策略。它易于安装,并提供了一个相当不错的GUI。而且,我发现这个查询比旧式的api查询更具可读性。。。直接从puppet服务器使用沙盒。我认为@mburling运行Puppetboard会让您的生活更轻松。对于您的用例,也许只是让您的脚湿了,最重要的答案是正确的,但运行类似的东西可能是一种替代或补充策略。它易于安装,并提供了一个相当不错的GUI。而且,我发现这个查询比旧式的api查询更具可读性。。。直接从傀儡服务器使用沙箱。我认为第二个@mburling运行傀儡板会让你的生活更轻松。