以下内容来自OpenStack官方文档。

在命令行创建虚拟机的命令如下:

openstack server create
    (--image <image> | --image-property <key=value> | --volume <volume>)
    --flavor <flavor>
    [--security-group <security-group>]
    [--key-name <key-name>]
    [--property <key=value>]
    [--file <dest-filename=source-filename>]
    [--user-data <user-data>]
    [--availability-zone <zone-name>]
    [--block-device-mapping <dev-name=mapping>]
    [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid,auto,none>]
    [--network <network>]
    [--port <port>]
    [--hint <key=value>]
    [--config-drive <config-drive-volume>|True]
    [--min <count>]
    [--max <count>]
    [--wait]
    <server-name>

  --image <image>:指定通过镜像文件创建虚拟机的启动盘,image可以是名字或id号。

--image-property <key=value>:指定image的属性。

--volume <volume>:指定通过volume创建虚拟机的启动盘。如果设置了volume选项,系统将自动创建一个块设备映射(block device mapping),在许多hypervisor(例如libvirt/kvm)上,这个设备为vda,不要再使用–block-device-mapping选项为这volume创建块设备映射。

--flavor <flavor>:指定待创建虚拟机的配置:vCPU的个数、内存容量、磁盘容量,flavor可以是名字或id号。

--security-group <security-group>:设置待创建虚拟机的安全组,一个虚拟机可以属于多个安全组,如果要设置多个安全组,可以重复使用该选项,security-group可以是名字或id号。

--key-name <key-name>:往待创建虚拟机中注入秘钥,可以通过key-name从系统中获取key-data。

--property <key=value>:为待创建虚拟机设置属性,可以通过重复使用该选项设置多个属性,如

     –property description=”My Server” 选项为服务器添加一个描述

--file <dest-filename=source-filename>:在虚拟机启动之前,把文件注入到image中,如


--file /root/.ssh/authorized_keys=special_authorized_keysfile 选项指定在创建虚拟机时,将虚拟机中的文件“/root/.ssh/authorized_keys”替换成文件“/root/.ssh/authorized_keys”


--user-data <user-data>:当虚拟机启动时,用本地文件为虚拟机传递用户数据,如


--user-data cloudinit.file:用户数据文件cloudinit.file


--availability-zone <zone-name>:为虚拟机选择一个可用的zone。

--block-device-mapping <dev-name=mapping>:为虚拟机创建一个块设备,块设备的映射格式为<dev-name>=<id>:<type>:<size(GB)>:<delete-on-terminate> <dev-name>,<dev-name>为块设备的名称,如vdb, xvdc,<id>:为volume或snapshot的id号,<type>:指明是volume还是snapshot,如果不填,默认为volume,<size(GB)>为volume的大小,如果是从snapshot创建的,则需要指定,<delete-on-terminate>虚拟机终止运行时,是否删除这个块设备,默认是否。

--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid,auto,none>:为虚拟机创建一个网卡,可以通过重复使用该选项创建多个网卡,net-id和port-id两者只能选一个,net-id选项通过id号指定该网卡链接的网络,port-id选项通过id号指定网卡链接的port,v4-fixed-ip:给网卡配置的IPv4地址,v6-fixed-ip:给网卡配置的IPv6地址,none:(v2.37)版本之后才支持,指定该网卡不链接任何网络,auto: (v2.37)版本之后才支持,系统自动为网卡分配一个网络。

--network <network>:为虚拟机创建一个网卡,并将其链接到一个网络,可以重复多次使用以创建多个网卡。

--port <port>:为虚拟机创建一个网卡,并将其链接到一个port,可以重复多次使用以创建多个网卡。

--hint <key=value>:为虚拟机调度增加过滤条件(这个选项和下一个选项的解释来自网上的博文),如,

--hint group=group_id:

                 Server group 有两种policy:affinity 和anti-affinity。

                 affinity:表示尽量把vm都安排到一个host上面。如果不添加policy选项,默认使用affinity。

                 anti-affinity:表示尽量把vm安排到不同的host上面。

                在创建云主机中加入--hint选项,就会将云主机加入相应的ServerGroup的member中,相同server group的成员按照相应的策略进行调度。

--config-drive <config-drive-volume>|True:使用指定的卷作为配置驱动器,或“True”使用临时驱动器。

--min <count>:创建的虚拟机的最小个数,默认为1。

--wait:一直等待,直到虚拟机创建结束。

server-name:指定待创建虚拟机的名字。

--max <count>:创建虚拟机的最大个数,默认为1。