目录

Openstack通过命令行启动实例

系列 - Openstack学习

openstack 通过命令行启动实例

Note

参考文档:官方文档

创建一个网络:

openstack network create  --share --external \
  --provider-physical-network provider \
  --provider-network-type flat provider

在创建的网络上创建一个子网(网段为供应网络同网段):

openstack subnet create --network provider \
  --allocation-pool start=192.168.124.101,end=192.168.124.250 \
  --dns-nameserver 114.114.114.114 --gateway 192.168.124.1 \
  --subnet-range 192.168.124.0/24 provider
Important

如果实例要使用自助网络,要提前先创建一个供应商网络。

创建普通用户和项目:

# 创建项目
openstack project create --domain default --description "Demo Project" myproject
# 创建用户
openstack user create --domain default --password 1 test_user
# 给用户授予manager角色并和myproject项目绑定
openstack role add --user test_user --project myproject  manager

创建普通用户环境变量脚本并运行生成凭证:

cat << EOF > test_user
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=test_user
export OS_PASSWORD=1
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF 
. test_user

创建网络:

openstack network create selfservice
Note

非特权用户通常无法向此命令提供其他参数,该服务会使用 /etc/neutron/plugins/ml2/ml2_conf.ini文件中的信息自动选择参数。

在创建的网络上创建子网:

openstack subnet create --network selfservice \
  --dns-nameserver 114.114.114.114 --gateway 172.16.1.1 \
  --subnet-range 172.16.1.0/24 selfservice

创建路由器:

openstack router create router

将创建的子网添加为路由器上的接口:

openstack router add subnet router selfservice

在路由器上设置一个供应网络 IP 作为路由器网关:

openstack router set router --external-gateway provider

获取管理员凭证:

source /etc/profile

列出网络命名空间(你应该会看到一个qrouter 命名空间和两个 qdhcp 命名空间):

root@controller:~# ip netns
# 输出内容
    qrouter-094166fc-9f50-43ac-b3b1-6d42d58ad99d (id: 2)
    qdhcp-370b66a8-5d4f-49f6-9752-9f89c84b5b6d (id: 1)
    qdhcp-46cf0fc9-51a7-4bbe-a57c-21bff44ed075 (id: 0)

列出路由器上的端口以确定提供商网络上的网关 IP 地址:

root@controller:~# openstack port list --router router
# 输出内容
    +--------------------------------------+------+-------------------+-------------------------------------------------------+--------+
    | ID                                   | Name | MAC Address       | Fixed IP Addresses                                    | Status |
    +--------------------------------------+------+-------------------+-------------------------------------------------------+--------+
    | 09d3d3ae-6a2a-4bbe-a691-fe1ede2ea578 |      | fa:16:3e:bb:62:28 | ip_address='172.16.1.1',                              | ACTIVE |
    |                                      |      |                   | subnet_id='01ef9347-adbd-4870-a175-f3bf6b45ffbc'      |        |
    | 1d5a5224-f275-492b-bfa9-b05009397be3 |      | fa:16:3e:c1:d4:59 | ip_address='192.168.124.131',                         | ACTIVE |
    |                                      |      |                   | subnet_id='c024f3d9-4dc6-4f55-9fb2-433c6bf4d93e'      |        |
    +--------------------------------------+------+-------------------+-------------------------------------------------------+--------+

从控制节点或物理提供商网络上的任何主机 ping 此 IP 地址(如果可以测通说明创建成功):

ping -c 4 192.168.124.131

创建实例规格:

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

获取普通用户凭证:

. test_user

生成密钥对:

ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

验证密钥对的添加:

openstack keypair list

允许 ICMP (ping):

openstack security group rule create --proto icmp default

允许安全外壳 (SSH) 访问:

openstack security group rule create --proto tcp --dst-port 22 default

在控制节点上,获取普通凭证以获取仅限用户的 CLI 命令的访问权限(如果已经是可跳过):

. test_user

列出可用的口味:

openstack flavor list

列出可用的镜像:

openstack image list

列出可用网络:

openstack network list

列出可用的安全组:

openstack security group list

启动实例:

openstack server create --flavor m1.nano --image cirros \
  --nic net-id=provide --security-group default \
  --key-name mykey provider-instance

检查实例状态:

openstack server list

获取您的实例的虚拟网络计算 (VNC) 会话 URL 并从 Web 浏览器访问它

openstack console url show provider-instance

访问并登录实例后的操作:

# 验证对提供商物理网络网关的访问
ping -c 4 192.168.124.1
# 验证互联网访问
ping -c 4 baidu.com
Note

除了节点上和实例同网段的主机都能访问,节点本身不能访问。

验证从提供商物理网络上的任何主机到实例的连接:

ping -c 4 实例IP

使用 SSH 提供商物理网络上的任何主机访问您的实例:

ssh cirros@实例IP

在控制节点上,获取普通用户凭证以获取仅限用户的 CLI 命令的访问权(如果已经是可跳过):

. test_user

列出可用的 flavor:

openstack flavor list

列出可用的镜像:

openstack image list

列出可用网络:

openstack network list

列出可用的安全组:

openstack security group list

启动实例:

openstack server create --flavor m1.nano --image cirros \
  --nic net-id=370b66a8-5d4f-49f6-9752-9f89c84b5b6d --security-group default \
  --key-name mykey selfservice-instance

检查实例的状态:

openstack server list

获取实例的虚拟网络计算 (VNC)会话 URL 并从 Web 浏览器访问它:

openstack console url show selfservice-instance

访问并登录实例后的操作:

# 验证对自助服务网络网关的访问
ping -c 4 172.16.1.1
# 验证互联网访问
ping -c 4 www.baidu.com
Note

除了节点上和实例同网段的主机都能访问,节点本身不能访问。

在提供商虚拟网络上创建浮动 IP 地址:

openstack floating ip create provider

将浮动 IP 地址与实例关联:

openstack server add floating ip selfservice-instance 192.168.124.191

检查浮动 IP 地址的状态:

root@controller:~# openstack server list
# 输出内容
    +--------------------------------------+----------------------+---------+-------------------------------------------+--------+---------+
    | ID                                   | Name                 | Status  | Networks                                  | Image  | Flavor  |
    +--------------------------------------+----------------------+---------+-------------------------------------------+--------+---------+
    | 91dd1166-d7b0-4a1e-8e52-1ff5e9144393 | selfservice-instance | ACTIVE  | selfservice=172.16.1.201, 192.168.124.191 | cirros | m1.nano |
    | 5bb1918f-06b9-4810-8c14-91bd6f95ddd4 | provider-instance    | SHUTOFF | provider=192.168.124.237                  | cirros | m1.nano |
    +--------------------------------------+----------------------+---------+-------------------------------------------+--------+---------

验证从提供商物理网络上的任何主机到实例的连接:

ping -c 4 192.168.124.191

使用 SSH 提供商物理网络上的任何主机访问您的实例:

ssh cirros@192.168.124.191