在一套完整的原生的openstack系統當中,Novaclient客戶端是已經默認安裝的。若是別的物理機想訪問已有的openstack nova的服務,能夠經過安裝Novaclient客戶端的方式實現,現簡單介紹如何安裝Novaclient客戶端。python
1.安裝Novaclient客戶端api
sudo pip install python-novaclient
2.更新Novaclient客戶端bash
sudo pip install --upgrade python-novaclient
3.刪除Novaclient客戶端session
sudo pip uninstall python-novaclient
4.當安裝完成後,可經過命令查詢其版本號url
pip freeze | grep python-novaclient
注意:在安裝完成後,須要手動加載環境變量,裏面包含項目名稱、用戶名、密碼以及訪問的URL等內容。下圖是環境變量的一個示例:spa
客戶端安裝完成後,接下來介紹如何在CMD使用Nova服務。code
1.首先進入Python環境並導入Novaclient包server
>>> from novaclient import client
2.進行Novaclient認證對象
>>> nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)
其中VERSION指的是Novaclient的版本,能夠是字符串,好比1.一、2或者2.x等,也能夠是novaclient.api_versions.APIVersion的對象。USERNAME和PASSWORD分別是登陸openstack的用戶名和密碼,PROJECT_ID是項目的ID,也能夠是項目名稱。AUTH_URL是服務的入口地址。ip
固然,咱們還能夠經過keystone的會話API來建立client鏈接。
>>> from keystoneauth1 import loading >>> from keystoneauth1 import session >>> from novaclient import client >>> loader = loading.get_plugin_loader('password') >>> auth = loader.load_from_options(auth_url=AUTH_URL, ... username=USERNAME, ... password=PASSWORD, ... project_id=PROJECT_ID) >>> sess = session.Session(auth=auth) >>> nova = client.Client(VERSION, session=sess)
若是keystone的版本是V3,你能夠在參數中添加DOMAIN_NAME或者是DOMAIN_ID。
還能夠經過以下方式進行client鏈接:
>>> from novaclient import client >>> with client.Client(VERSION, USERNAME, PASSWORD, ... PROJECT_ID, AUTH_URL) as nova: ... nova.servers.list() ... nova.flavors.list() ...
最後,若是但願創建一個長鏈接,能夠經過以下方式實現:
>>> from novaclient import client >>> nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, ... AUTH_URL, connection_pool=True)
下圖是我在本地實現的一個示例:
今天就暫時講解到這裏,下次將會深刻到Novaclient的代碼進行分析和研究。