安価で、豊富な機能を持つ管理コンソールと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が揃っていて便利ですね。
ただ、今回ご紹介したスクリプト単体では、さほど役に立つものではありません。下記と併用する必要があります。
次のような作業をしたい場合に役立てていただければと思います。
なお、匠は下記の書籍をかじった程度のプログラミング能力しかありませんので、プログラムソースに違和感があれば是非ともご指摘くださいませ。
