在openstack环境中提供了多种操作虚拟机的方法,有最简单直接的dashborad界面,有不直观但高效的命令行,还有进阶版的postman调用openstack restfulapi和命令行中使用curl命令调用restful api,最终杀器是代码中调用api接口。总结一下有如下几种方法能够操作虚拟机,或者说操作openstack云环境。

  1. horizon界面
  2. openstack命令行
  3. postman等工具
  4. curl等http请求命令
  5. 代码调用api

本节从命令行开始讲起,使用openstack命令行来完成常规的操作。这种方式最大的好处就是能够批量操作,如果在云环境中有不同类型的主机各需要创建100台,从horizon操作明显就是不现实的,而shell脚本就能很好的解决这个问题。

身份验证

在每个社区版搭建好的openstack环境中,都有记录用户信息的文件,叫admin-openrc,该文件是表明当前命令行使用者的身份的,作用如同登陆界面的账号和密码验证。

里面的内容有域名,项目组,用户名,密码,URL地址,keystone版本,镜像版本等。

在命令行操作之前首先要做的就是执行该文件,在命令行中验证身份。

命令格式

openstack中有四大核心组件,keystone,glance,nova,neutron等。四个组件分别有自己的命令行,如上镜率最高的两个命令:查询nova服务的命令  nova service-list,查询网络节点信息的命令 neutron agent-list等。openstack社区为了方便使用,将所有的组件的的命令做了一个统一,即以openstack开头的命令。

如查看nova服务的命令

openstack compute service  list

查看网络服务的命令

openstack network agent list

善用提示信息

简单命令

以openstack为首的命令虽然一统江湖,但是想要记住所有的命令也是一件困难的事情。好在openstack命令提供了提示功能。例如想要查看openstack中nova节点的信息,不记得完整的命令,只知道openstack  compute,那么可以尝试用提示信息完成。

可以看到以openstack compute开始的命令有很多个,其中openstack compute service list很像我们要找的命令,于是输入openstack compute service list。这里就能看到环境中有两个计算节点compute,compute1,并且compute1的状态是关机。

复杂命令

可能有时遇到的命令比较复杂,如创建一个镜像,需要很多的参数,那么所有的提示都会显示出来。显示出来的所有参数该如何使用呢?其实中括号表示是可选,尖括号表示必填。以image create命令为例,最后的<image-name>是必填的参数,剩余的全都是可选参数。如果不加可选参数,openstack命令会使用默认的,缺省参数来创建镜像,虽然也能创建,但不一定是我们想要的。

如下是创建一个镜像的命令,各参数的作用为:

  1. mycirros是镜像的名称,名称可以放在合适的位置,不一定是在最后。
  2. --disk-format是镜像的格式,使用的是qcow2格式。
  3. --public是指镜像为共有,任何人都可以使用。注意这里没有参数,参考提示信息,该选项是没有参数的。
  4. --flie是镜像放置的位置。我的/root路径下放置一个名为cirros-0.3.5-x86_64-disk.img的镜像。

所以不用害怕忘记了命令行的命令,在openstack的提示信息下能够完成各种操作。openstack命令行也是有一定的规律可循的,如以list结尾的都是查看所有信息,以show结尾的都是查看某一个具体的信息。以下是openstack中常见的操作,能完成下面的操作,对命令行就可以说是熟悉了。熟悉之后可以尝试完成后面的创建虚拟机小实验。

管理项目,用户和角色

展示所有租户

openstack project list

创建租户

openstack project create --description 'Project description'  project-name

更新租户名称

openstack project set ID/name --name project-new

删除租户

openstack project delete project-name

展示所有用户

openstack user list

添加用户

openstack user create --password <password> name 该方式指定密码字符串
openstack user create --password-prompt name 该方式交互式填入密码

禁止用户

openstack user set user_name --disable

启用用户

openstack user set user_name --enable

更新用户名

openstack user set user_name --name username_new

删除用户

openstack user delete user_name

展示所有角色

openstack role list

创建新的角色

openstack role create new_role

综合:将某某用户添加到某某角色下

openstack role add --user user_name --project project_name role_name

显示结果

openstack role list --user user_name  --peoject project_name

镜像管理

查看镜像列表

openstack image list

查看某一个具体的镜像

openstack image show image_name
创建一个镜像
openstack image create --disk-format 参数 --public --file 参数 image_name

查看安全组

openstack group list

增加安全组

openstack group create group_name --description ""

主机

查看openstack环境主机数量

openstack host list

查看某一台主机资源情况

openstack host show host_name

网络

查看主机网络服务

openstack network agent list

查看端口信息

openstack port list

查看网络信息

openstack network list

创建外网

openstack network create  --external outsidenet

创建外网子网

openstack subnet create --allocation-pool start=88.88.88.2,end=88.88.88.80 --subnet-range 88.88.88.0/24 --network outsidenet subnet_name

创建内网

openstack network create --internal --provider-network-type gre insidenet

创建内网子网

openstack subnet create --subnet-range 20.0.0.0/24 --network insidenet --dns-nameserver 114.114.114.114 provider_subent

创建路由器

openstack router create router_name

路由器连接子网

opens= tack router add subnet router_demo insidesubnet

路由器设置网关

openstack router set --external-gateway outsidenet router_name

虚机管理

查看虚拟机数量

openstack server list

创建虚拟机

 启动一个虚拟机必要的信息是镜像,规格,网络。从前面学习到的image操作中找到镜像,从flavor操作中找到合适的规格,从网络操作中找到网络。
 openstack server create --image cirros --flavor small --nic net-id=insidenet VM_name

虚拟机暂停

openstack server pause VM_name

虚拟机启动

openstack server unpause VM_name

虚拟机重启

openstack server reboot VM_name

 

综合操作

有了以上的操作基础之后,就可以在环境中以命令行的方式从零开始创建我们需要的主机。

前言

openstack中创建一个主机需要的必要元素是:镜像、规格、网络。三个参数是必填参数。

准备:

一、上传镜像,并创建镜像。

这个步骤在前面的实验中就已经介绍过了,所以现在跳过,可以使用前面创建的名为mycirros的镜像。参见章节:命令格式

二、创建flavor规格。

创建flavor时可以使用上面介绍的技巧。

第一步,我不知道创建的命令,从提示中获取信息,应该是openstack flavor create命令。

第二步,创建的命令有很多参数,可以根据常用命令来填写参数。或者参考已经创建好的flavor来创建。

上图,创建的flavor名称为myflavor,内存为5123M,磁盘为5G,cpu为1核,是公用flaovr。下图为创建成功的反馈信息。

再次查看可见刚刚创建好的名为myflavor的规格。

 三、创建网络

openstack中网络的创建分为两个部分。首先创建一个网络,运营商网络或者是私网;然后创建子网,这样才是一个完整的网络。为了简单起见,我们就创建一个运营商网络。

第一步创建一个运营商网络,名为mynetwork。

注:运营商网络是指运营商管理的网络,通俗讲就是能正常上网的网络。

第二步创建子网。

创建子网需要填写必要的参数,可以参照常用命令表。各参数意义如下:

  1. --allocation-pool start=X.X.X.X,end=X.X.X.X。分配的运营商地址范围。该范围中的ip都能上网。
  2. --subnet-range 子网的范围。
  3. --dns-nameserber DNS 服务器ip地址。
  4. --gateway 网关地址。
  5. --network 指定子网附属的网络。

从反馈信息中能够看到我们设置的参数都生效了,还有很多没有设置的参数使用默认值。

查看可以得知环境中已经创建了名为mynetwork的网络。

 四、创建虚拟机:

到目前为止,创建虚拟机所有的必要条件都准备齐全了。镜像为mycirros、规格为myflavor、网络为mynetwork。接下来就开始创建虚拟机。

通过参考提示信息或者查询常用命令表,可以知道创建虚拟机是指定的参数为 镜像 --image、规格 --flavor、网络 --nic net-id。如下创建一个名为myinstance的虚拟机。

创建完成之后可以使用openstack  server show VM-name的命令查看myinstance详细信息。

当虚拟机创建成功之后,我们要使用虚拟机,如何登陆上去呢?这里再使用一个命令,查询出创建成功的虚拟机的登陆地址。使用如下端口的命令,得到从虚拟的登陆vnc端口。

复制url到浏览器中,可以看到直接登陆到创建的虚拟机中。

简单总结:

以上过程我们在纯命令行中完成了openstack虚拟机的创建,其中分别创建了镜像,规格,网络等。命令行操作虽然参数多,但openstack社区已经对其做了优化工作,能够使用提示信息去完成不复杂的操作。使用命令行操作除了效率比较高之外,可选的参数也比界面操作要多,能完成界面上某些不能完成的功能。所以作为一个想要从事openstack运营或者开发的童鞋,命令行是一定要掌握的技能。

openstack操作之一 命令行的更多相关文章

  1. C#中隐式操作CMD命令行窗口

    原文:C#中隐式操作CMD命令行窗口 MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定 ...

  2. go语言之行--文件操作、命令行参数、序列化与反序列化详解

    一.简介 文件操作对于我们来说也是非常常用的,在python中使用open函数来对文件进行操作,而在go语言中我们使用os.File对文件进行操作. 二.终端读写 操作终端句柄常量 os.Stdin: ...

  3. mongodb数据库操作 python+命令行

      一.python操作 from bson.objectid import ObjectId import pymongo client1 = pymongo.MongoClient(host=) ...

  4. Linux 操作memcache命令行

    telnet 127.0.0.1 11211 连接 memcache stats 查看 memcache 状态 状态说明: pid memcache服务器的进程ID uptime 服务器已经运行的秒数 ...

  5. 廖雪峰Java1-4数组操作-5命令行参数

    adb和ideviceinstaller提供了许多参数供我们使用.命令行参数提供了这样的入口,针对不同的参数执行不同的命令. 1.命令行参数 命令行参数是一个String[] 数组,由JVM接收用户输 ...

  6. Linux图形操作与命令行

    一.执行命令 通过shell 在哪里输入: 1. 字符界面 2. 终端模拟器程序,如gnome-terminal.konsole (最早的linux是没有图形界面的,只有tty,也就是字符终端.当有了 ...

  7. 项目中git版本控制及协作开发的常用操作(命令行,小乌龟,sourcetree)

    一. git命令:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 小乌龟:htt ...

  8. git bash 常用操作文件命令行

    1, cd : change directory的简写,改变目录的意思,就是切换到哪个目录下, 如 cd e:\fff 切换 E 盘下面的fff 目录. 当我们用cd 进入文件夹时,我们可以使用 通配 ...

  9. mysql常用基础操作语法(三)~~对数据的增删改操作【命令行模式】

    1.插入单条数据:insert into tablename(字段名1,字段名2,...) values(值1,值2,...); 从图中可以看出,插入时不需要每个字段都有值(在没有相关的约束前提下), ...

随机推荐

  1. 使用sklearn进行数据挖掘-房价预测(2)—划分测试集

    使用sklearn进行数据挖掘系列文章: 1.使用sklearn进行数据挖掘-房价预测(1) 2.使用sklearn进行数据挖掘-房价预测(2)-划分测试集 3.使用sklearn进行数据挖掘-房价预 ...

  2. 使用OpenCV进行网络摄像头的图像采集及视频存储

    rtspURL格式 rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 1) username ...

  3. iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用

    iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...

  4. django-Ajax发送POST请求(csrf跨站请求的三种方式),文件的上传

    第一种 <script> $(".eq").on("click",function () { $.ajax({ url:"/eq/&quo ...

  5. 运行时动态库:not found 及介绍-linux的-Wl,-rpath命令

    ---此文章同步自我的CSDN博客--- 一.运行时动态库:not found   今天在使用linux编写c/c++程序时,需要用到第三方的动态库文件.刚开始编译完后,运行提示找不到动态库文件.我就 ...

  6. 移动GIS在企业各个行业中的应用解决方案

    “移动GIS的设备厂商越来越多地关注行业用户的需求,所以移动GIS的市场前景是非常广阔的.当前国内移动GIS,已广泛应用于测绘.国土.环境.水利.农业.林业和矿产等传统资源管理领域和城市规划方面.在应 ...

  7. Golang学习--包管理工具glide

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  8. Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示

    基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...

  9. Linux下实现视频读取(三)---Buffer的准备和数据读取

    前面主要介绍的是:V4L2 的一些设置接口,如亮度,饱和度.曝光时间,帧数,增益.白平衡等.今天看看V4L2 得到数据的几个关键ioctl,Buffer的申请和数据的抓取. 1. 初始化 Memory ...

  10. Unity游戏中使用贝塞尔曲线

    孙广东   2015.8.15 比方在3D rpg游戏中.我们想设置弹道,不同的轨迹类型! 目的:这篇文章的主要目的是要给你关于在游戏怎样使用贝塞尔曲线的基本想法. 贝塞尔曲线是最主要的曲线,一般用在 ...