Source: Star Trek - Captain's Log
『太空,人類的終極邊疆。星艦企業號的旅程就是為了探索陌生的新世界,去尋找宇宙中的新生命與新文明,勇敢航向人類足跡從未踏至的領域。』不知道為什麼就很想用這個梗,大概我跟也迷航在Openstack的功能與設定裡面了...Orz..不知道何時雲端運算會變成銀河運算或是宇宙運算....(誤)
艦長日誌:
測試目標:讓MeshCloud可以介接Openstack
API 版本: aws-java-sdk 1.3.10
OpenStack版本: Openstack-essex release
測試環境: Ubuntu 12.04.1 LTS
測試對象:呼叫 openstack API http://x.x.x.x:8773/services/Cloud/
這幾天都在測試Openstack-essex 跟AWS EC2 的API相容性,發現很多API並不如官網所宣稱的那麼相容,或者應該說可以呼叫,但是很多行為與細節跟AWS並不一致,目前遇到的問題如下:
1. 無法RunInstance 同時使用BlockDeviceMapping去產生Volume
2. 不管透過API還是Dashboard去產生的Instance 都無法把Root Device 掛載EBS
3. 同2 所以Instance 關閉後,Instance就會自動被刪除
4. Attach Volume 必須掛載在/dev/vdx下面 (跟Amazon不一樣)
5. 無法import Key (Bug #755819)
此外目前最大的問題是Openstack dashboard 很多設定的功能都沒有,必須透過下指令(如:nove-manage),但是下指令修改後,卻又跟dashboard不同步。
之前許多網路新聞都說已經有很多廠商直接使用openstack,如果不是他們有特別的客製化,那就是還有許多設定我不知道或是設定錯誤...Orz... (不過我懷疑~:P)
官網列出來的比較表如下:
EC2 API method
|
實際測試 | |
AllocateAddress
|
![]() |
無法測試 |
AssociateAddress
|
![]() |
無法測試 |
AttachVolume
|
![]() |
ok |
AuthorizeSecurityGroupIngress
|
![]() |
|
BundleInstance
|
![]() |
|
CancelBundleTask
|
![]() |
|
CancelSpotInstanceRequests
|
![]() |
|
ConfirmProductInstance
|
![]() |
|
CreateImage
|
![]() |
|
CreateKeyPair
|
![]() |
ok |
CreatePlacementGroup
|
![]() |
|
CreateSecurityGroup
|
![]() |
ok |
CreateSnapshot
|
![]() |
|
CreateSpotDatafeedSubscription
|
![]() |
|
CreateTags
|
![]() |
|
CreateVolume
|
![]() |
ok |
DeleteKeyPair
|
![]() |
無法測試 |
DeletePlacementGroup
|
![]() |
|
DeleteSecurityGroup
|
![]() |
|
DeleteSnapshot
|
![]() |
|
DeleteSpotDatafeedSubscription
|
![]() |
|
DeleteTags
|
![]() |
|
DeleteVolume
|
![]() |
ok |
DeregisterImage
|
![]() |
無法測試 |
DescribeAddresses
|
![]() |
空的 |
DescribeAvailabilityZones
|
![]() |
|
DescribeBundleTasks
|
![]() |
|
DescribeImageAttribute
|
![]() |
|
DescribeImages
|
![]() |
ok |
DescribeInstanceAttribute
|
![]() |
|
DescribeInstances
|
![]() |
ok |
DescribeKeyPairs
|
![]() |
ok |
DescribePlacementGroups
|
![]() |
|
DescribeRegions
|
![]() |
|
DescribeReservedInstances
|
![]() |
|
DescribeReservedInstancesOfferings
|
![]() |
|
DescribeSecurityGroups
|
![]() |
|
DescribeSnapshotAttribute
|
![]() |
|
DescribeSnapshots
|
![]() |
|
DescribeSpotDatafeedSubscription
|
![]() |
|
DescribeSpotInstanceRequests
|
![]() |
|
DescribeSpotPriceHistory
|
![]() |
|
DescribeTags
|
![]() |
|
DescribeVolumes
|
![]() |
會有warn |
DetachVolume
|
![]() |
ok |
DisassociateAddress
|
![]() |
無法測試 |
GetConsoleOutput
|
![]() |
空的 |
GetPasswordData
|
![]() |
|
ImportKeyPair
|
![]() |
UnknownError |
ModifyImageAttribute
|
![]() |
|
ModifyInstanceAttribute
|
![]() |
|
ModifySnapshotAttribute
|
![]() |
|
MonitorInstances
|
![]() |
|
PurchaseReservedInstancesOffering
|
![]() |
|
RebootInstances
|
![]() |
ok |
RegisterImage
|
![]() |
|
ReleaseAddress
|
![]() |
無法測試 |
RequestSpotInstances
|
![]() |
|
ResetImageAttribute
|
![]() |
|
ResetInstanceAttribute
|
![]() |
|
ResetSnapshotAttribute
|
![]() |
|
RevokeSecurityGroupIngress
|
![]() |
|
RunInstances
|
![]() |
部分ok |
StartInstances
|
![]() |
ok |
StopInstances
|
![]() |
等同Terminate |
TerminateInstances
|
![]() |
ok |
UnmonitorInstances
|
![]() |