ConoHaで提供されているサーバーイメージの一覧を表示するPythonスクリプト

この記事は約 16 分で読めます。

安価で、豊富な機能を持つ管理コンソールとAPIが充実してるVPSサービスプロバイダーとして定評のある「ConoHa」。このブログでも非常にお世話になっています。

このConoHaでは、VPS向けに多くのサーバーイメージが提供されており、これらを使用してサーバーを作成するわけです。

しかし、APIで作成できるように自動化する場合には、それらのイメージの「UUID(imageRef値)」が必要になります。

このUUIDが公開されていなくて、毎回取得するのがメンドくさい。というわけで、それを取得するPythonスクリプトを書いてみました。

同じ境遇の方、あるいはPython初学者のサンプルソースとして、お役に立てれば幸いです。

スポンサーリンク

ConoHaの全イメージ一覧を表示するPythonスクリプト

前提

ConoHaでしか使えません。ConoHaのAPI専用のスクリプトです。

スクリプトソース

#!/bin/python

from requests.exceptions import ConnectionError, RequestException, HTTPError
import json
import requests
import sys

    
''' === Setting Parameters ============================= '''
APIUSER = '{APIユーザー名}'
APIPASS = '{APIパスワード}'
TENANT = '{テナントID}'
''' ==================================================== '''


def get_conoha_token(tid, user, passwd):
    ''' Function of getting a text of conoha token'''
    _api = 'https://identity.tyo1.conoha.io/v2.0/tokens'
    _header = {'Accept': 'application/json'}
    _body = {
        "auth": {
            "passwordCredentials": {
                "username": user,
                "password": passwd
                },
            "tenantId": tid
        }}    

    try:
        _res = requests.post(_api, data=json.dumps(_body), headers=_header)
        return (json.loads(_res.text))["access"]["token"]["id"]
    except (ValueError, NameError, ConnectionError, RequestException, HTTPError) as e:
        print('Error: Could not get ConoHa token text.', e)
        sys.exit()
        

def show_image_list(tid, token):
    ''' Function of getting Conoha Server Images List '''
    _api = 'https://compute.tyo1.conoha.io/v2/' + tid + '/images/detail'
    _header = {'Accept': 'application/json', 'X-Auth-Token': token}
    
    try:
        _res = requests.get(_api, headers=_header)
        for server in json.loads(_res.content)['images']:
            print('{name} => {id}'.format(name=server['name'], id=server['id']))
    except (ValueError, NameError, ConnectionError, RequestException, HTTPError) as e:
        print('Error: Could not get ConoHa Image uuid.¥n', e)
        sys.exit()

def main():
    # Get API token
    Token = get_conoha_token(TENANT, APIUSER, APIPASS)
    
    # Get Flavor UUID
    show_image_list(TENANT, Token)

if __name__ == '__main__':
    main()

仕様

  • {APIユーザー名}、{APIパスワード}、{テナントID}はいずれもConoHa 管理コンソールから取得して、置き換えてください。手順はこちらをご覧ください。
  • Python3 で動作します。動作確認は Python 3.6 環境。
  • Requestsモジュールを別途インストールしておいてください。

出力結果

下記の形式で表示します。

イメージ名 => イメージID

2018年9月時点だとこんな感じです。vmi-〜で始まるイメージ名は ConoHa デフォルトで提供されてるイメージですね。

vmi-arch-amd64 => 1684faa9-bd80-458b-9e4b-e270e12fa87f
vmi-arch-amd64-20gb => 12519236-2567-40a6-878a-6129f0ba117c
vmi-mongodb-4.0-centos-7.5-amd64-20gb => 3c38be35-71e4-449e-a877-121e363eadbd
vmi-mongodb-4.0-centos-7.5-amd64 => 1d25b326-08fd-4584-8d2d-63000c4a7eb5
vmi-wordpress-kusanagi-20gb => b19b270f-c73e-4de1-89e2-e6c1f408fb60
vmi-wordpress-kusanagi => 85ac2993-8eab-4e4c-9a54-657611769e44
vmi-redmine-3.4-centos-7.5-amd64-20gb => 8298d1ae-8950-4f0e-9f36-1281ce6507f0
vmi-redmine-3.4-centos-7.5-amd64 => 398bd0b5-2345-435d-aa4a-f67b883553f3
vmi-gitlab-11.2-centos-7.5-amd64 => 7614e652-1658-430c-bfdc-01464ab0f214
vmi-minecraft-1.13.1-centos-7.5-amd64 => 2976ac62-2044-4b69-8b70-a712fac0b528
vmi-jenkins-2.121-centos-7.5-amd64-20gb => 139b7218-d2a1-43ae-90de-efbfe11d2358
vmi-jenkins-2.121-centos-7.5-amd64 => a9774cd1-f6a5-4234-b95f-ef664446981c
vmi-dokku-0.12.12-ubuntu-16.04-amd64-20gb => b35a67e9-44a7-47ed-98ae-0059ebcb916d
vmi-dokku-0.12.12-ubuntu-16.04-amd64 => 1e9786b3-4a99-418e-9ee8-20a6a35000d6
itsumonotakumi_work => a7dcfd02-4221-490d-afbe-3835cd7b47cb
vmi-cacti-1.1.36-nagios-4.4.1-php7-centos-7.5-amd64-20gb => a3834079-6b99-4cb0-b62a-624083711da5
vmi-cacti-1.1.36-nagios-4.4.1-php7-centos-7.5-amd64 => fb89f79c-88fc-40b9-9468-db0bc9d62265
vmi-docker-18.06-ubuntu-18.04-20gb => ba553238-0ef8-4317-9e2b-61e1ad764c47
vmi-docker-18.06-ubuntu-18.04 => ef2c20ae-4223-46f9-bc13-c8026b0c5f04
vmi-mastodon-2.5-ubuntu-18.04-20gb => 884f8be9-8b27-43a5-b332-3323df877051
vmi-mastodon-2.5-ubuntu-18.04 => 016dc68b-4387-4f2f-a26b-78cb63a08d7d
vmi-mattermost-5.0.1-centos-7.5-amd64-20gb => e01960ba-ff89-43a9-8c6c-8f5ff1f28411
vmi-mattermost-5.0.1-centos-7.5-amd64 => 79c17240-b4f3-4e17-b7ef-8b0e0ecda5d2
vmi-mediawiki-1.31-centos-7.5-amd64-20gb => 261bdf3c-78da-4491-b3d3-cf29fd2674d1
vmi-lemp-php7-centos-7.5-amd64-20gb => 427bc925-c9d2-435a-9ba6-f7dd3a989e66
vmi-lamp-php7-centos-7.5-amd64-20gb => 7383ffe4-ac7b-4cd5-91a5-f4022d2ead7b
vmi-mediawiki-1.31-centos-7.5-amd64 => 58ec518f-e415-4e7a-8b2e-f21ee45b4577
vmi-lemp-php7-centos-7.5-amd64 => 79c61dc1-0c80-4532-82da-8c87912b1913
vmi-lamp-php7-centos-7.5-amd64 => 8492152e-738a-41d6-bdb6-e0be10ba593e
vmi-joomla-3.8-centos-7.5-amd64-20gb => ba094d38-8714-4c53-a798-b09458bb30e3
vmi-django-2.0-centos-7.5-amd64-20gb => 6a4e4a7d-61f2-4be6-b8d8-b2d11ee66bd6
vmi-joomla-3.8-centos-7.5-amd64 => f378233e-5ebf-49ec-af95-6be959c27901
vmi-django-2.0-centos-7.5-amd64 => 445a623a-e1fd-4d1b-bcb7-01b6bbe08373
vmi-matomo-3.5-centos-7.5-amd64-20gb => d7675850-5ad1-4f1a-a3db-d92cec1c0994
vmi-matomo-3.5-centos-7.5-amd64 => da9a6336-deb0-4e8c-8ed8-388804058d82
vmi-basercms-4.1-centos-7.5-amd64-20gb => e9483ab9-52a0-4659-b2d8-f7dd81e48da2
vmi-basercms-4.1-centos-7.5-amd64 => 03055bdf-636f-43fd-920b-d76aafd100e0
vmi-redis-4.0-centos-7.5-amd64-20gb => 54ef0033-790a-4f98-b96d-9b04244e12f2
vmi-redis-4.0-centos-7.5-amd64 => 85156038-8fb7-4952-a195-c21bbc34f8f7
vmi-concrete5-8.4.0-centos-7.5-amd64-20gb => f9972b36-01c8-4e8c-b079-ca6fb27717a6
vmi-concrete5-8.4.0-centos-7.5-amd64 => e6b643da-828f-479c-bbe6-40577839036b
vmi-opensuse-15.0-amd64-amd64-20gb => 743219b1-21fa-4860-a5cc-0340de1bdeb4
vmi-opensuse-15.0-amd64-amd64 => 8dd79e8b-793f-4cbd-a692-a8ea2425e15c
vmi-isucon7-qualify-ubuntu-16.04-amd64-20gb => 79134f5f-8844-454d-942f-f61bc3886d96
vmi-isucon7-qualify-ubuntu-16.04-amd64 => f3827515-1200-46cf-9c37-be20fdfb1671
vmi-owncloud-10.0.8-centos-7.5-amd64-20gb => 089a2738-8b0e-4a14-a664-e6c6bb2e7b47
vmi-owncloud-10.0.8-centos-7.5-amd64 => ecda3318-bb2b-43f9-b362-d2ef6026ebea
vmi-drupal-8.5-centos-7.5-amd64-20gb => 00748111-b3df-4da5-b499-ccabc42efb47
vmi-nodejs-10.1-centos-7.4-amd64-20gb => 991449d2-aebf-49e1-a6fb-1548aed795cc
vmi-ubuntu-18.04-amd64-amd64-20gb => 2322444e-9000-47a8-a425-45fdef52d031
vmi-drupal-8.5-centos-7.5-amd64 => 27fd4795-4950-4875-962b-546ddb94c03a
vmi-nodejs-10.1-centos-7.4-amd64 => f0118d26-b8b7-4d88-8972-99e5e3991786
vmi-ubuntu-18.04-amd64-amd64 => 6bf41f8b-0579-45f9-abe5-37fbff5f964c
vmi-freebsd-11.1-zfs-amd64-20gb => fc0efbf7-6126-4ae1-b61d-9b5dbd8eebb2
vmi-freebsd-11.1-zfs-amd64 => fb8194f8-ff21-4211-82d2-ad82d75a3a3b
vmi-freebsd-11.1-ufs-amd64-20gb => 2a1330db-0d6e-4844-bd35-7bf4d5405c48
vmi-freebsd-11.1-ufs-amd64 => ac11a6aa-7830-4a03-b4c6-9aa7b8c8c135
vmi-centos-7.5-amd64-20gb => 115010f0-672b-457f-9c7e-885795997b0a
vmi-centos-7.5-amd64 => 3fc9e1ea-b94a-4642-b0c5-3071513518de
vmi-fedora-28-amd64-20gb => 951e0eba-1a18-45a4-9a71-f0b9e35a0966
vmi-fedora-28-amd64 => 46900a14-b03c-414b-9207-29ef993896e7
vmi-rails-5.2-centos-7.4-20gb => 5a1f728c-56ac-4a41-add3-194629e48f13
vmi-rails-5.2-centos-7.4 => 4e6ee737-cd2c-472c-99d6-60eba6dd5872
vmi-webmin-1.881-centos-7.4-20gb => 8bfe4ef0-22e2-4bfe-a353-9b79b8650316
vmi-webmin-1.881-centos-7.4 => 698f0995-6277-4600-a3b5-2324bc4a0ea1
vmi-win2016dce-sql2016web => 4f22320d-ee70-4078-a167-b7260c9e785a
vmi-win-2016dce-amd64 => fdccf2d9-630d-4bc0-9683-30142d2f5445
vmi-centos-7.4-amd64-20gb => 95450a81-8194-4ff2-aab6-4f2595da56bb
vmi-centos-7.4-amd64 => 5a933dc9-c2ec-48d7-98e4-a72d408c9ffb
vmi-netbsd-7.1-amd64 => a030c166-6e67-4a28-bf9d-af7e096e4591
vmi-netbsd-7.1-amd64-20gb => c52d0b83-c2ef-4661-be0e-5e2cbb0bf744
vmi-debian-9.0-amd64-unified-20gb => efd589e6-6d6f-458b-923a-400d64924978
vmi-debian-9.0-amd64-unified => 86ef477d-5789-4a5a-b739-5219021252c8
vmi-zbx-3.0-centos-7.3 => ff75715d-551a-4ea9-97fd-14eea8e11b08
vmi-centos-6.8-i386 => 2765f574-b157-4313-95dd-4baa816e1227
vmi-centos-6.8-i386-20gb => 9535ed04-83ad-4694-bb2e-0759784d1689
vmi-centos-6.8-amd64-20gb => 30159dae-2a02-4e7c-ba9e-4658935ad6cf
vmi-centos-6.8-amd64 => 7a2de560-1bc6-42aa-8fd8-4da4978b2ec7
vmi-centos-6.9-i386-20gb => 0c90acd2-7825-4c39-94b0-fc68d2eb1baf
vmi-centos-6.9-i386 => c99f70fa-40c7-4b48-b67b-e8f89676b7a5
vmi-centos-6.9-amd64-20gb => 083e8546-b77a-4e2d-95cf-9caf4cdbcedb
vmi-centos-6.9-amd64 => fdb77dff-cb7e-4f3a-9c58-2c7349cde01f
vmi-debian-8.7-i386-unified-20gb => 2286b897-7eb9-4dcf-8847-6af18bae6450
vmi-debian-8.7-amd64-unified-20gb => 1444e96a-7455-41ac-a744-bf1150a23324
vmi-debian-8.7-i386-unified => 8c9f7e23-c42e-4eeb-9672-786d80ce84aa
vmi-debian-8.7-amd64-unified => a63a4659-3ff7-416d-9d83-931f68c820c8
vmi-ubuntu-14.04-i386-unified-20gb => fc199af0-9f7e-4d39-9219-fe74cfbd9ac2
vmi-ubuntu-14.04-amd64-unified-20gb => c171aae7-d3b7-4776-b3df-9b4130d48019
vmi-ubuntu-14.04-i386-unified => 9155c52d-81dd-4a65-a234-8feaa403ac6f
vmi-ubuntu-14.04-amd64-unified => c50d92b9-f9c8-4fb0-868c-5601f8c9195e
vmi-centos-7.3-amd64-unified-20gb => b78cb72c-dd3e-452a-ad9a-a8860ef6fd41
vmi-centos-7.3-amd64-unified => 1788b029-1b7a-43eb-a89d-02abd0866458
vmi-ubuntu-16.04-i386-unified-20gb => 65cfff0d-baac-4e5b-8263-f949c9ed7ed3
vmi-ubuntu-16.04-amd64-unified-20gb => fdedd7ed-2a4b-4de6-88ba-364deb25e193
vmi-ubuntu-16.04-i386-unified => ec2bfd27-7793-4f53-8ab6-936c79a06213
vmi-ubuntu-16.04-amd64-unified => b9e54c41-cda9-4d84-8248-808bfaf6c793
vmi-zabbix-2.4-centos-7.2-20gb => a1229749-a3e1-4098-88dc-9b19e7aad22e
vmi-openbsd-6.0-amd64-20gb => 222b39bd-91c8-420e-a39e-1ec67d151997
vmi-centos-7.1-amd64-20gb => 77271182-f24f-4d69-9bba-d56dc00b03d3
vmi-centos-6.7-i386-20gb => aec25e57-d992-42b5-9824-584f0b4d7060
vmi-centos-6.7-amd64-20gb => 025defb8-0cbb-48de-8ffb-1b11130e4866
vmi-centos-6.6-i386-20gb => f8ff2137-980c-4e48-85c6-6d9caea0c021
vmi-centos-6.6-amd64-20gb => e3c65854-29e2-41ef-a37b-79db8536dfca
vmi-centos-7.2-amd64-20gb => 1e6bf6ca-d221-49e8-9496-c33b51f5ed58
vmi-openbsd-6.0-amd64 => 0ed01013-93b9-454d-af05-ab421d5a0b3f
vmi-zabbix-2.4-centos-7.2 => ac965a99-7318-44e2-b61c-60788213e9bc
vmi-centos-7.2-amd64 => e141fc06-632e-42a9-9c2d-eec9201427ec
vmi-centos-7.1-amd64 => 21113ec0-3d41-499b-8733-812eb4230e7b
vmi-centos-6.7-amd64 => cd13a8b9-6b57-467b-932e-eee5edcd8d6c
vmi-centos-6.7-i386 => 9ef2815a-23a9-4647-97f0-4047b3a819a3
vmi-centos-6.6-amd64 => 49848467-c2b6-4d45-b8af-3b62dd4dbfde
vmi-centos-6.6-i386 => da1da341-d68c-4fa7-b283-70019fba6b36

注意:上記で紹介したイメージ一覧はどんどん変わっていくはずです。IDもアカウントごとに違ったりするかもしれませんので、各自で一度は全件取得してみた方が無難だと思います。

スポンサーリンク

ConoHaで提供されている全イメージ一覧を取得するPythonスクリプト まとめ

ConoHa VPS は、安価なVPSながら非常に多様なAPIが揃っていて便利ですね。

ただ、今回ご紹介したスクリプト単体では、さほど役に立つものではありません。下記と併用する必要があります。

ConoHaで提供されているプランの一覧を取得するPythonスクリプト
安価で、豊富な機能を持つ管理コンソールとAPIが充実してるVPSサービスプロバイダーとして定評のある「ConoHa」。このブログでも非常にお世話になっています。このConoHaでは、VPS向けに多くのプランが提供されており、これらを...

次のような作業をしたい場合に役立てていただければと思います。

ConoHaでサーバーを自動作成するためのPythonスクリプト
安価で、豊富な機能が充実してる VPS サービスプロバイダーとして定評のある「ConoHa」。このブログでは、とてもとてもお世話になっています。この ConoHa では、APIを使ってサーバーやネットワークの操作が自由自在にでき...

なお、匠は下記の書籍をかじった程度のプログラミング能力しかありませんので、プログラムソースに違和感があれば是非ともご指摘くださいませ。


ITセキュリティを生業とするエンジニアという名の社畜です。妻と子供一人と共に、毎日を楽しく生きてます。このブログを通じて、ただひたすらに共有欲を発散しています。詳しいプロフィールはこちら