puppetdb api的python包装器
puppetdb_api的Python项目详细描述
puppetdb api是围绕puppetdb restapi的python api。
查询
nodes,facts和resources可以通过将nodes,facts和resources与布尔运算符or,and和not匹配来查询。
所有查询都可以作为一个raw查询来完成,以获得puppetdb返回的原始json。
节点
>>> p=PuppetDB('https://puppetdb.example.com')>>> p.nodes(Or(Fact('role','example','='),Resource('Class','Klass_name','=')))[u'node1.example.com', u'node2.example.com'] >>> p.nodes_raw(Node('node1.example.com','='))[{u'deactivated': None, u'facts_timestamp': u'2014-08-25T19:45:00.707Z', u'name': u'node1.example.com', u'report_timestamp': u'2014-08-25T19:46:09.616Z', u'catalog_timestamp': u'2014-08-25T19:45:14.896Z'}]
事实
通过将多个事实名称传递给facts参数,可以获得多个事实的值。
>>> p=PuppetDB('https://puppetdb.example.com')>>> p.facts(query=And(Fact('role','example','='),Not(Resource('Class','Klass_name','='))),facts=['role','hostname']){u'hostname': [u'hostname1'], u'role': [u'example']} >>> p.facts_raw(Node('node1.example.com','~'))[{u'certname': u'node1.example.com', u'name': u'clientversion', u'value': u'3.8.7'}, {u'certname': u'node1.example.com', u'name': u'uptime_hours', u'value': u'656'}]
资源
通过将多个资源名称传递给resources参数,可以获得多个资源的值。
>>> p=PuppetDB('https://puppetdb.example.com')>>> p.resources(query=And(Fact('role','example','='),Not(Resource('Class','Klass_name','='))),resources=['Some_resource']){u'Some_resource': [u'Resource_title']} >>> p.resources_raw(query=Node('node1.example.com','~'),resources=['Some_resource'])[{u'certname': u'node1.example.com', u'resource': u'8df598f3923a05e543e884d247d74cac08087a45', u'parameters': {}, u'title': u'resource_title', u'tags': [u'tag1', u'tag2'], u'exported': False, u'file': u'/etc/puppet/environments/example/example.pp', u'line': 25, u'type': u'Some_resource'}]
安装
$ pip install puppetdb_api