Openstack學習筆記(五):創建實例

啟動一個實例

創建公共網絡

  • 創建網絡
    [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的域名,可以解決問題
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容