2015年8月31日 星期一

使用 Python 整合 VMware vSphere

pyVmomi [1] 是一個由 VMware 官方釋出的 Python API,可以用來存取 vSphere/vCenter 的資源。
另外有一些簡易的使用範例 [2],可以大略參考要如何開始使用 Python 連接 vSphere/vCenter。
這篇是用來記錄初步介接 vSphere/vCenter 的經驗。

2015年8月27日 星期四

在 gitlab 上更新 fork 出來的專案

在 GitLab 的介面上,可以透過 Fork 的功能,把別人的專案建立一個 fork 到自己的帳號底下
例如原始專案的網址是 http://gitlab/userA/project,fork 出來的專案網址會是 http://gitlab/userB/project。
不過原始專案會由原始專案的專案成員繼續更新,而自己 fork 下來的專案則會停在執行 fork 當時的狀況
如果想要跟著原始專案一起更新的話,需要額外做一點小撇步 [1]。

2015年8月21日 星期五

使用 pyVmomi 時略過 HTTPS 警告

在使用 pyVmomi 連接 VMware 的 API 時,第一個遇到的問題是程式出現以下的警告:
/usr/lib/python2.6/site-packages/requests-2.7.0-py2.6.egg/requests/packages/urllib3/connectionpool.py:768: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
看起來就是因為連線要使用 HTTPS,但是沒有給予憑證的問題~。
不過簡單地搜尋一下,就看到 [1] 的解法,只要把 requests 這個套件的警告關掉就可以了。
import atexit
import requests
from pyVim import connect

# Disable the checking of certification.
requests.packages.urllib3.disable_warnings()
# Initiate the connection to VMware vSphere.
service_instance = connect.SmartConnect(
        host="192.168.200.200",
        user="administrator@vsphere.local",
        pwd="qwer",
        port=443)
atexit.register(connect.Disconnect, service_instance)

# Get the session ID from the connection.
session_id = service_instance.content.sessionManager.currentSession.key
print("Session ID: %s" % session_id)

程式印出的回覆如下:
Session ID: 521eab6e-7ef1-d7e6-1f67-ba38dd7e2487

參考資料:
  1. Surpress InsecureRequestWarning: Unverified HTTPS request is being made in Python2.6

2015年8月19日 星期三

指定版本安裝 Python 套件:以 easy_install 為例

Python 常見的套件管理程式有 easy_install 跟 pip,兩者都有可能直接內建在作業系統上
因為軟體開發時,通常需要指派固定的第三方套件版本,以確保不會因為第三方套件的意外升級導致軟體出錯
因此就找了以 easy_install 來安裝指定版本的 Python 套件的方法。
完整的介紹可以參考 [1],有包括 easy_install 與 pip 的說明。

2015年8月18日 星期二

在 Python 2.6 執行指令並擷取回應

想要用 Python 執行某個指令,並且把指令回覆的資料拿來做後續的程式處理
在 Python 2.7 以上版本可以用 subprocess.check_output() 這個方法
不過看了一下文件,Python 2.6 似乎沒有 check_output 的方法,有的只有 Popen 而已。

2015年8月12日 星期三

無法啟用 GlusterFS 的 NFS 服務

GlusterFS 本身有提供 NFS 的介面,並且預設就會開啟
不過最近在把一台壞掉的 GlusterFS 節點重裝,並且恢復成叢集的一部分時
遇到了 NFS 不知道為什麼,一直打不開的問題。

2015年8月5日 星期三

在 Python 匯入其他資料夾的模組

這個問題在網路上其實可以找到非常多的討論,好像很多人都遇到一樣的問題
花了一些時間研究,雖然還是搞不太懂怎麼樣用相對路徑匯入模組
不過至少純以專案內自己的絕對路徑,目前實驗是可以運作的~。