Openstack通过命令行启动实例
openstack 通过命令行启动实例
参考文档:官方文档
1.创建虚拟网络
1.1 创建提供商网络
创建一个网络:
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
1.2 创建自助服务网络
如果实例要使用自助网络,要提前先创建一个供应商网络。
1.2.1 创建网络和子网
创建普通用户和项目:
# 创建项目
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
非特权用户通常无法向此命令提供其他参数,该服务会使用 /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
1.2.2 创建路由器
创建路由器:
openstack router create router
将创建的子网添加为路由器上的接口:
openstack router add subnet router selfservice
在路由器上设置一个供应网络 IP 作为路由器网关:
openstack router set router --external-gateway provider
1.2.3 验证操作
获取管理员凭证:
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
2.创建 m1.nano 风格
创建实例规格:
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
3.添加安全组规则
允许 ICMP (ping):
openstack security group rule create --proto icmp default
允许安全外壳 (SSH) 访问:
openstack security group rule create --proto tcp --dst-port 22 default
4.启动实例
4.1在提供商网络上启动实例
4.1.1 确定实例选项
在控制节点上,获取普通凭证以获取仅限用户的 CLI 命令的访问权限(如果已经是可跳过):
. test_user
列出可用的口味:
openstack flavor list
列出可用的镜像:
openstack image list
列出可用网络:
openstack network list
列出可用的安全组:
openstack security group list
4.1.2 启动实例
启动实例:
openstack server create --flavor m1.nano --image cirros \
--nic net-id=provide --security-group default \
--key-name mykey provider-instance
检查实例状态:
openstack server list
4.1.3 使用虚拟控制台访问实例
获取您的实例的虚拟网络计算 (VNC) 会话 URL 并从 Web 浏览器访问它
openstack console url show provider-instance
访问并登录实例后的操作:
# 验证对提供商物理网络网关的访问
ping -c 4 192.168.124.1
# 验证互联网访问
ping -c 4 baidu.com
4.1.4 远程访问实例
除了节点上和实例同网段的主机都能访问,节点本身不能访问。
验证从提供商物理网络上的任何主机到实例的连接:
ping -c 4 实例IP
使用 SSH 提供商物理网络上的任何主机访问您的实例:
ssh cirros@实例IP
4.2 在自助服务网络上启动实例
4.2.1 确定实例选项
在控制节点上,获取普通用户凭证以获取仅限用户的 CLI 命令的访问权(如果已经是可跳过):
. test_user
列出可用的 flavor:
openstack flavor list
列出可用的镜像:
openstack image list
列出可用网络:
openstack network list
列出可用的安全组:
openstack security group list
4.2.2 启动实例
启动实例:
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
4.2.3 使用虚拟控制台访问实例
获取实例的虚拟网络计算 (VNC)会话 URL 并从 Web 浏览器访问它:
openstack console url show selfservice-instance
访问并登录实例后的操作:
# 验证对自助服务网络网关的访问
ping -c 4 172.16.1.1
# 验证互联网访问
ping -c 4 www.baidu.com
4.2.4 远程访问实例
除了节点上和实例同网段的主机都能访问,节点本身不能访问。
在提供商虚拟网络上创建浮动 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