自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenStack命令行工具與API

運(yùn)維 系統(tǒng)運(yùn)維 OpenStack
從這一刻起本指南中,我們假設(shè)你已經(jīng)有一個(gè)OpenStack環(huán)境運(yùn)行起來了。本文將幫助建立你的工作環(huán)境并使用它來帶領(lǐng)你漫步云端。

從這一刻起本指南中,我們假設(shè)你已經(jīng)有一個(gè)OpenStack環(huán)境運(yùn)行起來了。本章節(jié)將幫助建立你的工作環(huán)境并使用它來帶領(lǐng)你漫步云端。

命令行工具

我們推薦Openstack命令行工具和Openstack的Dashboard兩者結(jié)合使用。一些用戶由于使用過其他云技術(shù)背景的,可能會(huì)使用EC2兼容的API,相對(duì)于我們需要使用到的Openstack原生的API,這些EC2兼容的API使用了不同命名習(xí)慣。

我們強(qiáng)烈建議你從Python Package Index(PyPI)(https://pypi.python.org/)安裝命令行客戶端,而不是從Ubuntu或者Fedora的軟件包??蛻舳碎_發(fā)的很快,所以有可能在你安裝的時(shí)候,操作系統(tǒng)自帶發(fā)行的軟件包已經(jīng)過時(shí)。”pip”可以從大多數(shù)的linux發(fā)行版里通過”python-pip”這個(gè)軟件包得到,這個(gè)工具是用來管理PyPi的安裝包。每個(gè)Openstack項(xiàng)目有自己的客戶端,所以根據(jù)你使用的服務(wù)選擇某些或者所有以下的軟件包:

  • python-novaclient(nova CLI)
  • python-glanceclient(glance CLI)
  • python-keystoneclient(keystone CLI)
  • python-cinderclient(cinder CLI)
  • python-swiftclient(swift CLI)
  • python-quantumclient(quantum CLI)

安裝工具

使用root從PyPi安裝(升級(jí)):

  1. # pip install [–upgrade] <package-name> 

卸載軟件

  1. # pip uninstall <package-name> 

如果你需要更加新的客戶端版本,可以用pip加-e參數(shù)直接從git庫安裝。你必須為需要安裝的Python egg指定名稱。例如:

  1. # pip install -e git+https://github.com/openstack/python-novaclient.git#egg=python-novaclient 

如果你需要在你的云上支持EC2 API的話,你還需要安裝”euca2ools”軟件包或者一些其他的EC2 API的工具,這樣你可以和你的用戶有相同的視圖。如何使用EC2 API工具超出了這本手冊(cè)的范圍,但是我們會(huì)討論如何得到使用EC2的認(rèn)證。

管理命令行工具

以下是幾種 *-manage命令行工具:

  1. nova-manage glance-manage keystone-manage cinder-manage 

與上文提到的客戶端工具不同,*-manage工具必須在由root在控制節(jié)點(diǎn)上運(yùn)行,因?yàn)檫@些命令需要有訪問配置文件的權(quán)限,例如/etc/nova.conf,并且需要直接查詢數(shù)據(jù)庫而不是通過Openstack的API接口。

-manage工具存在是一個(gè)遺留問題。openstack項(xiàng)目最終的目標(biāo)是把這些遺留的-manage工具移植到正規(guī)的客戶端工具中去。到目前為止,你仍舊需要通過ssh登錄到控制節(jié)點(diǎn)上運(yùn)行*-manage工具進(jìn)行維護(hù)管理操作。

獲取證書

如果你要使用命令行工具對(duì)你的Openstack云平臺(tái)進(jìn)行操作,你必須有合適的證書。目前最方便的得到認(rèn)證證書的方式是使用horizon dashboard。在頂部的導(dǎo)航欄,點(diǎn)擊Setting鏈接,進(jìn)入用戶配置頁面,在頁面里你可以為dashboard視圖設(shè)置語言和時(shí)區(qū)。更重要的是,這個(gè)操作改變了左列的導(dǎo)航欄,里面包含了Openstack API和EC2 Credentials鏈接,這兩個(gè)鏈接將會(huì)得到可以在你的shell環(huán)境中source的文件,文件包含了命令行工具所需要的servide endpoints地址和你的認(rèn)證信息。

點(diǎn)擊Openstack API鏈接。頂部的部分列出了你的Service Endpoints的URL地址,底部是Download Openstack RC File。為了以管理員的身份查看云平臺(tái),你可以從下拉菜單中選擇admin。選擇你需要的project項(xiàng)目,然后點(diǎn)擊Download RC。于是會(huì)得到一個(gè)名為openrc.sh的文件,內(nèi)容類似如下:

#!/bin/bash

# With the addition of Keystone, to use an openstack cloud you should # authenticate against keystone, which returns a Token and Service # Catalog. The catalog contains the endpoint for all services the # user/tenant has access to - including nova, glance, keystone, swift. # # NOTE: Using the 2.0 auth api does not mean that compute api is 2.0. # We use the 1.1 compute api

export OS_AUTH_URL=http://203.0.113.10:5000/v2.0

# With the addition of Keystone we have standardized on the term tenant # as the entity that owns the resources.

export OS_TENANT_ID=98333aba48e756fa8f629c83a818ad57 export OS_TENANT_NAME=”test-project”

# In addition to the owning entity (tenant), openstack stores the entity # performing the action as the user.

export OS_USERNAME=test-user

# With Keystone you pass the keystone password.

echo “Please enter your OpenStack Password: ” read -s OS_PASSWORD_INPUT export OS_PASSWORD=$OS_PASSWORD_INPUT

注意這個(gè)操作不會(huì)以文本保存你的密碼,這樣做是好事情。但是當(dāng)你想用這個(gè)文件source或者運(yùn)行腳本,它會(huì)提示你輸入你的密碼,并且保存在環(huán)境變量OS_PASSWORD中。記住這個(gè)過程需要手動(dòng)交互。如果你想要一個(gè)不需要交互的操作,那么把值直接保存在腳本中。但是這樣做你需要格外小心這個(gè)腳本文件的安全和權(quán)限。

EC2兼容的認(rèn)證可以從左邊導(dǎo)航欄中的”EC2 Credentials”鏈接下載,選擇你需要的項(xiàng)目,點(diǎn)擊”Download EC2 Credentials”。會(huì)得到一個(gè)提供x509證書的zip文件和一個(gè)shell腳本。和前面的openrc文件不同,這些證書包含了所有可以訪問你的云平臺(tái)的認(rèn)證信息,所以在安全的地方創(chuàng)建一個(gè)新目錄,在新目錄中解開zip文件。你會(huì)得到cacert.pem, cert.pem, ec2rc.sh and pk.pem。ec2rc.sh文件內(nèi)容類似如下:

#!/bin/bash

NOVARC=$(readlink -f “${BASH_SOURCE:-${0}}” 2>/dev/null) ||NOVARC=$(python -c ‘import os,sys; print os.path.abspath(os.path.realpath(sys.argv[1]))’ “${BASH_SOURCE:-${0}}”) NOVA_KEY_DIR=${NOVARC%/*} export EC2_ACCESS_KEY=df7f93ec47e84ef8a347bbb3d598449a export EC2_SECRET_KEY=ead2fff9f8a344e489956deacd47e818 export EC2_URL=http://203.0.113.10:8773/services/Cloud export EC2_USER_ID=42 # nova does not use user id, but bundling requires it export EC2_PRIVATE_KEY=${NOVA_KEY_DIR}/pk.pem export EC2_CERT=${NOVA_KEY_DIR}/cert.pem export NOVA_CERT=${NOVA_KEY_DIR}/cacert.pem export EUCALYPTUS_CERT=${NOVA_CERT} # euca-bundle-image seems to require this set

alias ec2-bundle-image=”ec2-bundle-image –cert $EC2_CERT –privatekey $EC2_PRIVATE_KEY –user 42 –ec2cert $NOVA_CERT” alias ec2-upload-bundle=”ec2-upload-bundle -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY –url $S3_URL –ec2cert $NOVA_CERT”

把EC2 credentials放到你的環(huán)境里,source這個(gè)ec2rc.sh文件。

命令行的技巧和陷阱

命令行工具可以通過–debug標(biāo)記來顯示調(diào)用Openstack API的過程,例如

  1. # nova –debug list 

這個(gè)例子會(huì)顯示從客戶端來的HTTP請(qǐng)求和從endpoints的回應(yīng),這些對(duì)于對(duì)Openstack API定制化客戶端有幫助

Keyring Support(https://wiki.openstack.org/wiki/KeyringSupport)可能就是一個(gè)困惑的東西,自這篇文章寫的時(shí)候,有一個(gè)bug(https://bugs.launchpad.net/python-novaclient/+bug/1020238)。這個(gè)bug狀態(tài)是open,然后解決,但是仍然有問題,又被重新open。這個(gè)bug的問題是在某些條件,命令行工具嘗試使用一個(gè)python的鑰匙作為證書的緩存,在這些情況的一個(gè)子集中,會(huì)要求在每次使用時(shí)會(huì)提示一個(gè)鑰匙密碼。如果你發(fā)現(xiàn)你遇到了這個(gè)不幸的情況,添加–no-cache標(biāo)識(shí)或者設(shè)置環(huán)境變量OS_NO_CACHE=1來避免證書緩存。注意:這會(huì)造成命令行工具在每次交互的時(shí)候都需要認(rèn)證。


cURL

優(yōu)先使用Openstack API而不是命令行工具,他是一個(gè)跑在HTTP協(xié)議上的RESTful API。多數(shù)情況你會(huì)希望直接使用API而不是命令行工具,因?yàn)槟骋粋€(gè)命令行可能會(huì)存在bug。最好的使用方式是,結(jié)合cURL(http://curl.haxx.se)和其他工具來語法分析響應(yīng)的JSON,例如jq(http://stedolan.github.com/jq/)

第一件事情你必須使用你的證書來認(rèn)證來獲取authentication token。證書包含了用戶名、密碼和tenant(項(xiàng)目)。你可以從上面我們談到的openrc.sh文件中得到他們。token允許你不需要再次認(rèn)證就能和其他的service endpoints交互。Tokens通常存在24小時(shí)比較好,當(dāng)token過期后,你將會(huì)收到一個(gè)401(未被授權(quán)的)響應(yīng),然后你可以再請(qǐng)求一個(gè)token。

查看你的Openstack服務(wù)條目:

  1. $ curl -s -X POST http://203.0.113.10:35357/v2.0/tokens 
  2. -d ‘{“auth”: {“passwordCredentials”: {“username”:”test-user”, “password”:”test-password”}, “tenantName”:”test-project”}}’ -H “Content-type: application/json” | jq . 

通過閱讀JSON的響應(yīng)切身體會(huì)一下目錄是如何被安排的。

為了使后續(xù)的請(qǐng)求更方便,我們把token儲(chǔ)存在環(huán)境變量中。

  1. TOKEN=`curl -s -X POST http://203.0.113.10:35357/v2.0/tokens 
  2. -d ‘{“auth”: {“passwordCredentials”: {“username”:”test-user”, “password”:”test-password”}, “tenantName”:”test-project”}}’ -H “Content-type: application/json” | jq -r .access.token.id` 

現(xiàn)在你可以在命令行里面使用變量$TOKEN來得到你的token值 從服務(wù)目錄中選擇一個(gè)服務(wù)endpoint,譬如計(jì)算的服務(wù),然后嘗試著發(fā)出一個(gè)請(qǐng)求,例如列出實(shí)例。

  1. $ curl -s -H “X-Auth-Token: $TOKEN” http://203.0.113.10:8774/v2/98333aba48e756fa8f629c83a818ad57/servers | jq . 

要查詢API請(qǐng)求是如何組織的,可以閱讀Openstack API Reference(http://api.openstack.org/api-ref.html)??梢允褂胘q來細(xì)細(xì)研究返回的請(qǐng)求響應(yīng),閱讀jq Manual(http://stedolan.github.com/jq/manual/)

在cURL命令中使用-s選項(xiàng)可以避免顯示過程信息。如果你在使用cURL時(shí)遇到困難,把這個(gè)標(biāo)記去掉。同樣的,加上-v選項(xiàng)會(huì)輸出詳細(xì)信息,幫助排錯(cuò)。在cURL中還有更多有用的功能,參考man幫助手冊(cè)查詢所有的選項(xiàng)。


服務(wù)器和服務(wù)

作為一個(gè)管理員,通過使用Openstack工具來讓你查看你的Openstack云平臺(tái)。這部分將會(huì)告訴你如何總覽你的云,組成,大小和狀態(tài)。

首先,你可以查詢哪些服務(wù)器屬于你的Openstack云平臺(tái),通過運(yùn)行

  1. $ nova-manage service list | sort 

輸出類似如下:

Binary Host Zone Status State Updated_At nova-cert cloud.example.com nova enabled :-) 2013-02-25 19:32:38 nova-compute c01.example.com nova enabled :-) 2013-02-25 19:32:35 nova-compute c02.example.com nova enabled :-) 2013-02-25 19:32:32 nova-compute c03.example.com nova enabled :-) 2013-02-25 19:32:36 nova-compute c04.example.com nova enabled :-) 2013-02-25 19:32:32 nova-compute c05.example.com nova enabled :-) 2013-02-25 19:32:41 nova-consoleauth cloud.example.com nova enabled :-) 2013-02-25 19:32:36 nova-network cloud.example.com nova enabled :-) 2013-02-25 19:32:32 nova-scheduler cloud.example.com nova enabled :-) 2013-02-25 19:32:33

輸出顯示有5個(gè)計(jì)算節(jié)點(diǎn)和1個(gè)云控制結(jié)點(diǎn)。你可以看到一個(gè)笑臉:-),表明這個(gè)服務(wù)是起的并運(yùn)行著。如果一個(gè)服務(wù)不可用,:-)會(huì)變成XXX。這表明你應(yīng)該排錯(cuò)一下為什么服務(wù)down了。

如果你用了nova-volume(這個(gè)服務(wù)在Folsom版本后不贊成使用),你會(huì)看到一行nova-volume的服務(wù)條目。

如果你是用了Cinder,運(yùn)行如下命令將會(huì)看到。

  1. $cinder-manage host list | sort 
  2. host zone c01.example.com nova c02.example.com nova c03.example.com nova c04.example.com nova c05.example.com nova cloud.example.com nova 

通過這兩個(gè)表,你現(xiàn)在已經(jīng)對(duì)組成你的云平臺(tái)的服務(wù)器和服務(wù)有了總的概況。

你也可以使用認(rèn)證服務(wù)(Keystone)查看什么服務(wù)在你的云平臺(tái)可用,什么服務(wù)被配置了endpoints。

以下這個(gè)命令需要你在shell中設(shè)置了合適的管理權(quán)限的變量。

  1. $ keystone service-list 
id name type description
...  cinder glance nova_ec2 keystone nova volume image ec2 identity compute Cinder Service OpenStack Image Service EC2 Service OpenStack Identity Service OpenStack Compute Service

輸出顯示有5個(gè)配置的服務(wù)

查看每個(gè)服務(wù)的endpoint,運(yùn)行

  1. $ keystone endpoint-list 

+—–+—————————————–+-/+—————————————–+ | id | publicurl | | adminurl | +—–+—————————————–+-/+—————————————–+ | ... | http://example.com:8774/v2/%(tenant_id)s| | http://example.com:8774/v2/%(tenant_id)s| | ... | http://example.com:8773/services/Cloud | /| http://example.com:8773/services/Admin | | ... | http://example.com:9292/v1 | | http://example.com:9292/v1 | | ... | http://example.com:5000/v2.0 | /| http://example.com:35357/v2.0 | | ... | http://example.com:8776/v1/%(tenant_id)s| | http://example.com:8776/v1/%(tenant_id)s| +—–+—————————————–+-/+—————————————–+

服務(wù)和endpoint之間應(yīng)該是一對(duì)一的映射,注意一些服務(wù)的公共URL和管理URL是不同的URLs和端口。

網(wǎng)絡(luò)

接下來,看看你的云環(huán)境中的Fixed IP網(wǎng)絡(luò)

  1. $ nova-manage network list 
  2. id IPv4 IPv6 start address DNS1 DNS2 VlanID project uuid 1 10.1.0.0/24 None 10.1.0.3 None None 300 2725bbd beacb3f2 2 10.1.1.0/24 None 10.1.1.3 None None 301 none d0b1a796 

輸出顯示兩個(gè)被配置的網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)包含255個(gè)IP。第一個(gè)網(wǎng)絡(luò)被分配給一個(gè)專門的項(xiàng)目,第二個(gè)網(wǎng)絡(luò)沒有分配。你可以手動(dòng)分配,或者他也會(huì)自動(dòng)被分配當(dāng)一個(gè)項(xiàng)目啟動(dòng)第一個(gè)實(shí)例的時(shí)候

查看云平臺(tái)中的floating ip,運(yùn)行:

  1. $ nova-manage floating list 
  2. 2725bbd458e2459a8c1bd36be859f43f 1.2.3.4 None nova vlan20 None 1.2.3.5 48a415e7-6f07-4d33-ad00-814e60b010ff nova vlan20 

這里,兩個(gè)floating IP可用,第一個(gè)已經(jīng)被分配,第二個(gè)空間

用戶和項(xiàng)目

列出云平臺(tái)下的項(xiàng)目列表,運(yùn)行

  1. $ keystone tenant-list 
id name enabled
... jtopjian alvaro everett admin services jonathan lorin anne rhulsker tom adam True True True True True True True True True True True

用戶列表,運(yùn)行

  1. $ keystone user-list 
id name enabled email
... everett jonathan nova rhulsker lorin alvaro anne admin cinder glance jtopjian adam tom True True True True True True True True True True True True True everett.towne@backspace.com jon@sfcu.edu nova@localhost ryan.hulkster@cyberalbert.ca lorinhoch@nsservices.com Alvaro.Perry@cyberalbert.ca anne.green@backspace.com root@localhost cinder@localhost glance@localhost joe.topjian@cyberalbert.com adam@ossmanuals.net fafield@univm.edu.au

注意,有時(shí)候用戶和組是一一對(duì)應(yīng)的。通常在標(biāo)準(zhǔn)的系統(tǒng)用戶是這樣的,例如cinder, glance, nova, swift或者一個(gè)組里面就一個(gè)用戶。

在運(yùn)行的實(shí)例

顯示運(yùn)行中的實(shí)例列表:

  1. $ nova list –all-tenants 
ID Name Status Networks
... Windows cloud controller compute node 1 devbox devstack initial lorin-head ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE novanetwork_1=10.1.1.3, 199.116.232.39 novanetwork_0=10.1.0.6; jtopjian=10.1.2.3 novanetwork_0=10.1.0.4; jtopjian=10.1.2.4 novanetwork_0=10.1.0.3 novanetwork_0=10.1.0.5 nova_network=10.1.7.4, 10.1.8.4 nova_network=10.1.7.3, 10.1.8.3
 

不幸的是這個(gè)命令沒法告訴你更多的關(guān)于實(shí)例的細(xì)節(jié),例如實(shí)例跑在哪個(gè)計(jì)算節(jié)點(diǎn),實(shí)例的配置等等。你可以使用下面的命令來單獨(dú)查看每個(gè)實(shí)例的細(xì)節(jié):

  1. $ nova show <uuid>> 

舉例:

  1. # nova show 81db556b-8aa5-427d-a95c-2a9a6972f630 
Property Value
OS-DCF:diskConfig OS-EXT-SRV-ATTR:host OS-EXT-SRV-ATTR:hypervisor_hostname OS-EXT-SRV-ATTR:instance_name OS-EXT-STS:power_state OS-EXT-STS:task_state OS-EXT-STS:vm_state accessIPv4 accessIPv6 config_drive created flavor hostId id image key_name metadata name novanetwork_0 network progress security_groups status tenant_id updated user_id

MANUAL c02.example.com c02.example.com instance-00000029 1 None active

2013-02-13T20:08:36Z m1.small (6) ... ... Ubuntu 12.04 cloudimg amd64 (...) jtopjian-sandbox {} devstack 10.1.0.5 0 [{u’name’: u’default’}] ACTIVE ... 2013-02-13T20:08:59Z ...

 

責(zé)任編輯:奔跑的冰淇淋 來源: trystack.cn
相關(guān)推薦

2014-04-16 13:22:29

虛擬機(jī)OpenStack命令行

2014-04-16 10:44:56

OpenStack命令行工具虛擬機(jī)

2020-12-10 16:16:08

工具代碼開發(fā)

2020-12-11 06:44:16

命令行工具開發(fā)

2023-06-09 07:45:29

Kuberneteskubectl

2011-01-18 19:11:26

Postfix命令行

2010-11-24 17:12:17

MySQL命令行

2013-05-21 14:58:08

系統(tǒng)監(jiān)視glances開源

2013-11-15 09:43:15

JDK工具

2018-05-04 09:15:35

PythonPlumbum命令行

2019-08-27 10:32:01

Linux操作系統(tǒng)Windows

2019-08-27 08:00:10

OpenStack命令虛擬機(jī)

2020-11-22 06:20:53

命令行Linux

2021-08-25 10:55:43

Linux命令工具

2014-02-12 13:30:16

Linux命令行終端工具

2010-02-04 15:17:48

Linux wget

2010-06-07 14:45:37

Linux下載工具

2018-07-05 08:30:54

Python命令行工具shell

2021-01-27 11:53:08

工具Go 開發(fā)

2018-04-03 13:50:27

Linux容器命令行工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)