cURLでOpenStackを操作する。

DevStack環境を構築した後、cURLで、OpenStackを操作してみた。これにより、OpenStackでの基本的な認証フローがわかるようになる。

  • keystoneに接続してtokenを取得する。下が出力例

curl -X POST http://aaa.bbb.ccc.ddd:5000/v2.0/tokens -H "Content-Type: application/json" -d '{"auth": {"tenantName": "'"$OS_TENANT_NAME"'", "passwordCredentials": {"username": "'"$OS_USERNAME"'", "password": "'"$OS_PASSWORD"'"}}}' | python -m json.tool

{
    "access": {
        "metadata": {
            "is_admin": 0,
            "roles": [
                "d2aa6ac03dc44b4da92da3a25ee21ada",
                "a1fcc636dc7d413594437d56bd8e4b64"
            ]
        },
        "serviceCatalog": [
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:8774/v2.1",
                        "id": "7cc7f5caf1464bbd894a74dd147cb6bd",
                        "internalURL": "http://aaa.bbb.ccc.ddd:8774/v2.1",
                        "publicURL": "http://aaa.bbb.ccc.ddd:8774/v2.1",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "nova",
                "type": "compute"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:9696/",
                        "id": "06b46999a2214a60914857a695ec4a3d",
                        "internalURL": "http://aaa.bbb.ccc.ddd:9696/",
                        "publicURL": "http://aaa.bbb.ccc.ddd:9696/",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "neutron",
                "type": "network"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:8776/v2/5325bbb937ef4a09b32c7ceff026dd73",
                        "id": "74bdd8f0771b456d96fd263db3764502",
                        "internalURL": "http://aaa.bbb.ccc.ddd:8776/v2/5325bbb937ef4a09b32c7ceff026dd73",
                        "publicURL": "http://aaa.bbb.ccc.ddd:8776/v2/5325bbb937ef4a09b32c7ceff026dd73",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "cinderv2",
                "type": "volumev2"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:8776/v3/5325bbb937ef4a09b32c7ceff026dd73",
                        "id": "2232d773967e445f8377ed57ead23380",
                        "internalURL": "http://aaa.bbb.ccc.ddd:8776/v3/5325bbb937ef4a09b32c7ceff026dd73",
                        "publicURL": "http://aaa.bbb.ccc.ddd:8776/v3/5325bbb937ef4a09b32c7ceff026dd73",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "cinderv3",
                "type": "volumev3"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:9292",
                        "id": "6557190c32444bcc9aa76eb71a07d126",
                        "internalURL": "http://aaa.bbb.ccc.ddd:9292",
                        "publicURL": "http://aaa.bbb.ccc.ddd:9292",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "glance",
                "type": "image"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:8774/v2/5325bbb937ef4a09b32c7ceff026dd73",
                        "id": "5f4e3d9941334da5abb377af6ac35f20",
                        "internalURL": "http://aaa.bbb.ccc.ddd:8774/v2/5325bbb937ef4a09b32c7ceff026dd73",
                        "publicURL": "http://aaa.bbb.ccc.ddd:8774/v2/5325bbb937ef4a09b32c7ceff026dd73",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "nova_legacy",
                "type": "compute_legacy"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:8776/v1/5325bbb937ef4a09b32c7ceff026dd73",
                        "id": "8265590f8397471382d02521c77a4a35",
                        "internalURL": "http://aaa.bbb.ccc.ddd:8776/v1/5325bbb937ef4a09b32c7ceff026dd73",
                        "publicURL": "http://aaa.bbb.ccc.ddd:8776/v1/5325bbb937ef4a09b32c7ceff026dd73",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "cinder",
                "type": "volume"
            },
            {
                "endpoints": [
                    {
                        "adminURL": "http://aaa.bbb.ccc.ddd:35357",
                        "id": "338035a23b7044c8bde3a09add9069f6",
                        "internalURL": "http://aaa.bbb.ccc.ddd:5000",
                        "publicURL": "http://aaa.bbb.ccc.ddd:5000",
                        "region": "RegionOne"
                    }
                ],
                "endpoints_links": [],
                "name": "keystone",
                "type": "identity"
            }
        ],
        "token": {
            "audit_ids": [
                "fIqRTCsTRnq4ls4Fk9ci7Q"
            ],
            "expires": "2016-04-22T18:32:15Z",
            "id": "9e46d8b2d6da46eb87e573ee9590ee73",
            "issued_at": "2016-04-22T17:32:15.470575Z",
            "tenant": {
                "description": "",
                "enabled": true,
                "id": "5325bbb937ef4a09b32c7ceff026dd73",
                "name": "demo"
            }
        },
        "user": {
            "id": "0b1660f5c772423db35c31432e7c3a46",
            "name": "demo",
            "roles": [
                {
                    "name": "Member"
                },
                {
                    "name": "anotherrole"
                }
            ],
            "roles_links": [],
            "username": "demo"
        }
    }
}
  • cinderに接続する。
    • X-Auth-Tokenには、tokenのidを記述する。
    • URIには、コンポごと+操作を組み合わせたのURIを記載する。
    • Acceptには、出力フォーマット(json又はxml)を記述する。

curl -s -H "Accept: application/xml" -H "X-Auth-Token:2bb531a2c14c4da4a9ff81c8fd2f4bd3" http://aaa.bbb.ccc.ddd:8776/v2/e3d7ae2ff008492894e653798c688472/cgsnapshots