根据一些事实值从 puppetdb 收集基本的实例详细信息,例如主机名和 IP
Collect the basic instace details from puppetdb like the hostname and IP based on some facts value
我如何开发一个自动运行并从 puppetdb 获取详细信息的脚本?我是 puppet 的新手。基本上我想根据 "web server" ,"app server" 等因子值从 puppetdb 收集库存。我使用开源 puppet。
查询 puppetdb 就像 运行 curl 一样简单。
例如,如果您有一个名为 $role 的事实并且某些节点具有角色 "web server",您可以获得具有该角色的所有节点的清单转储 运行:
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 .
我如何开发一个自动运行并从 puppetdb 获取详细信息的脚本?我是 puppet 的新手。基本上我想根据 "web server" ,"app server" 等因子值从 puppetdb 收集库存。我使用开源 puppet。
查询 puppetdb 就像 运行 curl 一样简单。
例如,如果您有一个名为 $role 的事实并且某些节点具有角色 "web server",您可以获得具有该角色的所有节点的清单转储 运行:
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 .