使用OpenStack all-in-one 镜像,创建 OpenStack Python 运维开发环境。云主机的用户/密码为:“root/Abc@1234”,OpenStack 的域名/账号/密码为:“demo/admin/000000”。
提示说明:python 脚本文件头建议加入“#encoding:utf-8”避免编码错误;测试脚本代码用 python3 命令执行与测试。
在 controller 节点的/root 目录下创建 api_image_manager.py 脚本,编写 python 代码对接 OpenStack API,完成镜像的创建与上传。创建之前查询是否存在“同名镜像”,如果存在先删除该镜像。
- 创建镜像:要求在 OpenStack 私有云平台中上传镜像 cirros-0.3.4-x86_64-disk.img,名字为 cirros001,disk_format 为 qcow2,container_format 为 bare。
- 查询镜像:查询 cirros001 的详细信息,并以 json 格式文本输出到控制台。
#encoding: utf-8
import requests
import json
#获取token
url = "http://192.168.1.100:5000/v3/auth/tokens"
body = {
"auth": {"identity": {"methods": ["password"], "password": {
"user": {"domain": {"name": "demo"}, "name": "admin", "password": "000000"}}}}}
headers = {"Content-Type": "application/json" }
token = requests.post(url, data=json.dumps(body), headers=headers).headers['X-Subject-Token']
headers = {"X-Auth-Token": token}
#删同名镜像
all = requests.get("http://192.168.1.100:9292/v2/images", headers=headers)
result = json.loads(all.text)
for i in result['images']:
if i['name'] == "cirros001":
requests.delete("http://192.168.1.100:9292/v2/images/"+i['id'], headers=headers)
#......