proxmox 2.x api(http和ssh)的python包装器
proxmoxer的Python项目详细描述
它有什么作用,有什么不同?
proxmoxer是Proxmox REST API v2的包装器。
它的灵感来自睡眠,但它只致力于proxmox。它不仅允许在https上使用rest api,而且还允许 ssh和pvesh工具上的相同api。
像Proxmoxia一样,它动态创建响应 你试图达到的属性。
安装
pip install proxmoxer
对于“https”后端安装请求
pip install requests
对于“ssh_paramiko”后端安装paramiko
pip install paramiko
简短使用信息
首先要做的是导入proxmoxer库并创建proxmoxapi实例。
from proxmoxer import ProxmoxAPI proxmox = ProxmoxAPI('proxmox_host', user='admin@pam', password='secret_word', verify_ssl=False)
默认情况下,这将通过“https”后端进行连接。
可以使用已准备好的公钥/私钥身份验证。也可以使用ssh代理。
from proxmoxer import ProxmoxAPI proxmox = ProxmoxAPI('proxmox_host', user='proxmox_admin', backend='ssh_paramiko')
请注意,https后端需要'requests'库,ssh_paramiko-backend需要'paramiko'库, openssh后端需要安装“openssh_wrapper”库。
查询通过访问方法get、post、put和delete公开。为方便起见,加了两个 同义词:create用于post,以及set用于put。
for node in proxmox.nodes.get(): for vm in proxmox.nodes(node['node']).openvz.get(): print "{0}. {1} => {2}" .format(vm['vmid'], vm['name'], vm['status']) >>> 141. puppet-2.london.baseblack.com => running 101. munki.london.baseblack.com => running 102. redmine.london.baseblack.com => running 140. dns-1.london.baseblack.com => running 126. ns-3.london.baseblack.com => running 113. rabbitmq.london.baseblack.com => running
同样的代码可以用下一种方式重写:
for node in proxmox.get('nodes'): for vm in proxmox.get('nodes/%s/openvz' % node['node']): print "%s. %s => %s" % (vm['vmid'], vm['name'], vm['status'])
例如,下一行执行相同的操作:
proxmox.nodes(node['node']).openvz.get() proxmox.nodes(node['node']).get('openvz') proxmox.get('nodes/%s/openvz' % node['node']) proxmox.get('nodes', node['node'], 'openvz')
更多示例:
for vm in proxmox.cluster.resources.get(type='vm'): print("{0}. {1} => {2}" .format(vm['vmid'], vm['name'], vm['status']))
node = proxmox.nodes('proxmox_node') pprint(node.storage('local').content.get())
或具有相同结果的
node = proxmox.nodes.proxmox_node() pprint(node.storage.local.content.get())
lxc容器的创建示例:
node = proxmox.nodes('proxmox_node') node.lxc.create(vmid=202, ostemplate='local:vztmpl/debian-9.0-standard_20170530_amd64.tar.gz', hostname='debian-stretch', storage='local', memory=512, swap=512, cores=1, password='secret', net0='name=eth0,bridge=vmbr0,ip=192.168.22.1/20,gw=192.168.16.1')
创建同一个lxc容器的示例,该容器的参数位于dictorary中。 这种方法允许添加ssh-public-keys,而不会出现语法错误。
newcontainer = { 'vmid': 202, 'ostemplate': 'local:vztmpl/debian-9.0-standard_20170530_amd64.tar.gz', 'hostname': 'debian-stretch', 'storage': 'local', 'memory': 512, 'swap': 512, 'cores': 1, 'password': 'secret', 'net0': 'name=eth0,bridge=vmbr0,ip=192.168.22.1/20,gw=192.168.16.1' } node = proxmox.nodes('proxmox_node') node.lxc.create(**newcontainer)
模板上传示例:
local_storage = proxmox.nodes('proxmox_node').storage('local') local_storage.upload.create(content='vztmpl', filename=open(os.path.expanduser('~/templates/debian-6-my-core_1.0-1_i386.tar.gz'))))
RRD下载示例:
response = proxmox.nodes('proxmox').rrd.get(ds='cpu', timeframe='hour') with open('cpu.png', 'wb') as f: f.write(response['image'].encode('raw_unicode_escape'))
日志记录用法示例:
# now logging debug info will be written to stdout logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s:%(name)s: %(message)s')
路线图
- 编写测试
- 支持其他实际的python版本
- 添加请求的可选验证
- 为方便起见,添加一些快捷方式
历史记录
1.0.3(1018-09-10)
- 改进:在hostname参数(https://github.com/pvanagtmaal)中添加了指定端口的选项
- 改进:将stderr添加到响应内容(Jérôme Schneider)
- 错误修复:paramiko python3:stdout和stderr必须是str而不是bytes(Jérôme Schneider)
- docu中的新lxc示例(Geert Stappers)
1.0.2(2017-12-02)
- 用测试重新包装的tarball
1.0.1(2017-12-02)
- 许可证文件现在包含在tarball中
- 向proxmoxhttpauth(Walter Doekes)添加了verify_ssl参数
1.0.0(2017-11-12)
- 更新proxmoxer自述文件(Emmanuel Kasper)
- 显示API调用错误的原因(Emmanuel Kasper,kantsdog)
- ssh响应代码的筛选器(Chris Plock)
0.2.5(2017-02-12)
- 添加sudo以使用paramiko ssh后端执行cli(Jason Meridth)
- proxmoxer/backends/ssh-paramiko:改进文件上传(Jérôme Schneider)
0.2.4(2016-05-02)
- 删除了tmp_文件名字符串(Jérôme Schneider)中的换行符
- 修复以避免模块重新加载(jklang)
0.2.3(2016-01-20)
- 小错误修复(Srinivas Sakhamuri)
0.2.2(2016-01-19)
- 添加sudo以在openssh后端执行pvesh cli(Wei Tie,Srinivas Sakhamuri)
- 添加支持以指定ssh连接的标识文件(Srinivas Sakhamuri)
0.2.1(2015-05-02)
- 修复python 3.4(kokuev)
0.1.7(2014-11-16)
- 在使用https(请求)后端时添加了忽略“不安全请求警告:正在发出未验证的https请求…”警告。
0.1.4(2013-06-01)
- 添加了日志记录
- 添加了openssh后端
- 重新组织测试
0.1.3(2013-05-30)
- 添加了下一个测试
- 错误修复
0.1.2(2013-05-27)
- 添加了第一个测试
- 增加了对Travis和工作服的支持
- 错误修复
0.1.1(2013-05-13)
- 初次尝试。