创建第一台实例:Horizon ↔ CLI

101 阅读4分钟

创建第一台实例:Horizon ↔ CLI

前置:DevStack 安装、OpenStack 是什么 目标:用页面和命令各开一台虚机,搞清镜像 / Flavor / 网络 / 安全组 / 项目作用域。

引言

环境起来了,下一步是真正开出一台实例。 很多第一次失败不是「OpenStack 坏了」,而是:镜像架构不对、网络没选、安全组没放行、或者开在了错误的项目里。

本文按「准备材料 → Horizon 走一遍 → CLI 走一遍 → 核对状态」写,两边对照。


开始前:确认环境与作用域

# 进入 stack 用户后
source ~/devstack/openrc admin admin
# 或 demo 用户:source ~/devstack/openrc demo demo

openstack token issue
openstack project list
注意说明
openrc 第二个参数是项目名admin admin = 用户 admin、项目 admin
列表为空先怀疑项目 / 用户是否搞错,再怀疑「资源没了」
Apple Silicon用 aarch64 镜像;见安装篇 cpu_mode = none

确认当前用户与项目


开实例需要的四样东西

材料是什么怎么查
镜像 Image虚拟机磁盘模板openstack image list
规格 FlavorvCPU / 内存 / 磁盘套餐openstack flavor list
网络 Network实例插哪张「虚拟网卡」openstack network list
安全组 Security Group防火墙规则集合openstack security group list

可选但强烈建议:密钥对 Keypair(SSH 公钥)。Cirros 也可用控制台 + 默认密码试登录;正式镜像基本靠密钥。密钥对专篇见后续。

openstack image list
openstack flavor list
openstack network list
openstack security group list

四样材料的 CLI 列表

DevStack 通常自带 Cirros 镜像和 private 一类租户网;Flavor 常见 m1.nano / m1.tiny(小规格适合学习机)。


路径 A:Horizon 创建

  1. 浏览器打开 http://<HOST_IP>/dashboard,用 admin / 你的 ADMIN_PASSWORD 登录。
  2. 右上角确认当前项目(例如 admin 或 demo)。
  3. 计算 → 实例 → 启动实例。

建议按向导填:

步骤建议
详情实例名称如 web-01
源从镜像启动;选匹配架构的 Cirros / Ubuntu
规格m1.nano 或 m1.tiny
网络勾选一条可用的私有网络
安全组先用 default(后面再改规则)
密钥对有则选;没有可先跳过(Cirros + 控制台)

Horizon 启动实例向导

创建后到 实例 列表,状态应到 运行中 / ACTIVE。点实例名可看 IP、控制台。

Horizon 实例列表 ACTIVE

打开控制台,Cirros 常见提示用户 cirros,密码看控制台输出(或文档默认 gocubsgo,以你镜像为准)。

Horizon 实例控制台


路径 B:CLI 创建

先拿网络 ID(示例取第一条非 external 的网;以你环境为准):

source ~/devstack/openrc admin admin

# 看清镜像名(Apple Silicon 选 aarch64)
openstack image list -c Name -c Status

# 网络
openstack network list

NET_ID=$(openstack network list -f value -c ID -c Name | awk '/private/{print $1; exit}')
# 若没有叫 private 的网,手动:
# NET_ID=<你的网络 UUID>

openstack server create web-cli-01 \
  --flavor m1.nano \
  --image cirros-0.6.3-aarch64-disk \
  --nic net-id=$NET_ID \
  --wait

openstack server list
openstack server show web-cli-01

镜像名以 openstack image list 为准;x86 环境把镜像换成对应的 amd64 Cirros。

CLI 创建成功与 server list


对照表:同一件事两种入口

动作HorizonCLI
列表计算 → 实例openstack server list
创建启动实例openstack server create ...
详情点实例名openstack server show <名或ID>
控制台控制台 Tabopenstack console url show <名>(VNC/SPICE 链接)
删除删除实例openstack server delete <名>
openstack console url show web-cli-01
openstack server delete web-cli-01

项目作用域:为什么「我刚创建的看不见」

典型坑:

  1. Horizon 右上角项目是 demo,CLI 却 source openrc admin admin。
  2. 管理员用了 --all-projects 才看得见,普通列表只显示当前项目。
# 只看当前项目
openstack server list

# 管理员看全部
openstack server list --all-projects

同一资源:当前项目 vs all-projects

口诀:先确认「我是谁、在哪个项目」,再谈资源在不在。


创建失败时先看这三处

  1. 实例状态 → ERROR:openstack server show <名>,看 fault 字段。
  2. 计算服务 → openstack compute service list,nova-compute 是否 up。
  3. 架构 / CPU 模式 → Apple Silicon 必看安装篇热修复;镜像必须是 aarch64。
openstack server show web-cli-01 -c status -c fault -c addresses
openstack compute service list

更系统的排障见后续「实例 ERROR」专篇。

server show 中的 fault 信息


小结

  • 开实例 = 镜像 + Flavor + 网络(+ 安全组 / 密钥对)。
  • Horizon 与 CLI 是同一套 API;学习时两边都做一遍。
  • 列表为空优先查项目作用域。
  • 下一篇起按组件拆开:Keystone → Glance → Nova → Neutron → Cinder。

下一篇:身份与权限:Keystone


参考