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ışı

  1. 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.

  2. 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.

  3. 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:

Credential parameters

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 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.