厨师:Ohai属性持久性

时间:2015-09-28 17:01:53

标签: postgresql chef

Chef Server 12.2.0-1。

我正试图找到一种从PostgreSQL数据库中查询Ohai节点属性的方法。浏览了表模式和数据后,我没有看到任何包含这些属性的表。

这些属性是否存储在Chef服务器上?有没有办法通过数据库查询或REST调用远程查看它们?

opscode_chef表列表:

checksums
clients
containers
cookbook_artifact_version_checksums
cookbook_artifact_versions
cookbook_artifacts
cookbook_version_checksums
cookbook_versions
cookbooks
data_bag_items
data_bags
environments
groups
keys
node_policy
nodes
opc_customers
opc_users
org_migration_state
org_user_associations
org_user_invites
orgs
policies
policy_groups
policy_revisions
policy_revisions_policy_groups_association
roles
sandboxed_checksums
users

更新1 :感谢@Tensibai。 属性存储在表nodes,列serialized_object中。列serialized_object是gzip编码的。

用于获取json中的属性的Java代码:

String query = "SELECT name, serialized_object FROM nodes";
PreparedStatement st = conn.prepareStatement(query);
ResultSet rs = st.executeQuery();
while (rs.next()) {
    String name = rs.getString("name");
    byte[] arr = rs.getBytes("serialized_object");
    byte[] out = unzip(arr);
    System.out.println(name + " : " + new String(out));
}

public static byte[] unzip(byte[] in) throws IOException{
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    FileUtils.copy(new GZIPInputStream(new ByteArrayInputStream(in)), out);
    return out.toByteArray();
}

示例属性:https://gist.github.com/rodionos/cb744155539699b5c348

我不是PostgreSQL的专家。更好的解决方案可能是启用本机描述的本机解压缩功能:https://github.com/chef/chef-server/issues/8#issuecomment-99152808

0 个答案:

没有答案