Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

VagrantからConoHaを使う

More than 3 years have passed since last update.

ConoHaは、おなじみOpenStackベースのクラウドです。APIも使えて、ほぼOpenStack互換です。VagrantにはOpenStackに対応したProviderがあるのですが、こちらのブログの通りそのままでは動きません。

OpenStackはあくまでコンポーネントの集まりで、組み合わせや設定などでだいぶ違うんですね・・・。
上記のProviderはRackSpace向けなのでそのままでは動きません。

というわけで、forkしてConoHa向けのProviderを作ってみました。

プラグインの機能

  • VPSの作成、起動、停止、破棄が行えます
  • ConoHaの各リージョンをサポートしています
  • VPS作成時にプランとインストールイメージを選択できます
  • SSHキーペアの自動作成、それを使ったSSH接続が行えます
  • コントロールパネルから登録済みのSSHキーペアを使うこともできます。
  • インストールイメージ一覧、VPSプランの一覧、ネットワーク、サブネットの一覧を取得するコマンドが用意されています
  • その他Vagrantの各コマンドが使用できます(provisionなど)

使い方

あらかじめVagrant1.2以降をインストールしておきます。

プラグインのインストール

$ vagrant plugin install vagrant-conoha

(2016/06/13) 最新版1.8.3ではインストールに失敗するようです。1.8.4で修正されるそうなので、それまでは一つ前のバージョン(1.8.1)を使って下さい https://github.com/hironobu-s/vagrant-conoha/issues/2

ConoHa APIアカウントの作成

ConoHaのAPIを使うため、APIユーザーの作成をします。これは以下のオフィシャルのドキュメントの[3]まで進めればOKです。

APIを使用するためのトークンを取得する

[4]でAPI接続するためのテナント情報などを確認します。これは次のステップで必要になります。

Vagrantfileの作成

以下の内容でVagrantfileを作成します。ConoHaのAPIに接続するための情報や、インスタンスのスペックとイメージ(UbuntuとかCentOSとか)などを設定します。

設定ファイルの各パラメータの解説はこちら

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box       = 'conoha'
  config.ssh.username = 'root'
  config.ssh.pty      = true

  config.vm.provider :conoha do |conoha|
    conoha.openstack_auth_url = 'https://identity.tyo1.conoha.io/v2.0'

    conoha.username           = 'gncu*******'
    conoha.password           = '***********'
    conoha.tenant_name        = 'gnct*******'

    conoha.flavor             = 'g-1gb'
    conoha.image              = 'vmi-ubuntu-14.04-amd64'
    conoha.region             = "tyo1"
    conoha.admin_pass         = "AdminPass123*"
    conoha.metadata           = {
      instance_name_tag: "vagrant_conoha"
    }
    conoha.security_groups    = [
      "default",
      "gncs-ipv4-all",
      "gncs-ipv6-all"
    ]
    # conoha.keypair_name       = "hironobu-key"

  end
  # config.ssh.private_key_path = "~/.ssh/id_rsa"
end

実行

早速vagrant upしましょう。providerにconohaを指定します。

# vagrant up --provider=conoha

Bringing machine 'default' up with 'conoha' provider...
==> default: Finding flavor for server...
==> default: Finding image for server...
==> default: Launching a server with the following settings...
==> default:  -- Tenant          : gnct*******
==> default:  -- Name            : default
==> default:  -- Flavor          : g-1gb
==> default:  -- FlavorRef       : 7eea7469-0d85-4f82-8050-6ae742394681
==> default:  -- Image           : vmi-ubuntu-14.04-amd64
==> default:  -- ImageRef        : 2b03327f-d453-4c7d-91c9-8b9924b6ea88
==> default:  -- KeyPair         : vagrant-generated-5i4746gl
==> default: Waiting for the server to be built...
==> default: Waiting for SSH to become available...
Connection to 133.130.***.*** closed.
==> default: The server is ready!
==> default: Rsyncing folder: /home/hiro/dev/work/vagrant/ => /vagrant

「The server is ready!」ということで準備OKです。ステータスを確認しましょう。

# vagrant status

Current machine states:

default                   active (conoha)

The server is up and running. Run `vagrant ssh` to access it.

「active」ですね。あとはsshやprovisionなど、Vagrantの機能を活用できます。

ためしにsshしてみましょう。

# vagrant ssh

Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-36-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Thu Aug 27 19:49:00 JST 2015

  System load:  0.08              Processes:           96
  Usage of /:   3.1% of 48.11GB   Users logged in:     0
  Memory usage: 6%                IP address for eth0: 133.130.52.164
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

root@133-130-***-***:~#

いい感じです!

使い終わったらインスタンスを破棄します。ConoHaはインスタンスを削除しないと課金されるので注意です(停止ではだめです)。

# vagrant destroy
==> default: Deleting server...
==> default: Waiting for the server to be deleted...

vagrant-conohaの変更点

オリジナルのvagrant-openstack-providerとの相違点などは

fixed ipへの対応

RackSpaceはfloating ipというIPアドレスをプールする仕組みを使っています。一方ConoHaはfixed ipという、インスタンス毎に固定IPを割り振る方法を採用しています。vagrant-openstack-providerはfloating ipのみの対応だったので、fixed ip対応の実装に変えてます。

Storage Serviceの名前の違い

KeyStoneからServiceCatalogという、OpenStackコンポーネントの一覧のようなものが取れるのですが、StorageService(cinder)のtypeが、RackSpaceは"volume"で、ConoHaは"volumev2"となっています。これはvolumev2が正しいらしいですが、私はよく知りませんw ともかく、この違いに対応しています。

admin_passパラメータへの対応

ConoHaのAPIはインスタンス作成時にrootパスワードを指定する機能があります。これはConoHa独自のパラメータです。これに対応しています。

おわりに

やっぱり、いちいちAPI叩くのも面倒なのでVagrantから扱えると楽ですな( ´ ω ` )

バグレポートやPull Requestお待ちしています。

hironobu_s
Software Engineer
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away