当前位置: 首页 > article >正文

OpenStack API实战:从Token获取到云主机管理

1. OpenStack API入门为什么需要从Token开始第一次接触OpenStack API时很多人会直接跳到云主机管理部分结果发现连最简单的查询都报401错误。这就像去银行取钱却忘了带银行卡——Token就是你在OpenStack系统中的身份凭证。我在实际项目中见过太多开发者卡在这一步所以特别强调所有OpenStack API调用都必须先获取Token。OpenStack的认证系统Keystone就像个严格的安检门。当你发送创建虚拟机的请求时Nova服务会先问Keystone这个Token能进吗有权限吗如果Token无效或过期所有操作都会被拒绝。这种设计虽然增加了初始步骤但大幅提升了系统安全性。获取Token的过程其实很简单只需要三个关键信息认证地址通常是http://IP:35357/v3/auth/tokens管理员账号密码一般在安装时的admin-operc.sh文件里项目作用域默认用admin项目即可我习惯用curl命令测试Token获取比GUI工具更直观。下面这个命令模板可以直接套用curl -i \ -H Content-Type: application/json \ -d { auth: { identity: { methods: [password], password: { user: { name: admin, password: 你的密码, domain: { id: default } } } }, scope: { project: { name: admin, domain: { id: default } } } } } \ http://你的IP:35357/v3/auth/tokens | grep X-Subject-Token执行后会返回类似X-Subject-Token: gAAAAAB...的响应头后面那串乱码似的字符就是你的通行证。记得把它保存到环境变量后续所有API调用都要带着它。2. 实战获取Token细节决定成败虽然获取Token的流程看起来简单但新手常会遇到几个坑。去年我给团队做培训时就有人因为Content-Type没设置对折腾了一下午。这里分享几个必须注意的细节HTTP头部的秘密Content-Type: application/json必须明确指定有些工具默认用form格式响应中的Token在Headers里而非Body中要用-i参数显示完整响应Token有效期默认1小时过期后需要重新获取我推荐用Postman或Apipost这类专业工具调试它们能自动解析响应头。以Apipost为例新建POST请求URL填http://IP:35357/v3/auth/tokens在Body选raw/JSON粘贴上面的JSON模板发送后在下方的响应头标签页找X-Subject-Token常见错误排查返回401检查用户名/密码特别注意domain是否填写正确返回404确认Keystone服务端口35357或5000返回500查看/var/log/keystone/keystone.log日志获取Token后响应体里还藏着重要信息——各个服务的Endpoint。比如catalog: [ { type: compute, endpoints: [ { url: http://172.20.192.161:8774/v2.1/13c023..., interface: public } ] } ]这个url就是后续操作Nova API的地址。不同版本的OpenStack端点可能不同建议动态获取而非硬编码。3. 查询云主机列表你的第一份资源清单拿到Token后第一个实用的API就是查询云主机列表。这相当于你进入机房后先环顾四周——看看有哪些机器、它们的状态如何。通过这个API我们可以获取所有虚拟机的ID、名称、状态等基础信息。完整请求示例curl -X GET \ -H X-Auth-Token: $OS_TOKEN \ -H Content-Type: application/json \ http://172.20.192.161:8774/v2.1/13c023cbddfa4ef39f93c38dfa4b0456/servers?all_tenantstrue关键点解析$OS_TOKEN是前面获取的Token项目ID13c02...必须与Token所属项目一致all_tenantstrue参数表示查询所有租户的云主机返回的数据结构很丰富我通常关注这几个字段{ servers: [ { id: 896e7778-0e27-4ad4-bed9-090d0e0bafb2, name: web-server-01, status: ACTIVE, flavor: { id: 1 }, image: { id: f560b2e0-9801-4f31-8b67-0b1a6e0d3a0e } } ] }高级查询技巧过滤特定状态的云主机?statusERROR分页查询?limit10marker上一页最后一条ID字段过滤?fieldsid,name,status减少返回数据量实际项目中我建议用jq工具处理返回的JSONcurl -s [API地址] | jq .servers[] | {id, name, status}这样输出更简洁{ id: 896e7778..., name: web-server-01, status: ACTIVE }4. 深入云主机详情从宏观到微观知道有哪些云主机后下一步就是查看具体某台的详细信息。这就像从机房总览转到检查单台服务器——查看它的配置、网络、挂载的磁盘等完整信息。请求格式很有规律GET /v2.1/{project_id}/servers/{server_id}用curl实现curl -X GET \ -H X-Auth-Token: $OS_TOKEN \ http://172.20.192.161:8774/v2.1/13c023cbddfa4ef39f93c38dfa4b0456/servers/896e7778-0e27-4ad4-bed9-090d0e0bafb2返回的详情中这些信息特别有用hostId物理机标识排查性能问题时有用addresses云主机的IP地址列表security_groups绑定的安全组规则volumes_attached挂载的云硬盘示例响应片段{ server: { OS-EXT-STS:vm_state: active, addresses: { private: [ { addr: 192.168.1.100, version: 4 } ] }, flavor: { disk: 40, ram: 4096, vcpus: 2 }, metadata: { app: nginx } } }实战技巧获取控制台日志排错神器/servers/{server_id}/console查看虚拟设备拓扑/servers/{server_id}/os-virtual-interfaces获取监控数据需安装ceilometer/servers/{server_id}/diagnostics5. 镜像管理云主机的基因库创建云主机需要先有镜像Image就像装系统需要ISO文件。OpenStack的Glance服务管理这些镜像通过API可以查询、上传、删除镜像。获取镜像列表的APIcurl -X GET \ -H X-Auth-Token: $OS_TOKEN \ http://172.20.192.161:9292/v2/images返回数据示例{ images: [ { id: f560b2e0-9801-4f31-8b67-0b1a6e0d3a0e, name: centos7, disk_format: qcow2, min_disk: 20, min_ram: 1024 } ] }镜像上传实操准备镜像文件如CentOS.qcow2创建镜像元数据curl -X POST \ -H X-Auth-Token: $OS_TOKEN \ -H Content-Type: application/json \ -d { name: my-centos, disk_format: qcow2, container_format: bare } \ http://172.20.192.161:9292/v2/images上传镜像数据curl -X PUT \ -H X-Auth-Token: $OS_TOKEN \ -H Content-Type: application/octet-stream \ --data-binary CentOS.qcow2 \ http://172.20.192.161:9292/v2/images/{image_id}/file镜像管理经验谈公共镜像设置visibilitypublic让所有租户可见大型镜像上传用split分块后并行上传定期清理statusqueued的僵尸镜像6. 完整流程示例从零创建云主机现在我们把所有知识点串联起来完成从创建到查询的完整流程。假设我们要创建一台2核4G的CentOS云主机。步骤1准备基础资源# 获取Token TOKEN$(curl -s -i \ -H Content-Type: application/json \ -d {auth:{identity:{methods:[password],password:{user:{name:admin,password:xxxxxx,domain:{id:default}}}},scope:{project:{name:admin,domain:{id:default}}}}} \ http://172.20.192.161:35357/v3/auth/tokens | grep X-Subject-Token | awk {print $2}) # 查询镜像ID IMAGE_ID$(curl -s \ -H X-Auth-Token: $TOKEN \ http://172.20.192.161:9292/v2/images | jq -r .images[] | select(.namecentos7) | .id) # 查询规格ID FLAVOR_ID$(curl -s \ -H X-Auth-Token: $TOKEN \ http://172.20.192.161:8774/v2.1/flavors | jq -r .flavors[] | select(.ram4096) | .id)步骤2创建云主机curl -X POST \ -H X-Auth-Token: $TOKEN \ -H Content-Type: application/json \ -d { server: { name: api-created-vm, imageRef: $IMAGE_ID, flavorRef: $FLAVOR_ID, networks: [{uuid: 网段ID}] } } \ http://172.20.192.161:8774/v2.1/servers步骤3验证创建结果# 查询创建状态 curl -s \ -H X-Auth-Token: $TOKEN \ http://172.20.192.161:8774/v2.1/servers/detail?nameapi-created-vm | jq .servers[0].status # 获取登录IP curl -s \ -H X-Auth-Token: $TOKEN \ http://172.20.192.161:8774/v2.1/servers/detail?nameapi-created-vm | jq .servers[0].addresses7. 避坑指南我踩过的那些雷在OpenStack API的使用过程中有些错误看似简单却可能浪费你数小时。这里分享几个真实案例时间同步问题有次Token总是莫名失效最后发现是控制节点时间不同步。Keystone会校验Token的签发时间如果节点间时间差超过5分钟就会拒绝请求。解决方法很简单# 所有节点执行 ntpdate time.apple.com版本兼容陷阱某次升级后API突然报404原来是Nova从v2迁移到v2.1时部分端点发生了变化。建议始终使用/v2.1而非/v2动态获取Endpoint而非硬编码检查/etc/nova/nova.conf中的enable_deprecated_api配置权限不足的隐形错误即使使用admin账号某些操作也需要明确指定权限。比如查询所有租户的云主机需要在policy.json中添加规则请求时带all_tenantsTrue参数确认Token的scope是system而非project性能优化建议当管理大量云主机时API响应可能变慢。我的经验是添加limit100markerxxx分页参数使用fieldsid,name减少返回数据量对频繁查询的数据做本地缓存8. 扩展应用API调用的高级玩法基础操作掌握后可以尝试这些提升效率的技巧并发创建云主机用Python多线程同时创建多台云主机import threading import requests def create_vm(token, name): headers {X-Auth-Token: token} data {server: {name: name, imageRef: img-id, flavorRef: flavor-id}} requests.post(http://IP:8774/v2.1/servers, jsondata, headersheaders) threads [] for i in range(5): t threading.Thread(targetcreate_vm, args(token, fvm-{i})) threads.append(t) t.start() for t in threads: t.join()自动化运维脚本定期检查异常云主机的Shell脚本#!/bin/bash TOKEN$(获取Token的逻辑) ABNORMAL_VMS$(curl -s -H X-Auth-Token: $TOKEN \ http://IP:8774/v2.1/servers/detail?statusERROR | jq -r .servers[].id) for vm in $ABNORMAL_VMS; do echo 重启异常虚拟机 $vm curl -X POST -H X-Auth-Token: $TOKEN \ http://IP:8774/v2.1/servers/$vm/action \ -d {reboot: {type: SOFT}} done与Terraform集成在Terraform中直接调用OpenStack API获取动态数据data external flavor_info { program [bash, -c, EOF curl -s -H X-Auth-Token: $(openstack token issue -f value -c id) \ http://IP:8774/v2.1/flavors/1 | jq {name: .flavor.name, vcpus: .flavor.vcpus} EOF ] } output flavor_details { value data.external.flavor_info.result }

相关文章:

OpenStack API实战:从Token获取到云主机管理

1. OpenStack API入门:为什么需要从Token开始? 第一次接触OpenStack API时,很多人会直接跳到云主机管理部分,结果发现连最简单的查询都报401错误。这就像去银行取钱却忘了带银行卡——Token就是你在OpenStack系统中的"身份凭…...

原神祈愿记录导出:3大功能帮你轻松管理抽卡数据

原神祈愿记录导出:3大功能帮你轻松管理抽卡数据 【免费下载链接】genshin-wish-export Easily export the Genshin Impact wish record. 项目地址: https://gitcode.com/GitHub_Trending/ge/genshin-wish-export 还在为原神抽卡记录无法导出而烦恼吗&#xf…...

5分钟搞定智慧树自动刷课:免费插件让学习效率提升150%

5分钟搞定智慧树自动刷课:免费插件让学习效率提升150% 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视频学习而烦恼吗&#xff1f…...

没带手表那天我反而跑顺了:找回你的“自动负载均衡”

没记录的汗水,是不是就白流了?老马今天跟你聊聊咱们这个系列的最后一篇:脱表。一个周末,我起了个大早,换好衣服穿好跑鞋,习惯性地拿起手表准备出门。结果一按屏幕——黑的,昨晚忘充电了。按说这…...

【Matlab】MATLAB教程:小波去噪原理、wden函数实操及信号噪声去除应用

本文基于MATLAB R2020b编写(兼容R2018及以上版本),聚焦小波去噪核心原理、wden函数实操细节、信号噪声去除工程应用三大模块,构建“理论基础→函数实操→案例应用→工程拓展”的完整闭环。内容兼顾入门性与实用性,无需深入推导复杂数学公式,重点突出MATLAB实操步骤,结合…...

【Matlab】MATLAB教程:小波变换基础、wavedec信号分解及信号时频分析应用

本文基于MATLAB R2020b编写(兼容R2018及以上版本),聚焦小波变换核心基础、wavedec函数信号分解实操、信号时频分析三大模块,构建“理论基础→函数实操→案例应用”的完整闭环。内容兼顾入门性与实用性,无需深入推导复杂数学公式,重点突出MATLAB实操细节,结合2个递进式案…...

8大网盘直链解析工具:打破下载速度限制的智能解决方案

8大网盘直链解析工具:打破下载速度限制的智能解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

高并发场景下,如何让你的向量语义检索快人一步?

当需要同时检索多条查询(如批量问答、RAG 多路召回、多用户并发搜索),逐条串行执行会导致整体耗时随查询数线性增长。通过并发执行多条检索请求,可以将总耗时从 N 单次延迟 降低到接近 1 单次延迟,显著提升吞吐量。 …...

从实验室到亿级终端:2026奇点大会披露的3个已规模化部署人脸识别大模型案例(含准确率、时延、能耗原始日志)

第一章:从实验室到亿级终端:2026奇点大会人脸识别大模型规模化落地全景图 2026奇点智能技术大会(https://ml-summit.org) 2026奇点大会首次实现全栈式人脸识别大模型(FaceFormer-XL)在超1.2亿台边缘终端上的零信任协同推理&…...

基于FPGA的OBC DCDC HIL测试系统:高频场景下的实时仿真与验证

1. 为什么需要FPGA做OBC DCDC的HIL测试? 我第一次接触OBC DCDC的HIL测试是在2018年,当时测试一个SiC MOSFET的LLC谐振变换器,用传统实时仿真机跑100kHz开关频率模型时,直接出现了波形失真。后来才发现问题出在仿真步长上——当开关…...

Cursor Pro功能激活终极方案:突破AI编程助手限制的完整指南

Cursor Pro功能激活终极方案:突破AI编程助手限制的完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached you…...

Windows Defender终极移除指南:一键彻底关闭系统安全防护的完整解决方案

Windows Defender终极移除指南:一键彻底关闭系统安全防护的完整解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.c…...

多模态增强不是“加噪声”!揭秘ViT-CLIP融合场景下4种被顶会论文验证的结构感知增强范式

第一章:多模态大模型数据增强策略 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的数据增强已超越传统单模态范式,需协同处理图像、文本、音频及时空信号等异构输入。关键在于保持语义一致性与跨模态对齐性,而非孤立地扰动各通…...

揭秘CLIP、Flamingo、Qwen-VL底层差异:为什么90%的多模态项目在第2层融合就失败?

第一章:多模态大模型架构设计原理详解 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型的核心目标是实现跨模态语义对齐与联合表征学习,其架构设计需兼顾异构数据的编码能力、模态间交互的深度与效率,以及下游任务的泛化适配性。…...

OpenClaw 大结局——接入个人

背景 StreamJsonRpc 是微软官方维护的用于 .NET 和 TypeScript 的 JSON-RPC 通信库,以其强大的类型安全、自动代理生成和成熟的异常处理机制著称。在 HagiCode 项目中,为了通过 ACP (Agent Communication Protocol) 与外部 AI 工具(如 iflow …...

番茄小说下载器完全指南:从零开始打造个人离线图书馆

番茄小说下载器完全指南:从零开始打造个人离线图书馆 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经想在通勤路上、旅行途中或网络不佳时阅读番茄小说&…...

DownKyi哔哩下载姬:B站视频下载的终极解决方案,轻松构建个人离线资源库

DownKyi哔哩下载姬:B站视频下载的终极解决方案,轻松构建个人离线资源库 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱&#xff08…...

明月家书小程序|监狱寄信、看守所线上写信全攻略(2026 最新)

明月家书是宜昌高新技术企业,专注监所寄信写信服务长达 10 年,在同类写信软件中口碑靠前。对于监狱、看守所服刑人员的家属而言,一封家书是跨越高墙的牵挂,是维系亲情最直接的桥梁。但传统寄信流程繁琐、合规要求严格,…...

八大网盘直链解析:高效下载解决方案全面解析

八大网盘直链解析:高效下载解决方案全面解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…...

抖音无水印视频下载技术实现:基于链接解析与双架构方案

抖音无水印视频下载技术实现:基于链接解析与双架构方案 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 在处理社交…...

3分钟上手TMSpeech:打造Windows本地实时语音转文字神器

3分钟上手TMSpeech:打造Windows本地实时语音转文字神器 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 想要在会议中轻松走神却不错过关键信息?担心云端语音识别泄露隐私?TMSpeec…...

别再乱调散热片间距了!手把手教你用热边界层和烟囱效应搞定自然对流散热器设计

散热器设计实战:用热边界层与烟囱效应破解翅片间距迷思 当你的LED驱动电源在满载运行时突然降频,或是工控设备在高温环境下频繁死机,问题往往指向同一个罪魁祸首——散热失效。我曾亲眼见证一个价值百万的自动化产线因为散热器设计不当&#…...

ROS进阶(三)——Xacro优化与Arbotix运动控制实战(Rviz可视化)

1. Xacro宏语言:让机器人建模效率翻倍 第一次接触机器人建模时,我像大多数新手一样直接从URDF开始编写。当模型复杂度超过四个轮子时,代码就开始变得难以维护——每次修改轮子尺寸都要手动调整八个地方,稍不留神就会漏改某个参数。…...

科研必备:Mathpix+Mathtype一键转换PDF/图片公式为可编辑格式

1. 科研公式处理的痛点与解决方案 每次阅读文献时看到需要引用的公式,手动输入总让人头疼。特别是遇到复杂的分式、积分符号或矩阵时,光是调整格式就可能花费半小时。我曾为了输入一个三重积分公式,反复调试了40分钟仍不满意。 传统方法主要有…...

ComfyUI翻译节点实战:一键将中文提示词精准转化为英文

1. ComfyUI翻译节点:中文用户的效率救星 每次用ComfyUI生成图片时,最头疼的就是写英文提示词。作为一个母语中文的用户,我经常要反复切换浏览器查词典、用翻译软件,好不容易凑出来的英文提示词还经常词不达意。直到发现了ComfyUI的…...

从一笔转账看懂银行账务:客户、账户、科目与总账的完整数据流转(附实操SQL)

从一笔转账透视银行账务系统的技术架构与数据流转 当你在手机银行点击"确认转账"按钮时,系统背后发生了什么?这个看似简单的操作,实际上触发了一场精密的数据交响乐。作为金融科技从业者,理解资金在银行系统中的完整流转…...

SR-IOV与NVMe SSD的QoS性能隔离实践

1. 为什么需要SR-IOV与NVMe SSD的性能隔离? 在云计算和大数据场景中,存储性能的稳定性和隔离性一直是工程师们头疼的问题。想象一下,你租用了一台云服务器,明明配置很高,但磁盘性能却时好时坏——这可能就是多虚拟机共…...

在Ascend NPU上构建并运行onnxruntime的实战指南

1. 为什么要在Ascend NPU上运行onnxruntime? 最近几年国产AI加速硬件发展迅猛,Ascend NPU凭借出色的算力和能效比,在推理场景中表现亮眼。但很多开发者手上积累了大量ONNX格式的模型,直接迁移到新硬件平台总会遇到各种兼容性问题。…...

保姆级教程:在Ubuntu 22.04上从零编译ArmSoM Sige7的RK3588 Linux固件(含环境配置与常见错误排查)

RK3588 Linux固件编译实战:从环境搭建到烧录全流程指南 1. 开发环境准备与SDK获取 在Ubuntu 22.04系统上编译RK3588 Linux固件前,需要确保主机满足以下硬件要求: 磁盘空间:至少40GB可用空间(多系统编译需更大&#…...

从ECU复位到产线下线:深度拆解ControlDTCSetting(0x85)在汽车电子生命周期中的4种角色

ECU生命周期中的ControlDTCSetting(0x85)服务:从研发到售后的四维实践指南 当ECU完成最后一次产线测试即将装车时,产线工程师老张习惯性地在EOL终端上输入了一组UDS指令。其中那条ControlDTCSetting(0x85)服务的执行结果让他确认了这个控制单元已经准备好…...