Vagrantについて

Vagrant は、複数の開発環境を構成および展開するための強力なオープンソースソフトウェアです。 Linux、Mac OS X、またはWindowsで動作するように設計されており、仮想化のニーズに対応するVirtualBoxが付属していますが、VMwareやAWSなどの他のプロバイダーでも使用できます。

このチュートリアルでは、DigitalOceanをプロバイダーとして使用するようにVagrantを設定します。 これは、Vagrantからデプロイするための開発マシンとしてDOドロップレット(VPS)を使用できることを意味します。 このチュートリアルでは、環境にVagrantがすでにインストールされていることを前提としているため、Vagrantに関する以前の2つの記事を参照することをお勧めします。

  1. Ubuntu12.04を実行しているVPSにVagrantをインストールする方法
  2. Ubuntuを実行している独自のVPSでVagrantを使用する方法

DigitalOceanのインストール:Vagrant統合プラグイン

プラグインをインストールするには、2つの簡単な手順に従う必要があります。 まず、プラグインをインストールするコマンドを実行します。

vagrant plugin install vagrant-digitalocean

新しいボックスをVagrantに追加するコマンドが続きます(以前の記事のボックスを覚えていますか?):

vagrant box add digital_ocean https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box

このプロバイダーで実行するプロジェクトの構成

このプラグインを使用するには、VagrantがDigitalOceanと通信できるようにするための何らかの形式が必要です。 これがAPIが存在する理由であり、DigitalOceanアカウントにログインして、認証用の新しいAPIキーを生成する必要がある理由です。 https://www.digitalocean.com/api_access に移動し、Createをクリックして新しいAPIキーを生成します。 これは、その上に表示されているクライアントIDと一緒に構成で使用します。

プラグインをインストールし、DO固有のボックスを追加したので、APIキーの準備が整いました。 それらを使用するプロジェクトを作成しましょう。 以前の記事では、VagrantがデフォルトのプロバイダーであるVirtualBoxとどのように連携するかを説明するプロジェクトに取り組んできました。 次に、DigitalOceanクラウドサーバー用の別のプロジェクトを作成しましょう。 (前のプロジェクトフォルダの外に)そのルートディレクトリを作成し、その中を移動します。

mkdir test_project2
cd test_project2

次に、初期化コマンドを実行します。

vagrant init

これにより、必要なVagrantfileが作成されます。

このファイルを編集する前に、DigitalOceanでの認証に必要なSSHキーを作成しましょう。 次のコマンドを実行して、SSHキーペアを生成します。

ssh-keygen -t rsa

Enterキーを押すと、デフォルトを受け入れることができます。 これにより、SSH秘密鍵と公開鍵がVagrantfile構成で以下に指定するパスに配置されます。 SSHキーの生成の詳細については、このチュートリアルを確認してください。 次に、Vagrantfileを編集して構成します。

nano Vagrantfile

次の行を見つけます。

config.vm.box = "base"

そしてそれを次のように置き換えます:

config.vm.box = "digital_ocean"

その下に、次の行を追加します。

config.ssh.private_key_path = "~/.ssh/id_rsa"
config.vm.provider :digital_ocean do |provider|
    provider.client_id = "YOUR CLIENT ID"
    provider.api_key = "YOUR API KEY"
    provider.image = "Ubuntu 12.10 x64"
    provider.region = "New York 2"
  end

最初の行では、SSH秘密鍵ファイルへのパスを指定しています。 これは、プロバイダーが、そのパスに.pub拡張子(以前に作成したもの)を持つ公開鍵を使用して、新しいDigitalOceanSSH鍵を作成することを意味します。 次の2行はDOAPI用であるため、必要に応じてクライアントIDとAPIキーに置き換えてください。 イメージでは、デプロイするクラウドサーバーのタイプを指定しますが、リージョンでは、ドロップレットを作成するDigitalOceanデータセンターを選択します。 使用可能なオプションを確認するには、DOドロップレット作成ページを確認してください。

vm.providerブロックにいくつかの追加設定を追加できます。

  • Provider.size:新しいVPSを作成するときに使用するサイズを表す文字列(例: 1GB)。 現在、デフォルトは512MBです。
  • Provider.ssh_key_name:VPS認証用のDigitalOceanSSHキーを作成するときに使用する名前を表す文字列。 デフォルトはVagrantです。

ファイルを保存して終了します。 これで、 vagrant up コマンドを実行して、DigitalOceanプロバイダーを指定して新しいVPSを展開できます。

vagrant up --provider=digital_ocean

次のエラーが発生した場合:

The secure connection to the DigitalOcean API has failed. Please
ensure that your local certificates directory is defined in the
provider config.

    config.vm.provider :digital_ocean do |vm|
      vm.ca_path = "/path/to/ssl/ca/cert.crt"
    end

This is generally caused by the OpenSSL configuration associated
with the Ruby install being unaware of the system specific ca
certs.

これは、DigitalOceanとの通信に必要なルート証明書が欠落していることを意味します。 これを修正するには、.bashrcファイルを開きます。

nano ~/.bashrc

そして、下部に次の行を追加します。

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

ファイルを保存して終了します。 Vagrantfileを再度開き、リージョンを指定した行の下に次の行を追加します(順序はそれほど重要ではありませんが、vm.providerブロックの一部である必要があります)。

provider.ca_path = "/etc/ssl/certs/ca-certificates.crt"

ファイルを保存して終了します。 ここで、VPSの展開を再試行します。

vagrant up --provider=digital_ocean

これで、アカウントの指定した領域に、必要な画像を使用してドロップレットが作成されます。 DOアカウントで確認できます。 基本的には、VirtualBoxゲストマシンを使用する場合と同じように使用できます。

サポートされているコマンド

プロバイダーは、次のVagrantサブコマンドをサポートしています。

  • vagrant destroy:ドロップレットインスタンスを破棄します。
  • vagrant ssh:設定されたユーザーアカウントを使用してドロップレットインスタンスにログインします。
  • vagrant stop:ドロップレットインスタンスの電源を切ります。
  • vagrantプロビジョン:構成されたプロビジョナーを実行し、指定されたconfig.vm.synced_folderをrsyncします。
  • vagrant reload:ドロップレットインスタンスを再起動します。
  • vagrant 再構築:ドロップレットインスタンスを破棄し、以前に割り当てられたのと同じIPアドレスで再作成します。
  • vagrant status:ドロップレットインスタンスのステータス(アクティブ、オフ、作成されていない)を出力します。

このプラグインを作成してくれたShawnDahlenに感謝します。

Vagrant-Article#1

Vagrant-Article#2

Vagrant-Article#3

投稿者: Danny