OpenStack API-oj

Por aŭtentigi aliron al OpenStack servojn, vi unue devas eldoni aŭtentigan peton kun uzodatumo de legitimaĵojn al Openstack Identeco por recevi aŭtentigan ĵetonon.

Legitimaĵojn estas normale kombinado de via uzanto nomo kaj pasvorto, kaj opcie, la nomo aŭ ID-o de la projekto de via nubo. Demandu vian nubo administranton por via uzanto nomo, pasvorto, kaj projekto por tio ke vi povas generi aŭtentigajn ĵetonojn. Alternative, vi povas enigi ĵetonon anstataŭ uzanto nomo kaj pasvorto.

Se vi sendas API petojn, vi inkluzivas ĵetonon en la X-Auth-Token mesaĝokapo . Se vi aliras diversajn OpenStack servojn, vi devas ricevi ĵetonon po ĉiu servo. Ĵetonon validas por limigita tempo antaŭ ol ĝi eksvalidiĝos. Ĵetonon ankaŭ malvalidiĝas pro aliaj kialoj. Ekzemple, se la roloj por uzanto ŝanĝigas, ekzistantaj ĵetonoj por tiu uzanto ne pli validas.

Aŭtentigo kaj API peto laborfluo

  1. Petu aŭtentigan ĵetonon de la Identeco finpunkto kiun via nubo administranto donis al vi. Sendu uzodatumon de la legitimaĵojn en la peto kiel videbla en Aŭtentigu. Se la peto havas sukceson, la servilo redonas aŭtentigan ĵetonon.

  2. Sendu API petojn kaj inkluzivu la ĵetonon en la X-Auth-Token mesaĝokapo. Daŭrigi sendi API petojn kun la ĵetono ĝis la servo kompletiĝas la peton aŭ la Ne-rajtigita (401) eraro okazas.

  3. Se la Ne-rajtigita (401) eraro okazas, petu alian ĵetonon.

La ekzemploj en tiu sekcio uzas cURL komandojn. Por informo pri cURL, vidu http://curl.haxx.se/. Por informo pri OpenStack API-oj, vidu Aktualaj API versioj.

Aŭtentigu

La uzodatumo de la legitimaĵoj por aŭtentigi enhavas tiujn parametrojn:

Credential parameters

Parametro

Tipo

Priskribo

Uzanto Domajno (nepras)

ĉeno

La Domajno de la uzanto.

uzantonomo (nepras)

ĉeno

La uzanto nomo. Se vi ne provizas uzanto nomon kaj pasvorton, vi devas provizi ĵetonon.

pasvorto (nepras)

ĉeno

La pasvorto por la uzanto.

Projekto Domajno (nedeviga)

ĉeno

La domajno de la projekto. Tiu estas nepra parto de la amplekso-objekto.

Projekto Nomo (nedeviga)

ĉeno

La projekto nomo. Ambaŭ la Projekto ID kaj Projekto Nomo estas nedevigaj.

Projekto ID (nedeviga)

ĉeno

La projekto ID. Ambaŭ la projekto ID kaj Projekto Nomo estas nedevigaj. Sed unu de ili nepras kun la Projekto Domajno. Ili estas envolvitaj sub amplekso objekto. Se via ne scias la projekto nomon aŭ ID, sendu peton sen amplekso objekto.

En tipa OpenStack disponigo kiu havas Identecon, vi povas difini vian projektnomon, uzanto nomon kaj pasvortajn legitimaĵojn por aŭtentigi.

Unue, eksportu vian projekto nomon al la OS_PROJECT_NAME medio variablo, vian projekto domajnon al la OS_PROJECT_DOMAIN_NAME medio variablo, vian uzanto nomon al la OS_USERNAME medio variablo, vian pasvorton al la OS_PASSWORD medio variablo kaj vian uzanto domajno nomon al OS_USER_DOMAIN_NAME medio variablo.

La ekzemplo suben uzas finpunkton de Ocata instalo sekvanta la instalan gvidilon. Sed, via ankaŭ povas uzi $OS_AUTH_URL kiel medio variablo bezonita por ŝangi la URL-on.

Tiam, lanĉu ĉi tiun cURL komandon por peti ĵetonon:

$ 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

Se la peto sukcesas, ĝi liveras la Created (201) respondo kodon kune kun la ĵetono kiel valoro en la X-Subject-Token respondo mesaĝokapo. La mesaĝokapo estas sekvita de respondo korpo kiu havas objekton de la tipo token kiu havas la ĵeto-malvalidiĝan daton kaj tempon en la formo "expires_at":"datetime" kune kun aliaj atributoj.

La sekvanta ekzemplo vidigas sukcesan respondon:

*   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
        }
    }
}

Note

En la supra peto, la demandoĉeno nocatalog estas uzita ĉar vi nur volas ricevi ĵetonon kaj ne volas la servo katalogon (se disponebla por la uzanto) senordigi la eligon. Se uzanto volas ricevi servo katalogon, ne bezonas aldoni tiun demandoĉenon al la URL.

Sendu API petojn

This section shows how to make some basic Compute API calls. For a complete list of Compute API calls, see Compute API.

Eksportu la ĵetono ID-on al la OS_TOKEN medio variablo. Ekzemple:

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.

Eksportu la projekto nomon al la OS_PROJECT_NAME medio variablo. Ekzemple:

export OS_PROJECT_NAME=demo

Tiam, uzu la Komputila API por listigi variaĵojn, anstataŭigi la Komputila API finpunkto kun alia enhavante vian projekto ID-on suben:

$ 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"
        }
    ]
}

Eksportu la $OS_PROJECT_ID de la ĵeton-voko, kaj tiam uzu la Komputila API por listigi bildojn:

$ 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"
        }
    ]
}

Eksportu la $OS_PROJECT_ID de la ĵeton-voko, kaj tiam uzu la Komputila API por listigi servilojn:

$ 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 komand-liniaj klientoj

Por skriptado kaj facilaj petoj, vi povas uzi la komando-linio kliento kiel la openstack-client kliento. Tiu kliento vin ebligas uzi Identeco, Komputo, Bloko Memorilo, kaj Objekto Memorilo API-ojn per komand-linia interfaco. Ankaŭ, ĉiu OpenStack projekto havas rilatan kliento projekton kiu inkludas Python API bindaĵojn kaj komand-linian interfacon (CLI).

Por informoj pri la komand-linia kliento, vidu OpenStack Command-Line Interface Reference.

Instalu la klientojn

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.

Vi devas instali la kliento por ĉiu projekto aparta, sed la python-openstackclient kovras pluropajn projektojn.

Instalu aŭ ĝisdatigu kliento pakon:

$ sudo pip install [--upgrade] python-PROJECTclient

Kie PROJECT estas la projekto nomo.

Ekzemple, instalu la openstack klienton:

$ sudo pip install python-openstackclient

Por ĝisdatigi la openstack klienton, elsendu tion komandon

$ sudo pip install --upgrade python-openstackclient

Por forigi la openstack klienton, elsendu tion komandon

$ sudo pip uninstall python-openstackclient

Antaŭ ol vi povas elsendi klientajn komandojn, vi devas elŝuti kaj fonti la `` openrc``-dosieron por agordi mediajn variablojn.

Por kompleta informo pri la OpenStack-klientoj, inkluzive kiel fonti la openrc dosiero, vidu OpenStack End User Guide, OpenStack Administrator Guide, kaj OpenStack Command-Line Interface Reference.

Lanĉu aperon

Por lanĉi aperojn, vi devas elekti nomon, bildon, kaj variaĵon de via apero.

Por listigi haveblajn bildojn, voku la Komputilan API tra la `` openstack`` kliento:

$ openstack image list
+--------------------------------------+------------------+
| ID                                   | Name             |
+--------------------------------------+------------------+
| a5604931-af06-4512-8046-d43aabf272d3 | fedora-20.x86_64 |
+--------------------------------------+------------------+

Por listigi variaĵojn, kuru ĉi tiun komandon:

$ 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      |
+----+-----------+-----------+------+-----------+------+-------+-----------+

Por lanĉi aperon, notu la ID-ojn de via dezirata bildo kaj variaĵo.

Por lanĉi la my_instance aperon, kuru la``openstack server create`` komando kun la bildo kaj variaĵo IDs kaj la servilo nomo:

$ 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                        |
+--------------------------------------+---------------------------------------------------------+

Note

For information about the default ports that the OpenStack components use, see Firewalls and default ports in the OpenStack Installation Guide.