Ubuntu12.10VPSのVagrantでプロバイダーとしてDigitalOceanを使用する方法
Vagrantについて
Vagrant は、複数の開発環境を構成および展開するための強力なオープンソースソフトウェアです。 Linux、Mac OS X、またはWindowsで動作するように設計されており、仮想化のニーズに対応するVirtualBoxが付属していますが、VMwareやAWSなどの他のプロバイダーでも使用できます。
このチュートリアルでは、DigitalOceanをプロバイダーとして使用するようにVagrantを設定します。 これは、Vagrantからデプロイするための開発マシンとしてDOドロップレット(VPS)を使用できることを意味します。 このチュートリアルでは、環境にVagrantがすでにインストールされていることを前提としているため、Vagrantに関する以前の2つの記事を参照することをお勧めします。
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#3