OpenStack API’leri¶
OpenStack servislerine erişim kimlik doğrulaması için, öncelikle OpenStack Kimlik’e kimlik doğrulama jetonu almak için kullanıcı bilgileri ile birlikte bir kimlik doğrulama isteğinde bulunmalısınız.
Kimlik bilgileri genellikle kullanıcı adınızın ve parolanızın birleşimidir ve isteğe bağlı olarak bulutunuzdaki projenin adı veya kimliğidir. Kimlik doğrulama jetonları oluşturabilmek için bulut yöneticinize kullanıcı adınızı, şifrenizi ve projenizi sorun. Alternatif olarak, bir kullanıcı adı ve parola yerine bir jeton sağlayabilirsiniz.
API istekleri gönderirken, jetonunuzu X-Auth-Token
başlığına dahil edin. Eğer birden fazla OpenStack servisine erişiyorsanız, her biri için bir jeton almanız gerekmektedir. Bir jeton zaman aşımına uğramadan önce belli bir süre için geçerlidir. Bir jeton ayrıca başka sebeplerle de geçersiz olabilir. Örneğin, bir kullanıcının rolü değişirse bu kullanıcı için için önceden varolan jetonlar geçerli olmayacaktır.
Kimlik doğrulama ve API istek iş akışı¶
Bulut yöneticinizin size verdiği Kimlik ön ucundan bir kimlik doğrulama jetonu isteyin. Kimlik doğrula de gösterildiği şekilde isteği kimlik bilgileri ile yüklü olarak gönderin. Eğer istek başarılı olursa, sunucu bir kimlik doğrulama jetonu döner.
API istekleri gönderin ve jetonu
X-Auth-Token
başlığına dahil edin. API isteklerini sunucu isteği tamamlayana veya Unauthorized (401) hatası oluşana kadar bu jetonla yapmaya devam edin.Unauthorized (401) hatası oluşursa başka bir jeton isteyin.
Bu bölümdeki örnekler cURL komutları kullanıyor. cURL hakkında daha fazla bilgi için http://curl.haxx.se/ sayfasına bakın. OpenStack API’leri hakkında bilgi için, Mevcut API sürümleri e bakın.
Kimlik doğrula¶
Kimlik doğrulama için kimlik bilgileri yükü bu parametreleri içerir:
Parametre |
Tip |
Açıklama |
---|---|---|
Kullanıcı Alanı (gerekli) |
Karakter dizisi |
Kullanıcının Alanı |
Kullanıcı adı (gerekli) |
Karakter dizisi |
Kullanıcı adı. Eğer bir kullanıcı adı ve parola sağlamıyorsanız, bir jeton sağlamalısınız. |
Parola (gerekli) |
Karakter dizisi |
Kullanıcının parolası |
Proje Alanı (isteğe bağlı) |
Karakter dizisi |
Projenin Alanı. Bu, kapsam nesnesinin gerekli bir parçasıdır. |
Proje Adı (isteğe bağlı) |
Karakter dizisi |
Projenin adı. Hem Proje Kimliği hem de Proje Adı isteğe bağlıdır. |
Proje Kimliği (isteğe bağlı) |
Karakter dizisi |
Proje Kimliği (isteğe bağlı) |
Kimlik’i çalıştıran tipik bir OpenStack kurulumunda, kimlik doğrulamak için projenizin ismini ve kullanıcı adınızı ve parola bilginizi belirtebilirsiniz.
Önce, proje ismini OS_PROJECT_NAME
ortam değişkenine, proje alan ismini OS_PROJECT_DOMAIN_NAME
ortam değişkenine, kullanıcı adınızı OS_USERNAME
ortam değişkenine, parolanızı OS_PASSWORD
ortam değişkenine ve kullanıcı alan ismini OS_USER_DOMAIN_NAME
ortam değişkenine atayın.
Aşağıdaki örnek kurulum rehberini takip ederek kurulan bir Ocata uç noktasını kullanır. Ancak, $OS_AUTH_URL` i URLi değiştirmek gerektiğinde ortam değişkeni olarak kullanabilirsiniz.
Daha sonra, bir jeton istemek için bu cURL komutunu çalıştırın:
$ curl -v -s -X POST $OS_AUTH_URL/auth/tokens?nocatalog -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": ["password"],"password": {"user": {"domain": {"name": "'"$OS_USER_DOMAIN_NAME"'"},"name": "'"$OS_USERNAME"'", "password": "'"$OS_PASSWORD"'"} } }, "scope": { "project": { "domain": { "name": "'"$OS_PROJECT_DOMAIN_NAME"'" }, "name": "'"$OS_PROJECT_NAME"'" } } }}' \
| python -m json.tool
İstek başarılı olursa, Created (201)
yanıt kodunu, jeton ile birlikte X-Subject-Token
yanıt başlığında bir değer olarak döndürür. Başlığın ardından, diğer özelliklerle birliklikte "expires_at":"datetime"
biçiminde jeton son kullanma tarih ve saatini içeren token
tipinde bir yanıt gövdesi gelir.
Bir sonraki örnek başarılı bir cevabı göstermektedir:
* Trying 192.168.56.101...
* Connected to controller (192.168.56.101) port 5000 (#0)
> POST /v3/auth/tokens?nocatalog HTTP/1.1
> Host: controller:5000
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 226
>
} [226 bytes data]
* upload completely sent off: 226 out of 226 bytes
< HTTP/1.1 201 Created
< Date: Fri, 26 May 2017 06:48:58 GMT
< Server: Apache/2.4.18 (Ubuntu)
< X-Subject-Token: gAAAAABZJ8_a7aiq1SnOhbNw8vFb5WZChcvWdzzUAFzhiB99BHrjdSGai--_-JstU3WazsFXmRHNbD07qOQKTp5Sen2R_b9csaDkU49VXqSaJ0jh2nAlwJkys8aazz2oa3xSeUVe3Ndv_HRiW23-iWTr6jquK_AXdhRX7nvM4lmVTrxXFpelnJQ
< Vary: X-Auth-Token
< X-Distribution: Ubuntu
< x-openstack-request-id: req-0e9239ec-104b-40e0-a337-dca91fb24387
< Content-Length: 521
< Content-Type: application/json
<
{ [521 bytes data]
* Connection #0 to host controller left intact
{
"token": {
"audit_ids": [
"HOGlhnMFT52xY7PjbuJZlA"
],
"expires_at": "2017-05-26T07:48:58.000000Z",
"is_domain": false,
"issued_at": "2017-05-26T06:48:58.000000Z",
"methods": [
"password"
],
"project": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "05ef0bf2a79c42b2b8155873b6404061",
"name": "demo"
},
"roles": [
{
"id": "b18239b7026042ef8695c3c4cf10607b",
"name": "user"
}
],
"user": {
"domain": {
"id": "default",
"name": "Default"
},
"id": "12846256e60c42f88d0e1ba9711a57f5",
"name": "demo",
"password_expires_at": null
}
}
}
Not
Yukarıdaki istekte, sorgu karakter dizisi nocatalog
sadece jeton almak isteğiniz ve çıktıyı dolduracak şekinde servis kataloğunu istemediğiniz için kullanıldı. Eğer bir kullanıcı servis kataloğunu almak isterse, bu sorgu karakter dizisi URL’e eklenmiş olmamalıdır.
API istekleri gönder¶
This section shows how to make some basic Compute API calls. For a complete list of Compute API calls, see Compute API.
Jeton kimliğini OS_TOKEN
ortam değişkenine atayın. Örneğin:
export OS_TOKEN=gAAAAABZJ8_a7aiq1SnOhbNw8vFb5WZChcvWdzzUAFzhiB99BHrjdSGai--_-JstU3WazsFXmRHNbD07qOQKTp5Sen2R_b9csaDkU49VXqSaJ0jh2nAlwJkys8aazz2oa3xSeUVe3Ndv_HRiW23-iWTr6jquK_AXdhRX7nvM4lmVTrxXFpelnJQ
The token expires every hour by default, though it can be configured differently - see the expiration option in the Identity Service Configuration Guide.
Proje ismini OS_PROJECT_NAME
ortam değişkenine atayın. Örneğin:
export OS_PROJECT_NAME=demo
Daha sonra, nitelikleri listelemek için Hesaplama APIsini kullanın, aşağıdaki Hesaplama API ön ucunu kendi proje kimliğiniz ile değiştirerek:
$ curl -s -H "X-Auth-Token: $OS_TOKEN" \
$OS_COMPUTE_API/flavors \
| python -m json.tool
{
"flavors": [
{
"id": "1",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/flavors/1",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/flavors/1",
"rel": "bookmark"
}
],
"name": "m1.tiny"
},
{
"id": "2",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/flavors/2",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/flavors/2",
"rel": "bookmark"
}
],
"name": "m1.small"
},
{
"id": "3",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/flavors/3",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/flavors/3",
"rel": "bookmark"
}
],
"name": "m1.medium"
},
{
"id": "4",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/flavors/4",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/flavors/4",
"rel": "bookmark"
}
],
"name": "m1.large"
},
{
"id": "5",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/flavors/5",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/flavors/5",
"rel": "bookmark"
}
],
"name": "m1.xlarge"
}
]
}
Jeton çağrısından $OS_PROJECT_ID yi çıkar ve ardından resimleri listelemek için Hesaplama API’sini kullan:
$ curl -s -H "X-Auth-Token: $OS_TOKEN" \
http://8.21.28.222:8774/v2/$OS_PROJECT_ID/images \
| python -m json.tool
{
"images": [
{
"id": "2dadcc7b-3690-4a1d-97ce-011c55426477",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/images/2dadcc7b-3690-4a1d-97ce-011c55426477",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/images/2dadcc7b-3690-4a1d-97ce-011c55426477",
"rel": "bookmark"
},
{
"href": "http://8.21.28.222:9292/f9828a18c6484624b571e85728780ba8/images/2dadcc7b-3690-4a1d-97ce-011c55426477",
"type": "application/vnd.openstack.image",
"rel": "alternate"
}
],
"name": "Fedora 21 x86_64"
},
{
"id": "cfba3478-8645-4bc8-97e8-707b9f41b14e",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/images/cfba3478-8645-4bc8-97e8-707b9f41b14e",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/images/cfba3478-8645-4bc8-97e8-707b9f41b14e",
"rel": "bookmark"
},
{
"href": "http://8.21.28.222:9292/f9828a18c6484624b571e85728780ba8/images/cfba3478-8645-4bc8-97e8-707b9f41b14e",
"type": "application/vnd.openstack.image",
"rel": "alternate"
}
],
"name": "Ubuntu 14.04 amd64"
},
{
"id": "2e4c08a9-0ecd-4541-8a45-838479a88552",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/images/2e4c08a9-0ecd-4541-8a45-838479a88552",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/images/2e4c08a9-0ecd-4541-8a45-838479a88552",
"rel": "bookmark"
},
{
"href": "http://8.21.28.222:9292/f9828a18c6484624b571e85728780ba8/images/2e4c08a9-0ecd-4541-8a45-838479a88552",
"type": "application/vnd.openstack.image",
"rel": "alternate"
}
],
"name": "CentOS 7 x86_64"
},
{
"id": "c8dd9096-60c1-4e23-a486-82955481df9f",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/images/c8dd9096-60c1-4e23-a486-82955481df9f",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/images/c8dd9096-60c1-4e23-a486-82955481df9f",
"rel": "bookmark"
},
{
"href": "http://8.21.28.222:9292/f9828a18c6484624b571e85728780ba8/images/c8dd9096-60c1-4e23-a486-82955481df9f",
"type": "application/vnd.openstack.image",
"rel": "alternate"
}
],
"name": "CentOS 6.5 x86_64"
},
{
"id": "f97b8d36-935e-4666-9c58-8a0afc6d3796",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f9828a18c6484624b571e85728780ba8/images/f97b8d36-935e-4666-9c58-8a0afc6d3796",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f9828a18c6484624b571e85728780ba8/images/f97b8d36-935e-4666-9c58-8a0afc6d3796",
"rel": "bookmark"
},
{
"href": "http://8.21.28.222:9292/f9828a18c6484624b571e85728780ba8/images/f97b8d36-935e-4666-9c58-8a0afc6d3796",
"type": "application/vnd.openstack.image",
"rel": "alternate"
}
],
"name": "Fedora 20 x86_64"
}
]
}
Jeton çağrısından $OS_PROJECT_ID yi çıkar ve ardından sunucuları listelemek için Hesaplama API’sini kullan:
$ curl -s -H "X-Auth-Token: $OS_TOKEN" \
http://8.21.28.222:8774/v2/$OS_PROJECT_ID/servers \
| python -m json.tool
{
"servers": [
{
"id": "41551256-abd6-402c-835b-e87e559b2249",
"links": [
{
"href": "http://8.21.28.222:8774/v2/f8828a18c6484624b571e85728780ba8/servers/41551256-abd6-402c-835b-e87e559b2249",
"rel": "self"
},
{
"href": "http://8.21.28.222:8774/f8828a18c6484624b571e85728780ba8/servers/41551256-abd6-402c-835b-e87e559b2249",
"rel": "bookmark"
}
],
"name": "test-server"
}
]
}
OpenStack komut satırı istemcileri¶
Betik işleri ve basit istekleri için openstack-client
istemcisi gibi komut satırı istemcisini kullanabilirsiniz. Bu istemci bir komut satırı arayüzünden Kimlik, Hesaplama, Blok Depolama ve Nesne Depolama API’lerini kullanmanızı sağlar. Ayrıca her bir OpenStack projesi Python API bağlamaları ve bir komut satırı arayüzü (CLI) içeren ilgili bir istemci projesi bulundurur.
Komut satırı istemcileri hakkında daha fazla bilgi için ÒpenStack Komut Satırı Arayüzü Referansı <https://docs.openstack.org/cli-reference/>`__ nı görün.
İstemcileri kur¶
Use pip
to install the OpenStack clients on a Mac OS X or Linux system. It
is easy and ensures that you get the latest version of the client from the
Python Package Index. Also, pip
lets you
update or remove a package.
Her proje için istemciyi ayrı olarak kurmalısınız ancak python-openstackclient
birden fazla projeyi kapsar.
Bir istemci paketi kur veya güncelle:
$ sudo pip install [--upgrade] python-PROJECTclient
PROJE proje ismidir.
Örneğin, openstack
istemcisini kur:
$ sudo pip install python-openstackclient
openstack
istemcisini güncellemek için bu komutu çalıştırın:
$ sudo pip install --upgrade python-openstackclient
openstack
istemcisini kaldırmak için bu komutu çalıştırın:
$ sudo pip uninstall python-openstackclient
İstemi komutlarını çalıştırmadan önce ortam değişkenlerini ayarlamak için openrc
dosyasını indirmeli ve kabuk uygulamanıza kaynak olarak göstermelisiniz.
OpenStack istemcileri hakkında eksiksiz bilgi için, openrc
dosyasının nasıl kaynak olarak gösterileceği dahil, OpenStack Son Kullanıcı Rehberi, OpenStack Yönetici Rehberi ve OpenStack Komut Satırı Arayüz Referansı na bakın.
Sunucu Başlat¶
Örnekler başlatmak için, örneğiniz bir isim, bir imaj ve bir nitelik seçmelisiniz.
Tüm imajları listelemek için openstack
istemcisi üzerinden Hesaplama API’sini çağırın:
$ openstack image list
+--------------------------------------+------------------+
| ID | Name |
+--------------------------------------+------------------+
| a5604931-af06-4512-8046-d43aabf272d3 | fedora-20.x86_64 |
+--------------------------------------+------------------+
Nitelikleri listelemek için bu komutu çalıştırın:
$ openstack flavor list
+----+-----------+-----------+------+-----------+------+-------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-----------+
| 1 | m1.tiny | 512 | 0 | 0 | | 1 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | True |
| 42 | m1.nano | 64 | 0 | 0 | | 1 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | True |
| 84 | m1.micro | 128 | 0 | 0 | | 1 | True |
+----+-----------+-----------+------+-----------+------+-------+-----------+
Bir örnek başlatmak için istediğiniz imaj ve niteliğin kimliğini not edin.
my_instance
örneğini başlatmak için, openstack server create
komutunu imaj ve nitelik kimliği ve sunucu ismi ile çalıştırın:
$ openstack server create --image a5604931-af06-4512-8046-d43aabf272d3 --flavor 1 my_instance
+--------------------------------------+---------------------------------------------------------+
| Field | Value |
+--------------------------------------+---------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | None |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | |
| adminPass | 3vgzpLzChoac |
| config_drive | |
| created | 2015-08-27T03:02:27Z |
| flavor | m1.tiny (1) |
| hostId | |
| id | 1553694c-d711-4954-9b20-84b8cb4598c6 |
| image | fedora-20.x86_64 (a5604931-af06-4512-8046-d43aabf272d3) |
| key_name | None |
| name | my_instance |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| project_id | 9f0e4aa4fd3d4b0ea3184c0fe7a32210 |
| properties | |
| security_groups | [{u'name': u'default'}] |
| status | BUILD |
| updated | 2015-08-27T03:02:28Z |
| user_id | b3ce0cfc170641e98ff5e42b1be9c85a |
+--------------------------------------+---------------------------------------------------------+
Not
For information about the default ports that the OpenStack components use, see Firewalls and default ports in the OpenStack Installation Guide.