啟動一個實例
創建公共網絡
創建網絡
[root@controller ~]# neutron net-create public --shared --provider:physical_network public --provider:network_type flat創建一個子網
[root@controller ~]# neutron subnet-create public 172.16.0.0/24 --name public --allocation-pool start=172.16.0.101,end=172.16.0.200 --dns-nameserver 8.8.8.8 --gateway 172.16.0.254
生成一個秘鑰對
[root@controller ~]# ssh-keygen -q -N ""
[root@controller ~]# nova keypair-add --pub-key ~/.ssh/id_rsa.pub mkey
[root@controller ~]# nova keypair-list
添加安全組規則
- 允許ICMP
[root@controller ~]# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
- 允許ssh訪問
[root@controller ~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
啟動一個實例
-
確定實例選項
[root@controller ~]# nova flavor-list
[root@controller ~]# nova image-list
[root@controller ~]# neutron net-list
[root@controller ~]# nova secgroup-list
啟動實例
[root@controller ~]# nova boot --flavor m1.small --image centos --nic net-id=0418a843-788a-43e6-ae4f-1f572664609f --security-group default --key-name mkey public-instance
[root@controller ~]# nova list
-
使用虛擬控制臺訪問
[root@controller ~]# nova get-vnc-console public-instance novnc
啟動成功
使用API接口新增虛擬機
機器環境
- windows10
- python3.5.2
這里使用python的openstack模塊來進行相關操作,需要通過pip來進行安裝,執行以下命令即可安裝
pip install openstackclient
連接測試
- 通過openstack的connection模塊進行連接,并獲取token
from openstack import connection
auth_args= {'project_name': 'admin', 'project_domain_id': 'default', 'username': 'admin', 'auth_url': 'http://172.23.0.211:35357/v3', 'password': '000000', 'user_domain_id': 'default'}
cc=connection.Connection(**auth_args)
cc.authorize()
- 獲取token后可以獲取compute、network等的狀態,具體方法可以在openstack\xxxx\v2_proxy.py查看,至此,API接口調試成功
for i in cc.compute.services():
print(i)
新增虛擬機
- 配置連接后在python執行以下命令以創建一個名為ssa的實例
IMAGE_NAME='centos'
FLAVOR_NAME='m1.small'
NETWORK_NAME='public'
KEY_NAME='mkey'
image=cc.compute.find_image(IMAGE_NAME)
flavor=cc.compute.find_flavor(FLAVOR_NAME)
networks=cc.network.find_network(NETWORK_NAME)
keypair=cc.compute.find_keypair(KEY_NAME)
server=cc.compute.create_server(name='ssa',image_id=image.id,flavor_id=flavor.id,networks=[{'uuid':networks.id}],key_name=keypair.name)
創建成功
遇到問題
- api調用失敗
按照openstack\connection.py文件里面的例子,只需要四個參數即可,但是實際執行會報錯。與在controller上配置的一致,identity的v3版本還需要project_domain_id和user_domain_id這兩個參數的,加上去之后正常,可以獲取token
- 在windows調用API的時候某些IP還是使用的形如http://controller:5000 這種形式,會導致找不到地址而使接口調用失敗,這時候需要編輯system32目錄下的hosts文件,增加controller的域名,可以解決問題