Vagrant Sakura Provider
この gem は Vagrant に さくらのクラウド上のサーバを操作する 機能を追加する provider です。
このリポジトリはtsahara/vagrant-sakuraから移行されました。
機能 / 制限
- さくらのクラウド上にサーバを作成できます。
- サーバに SSH ログインできます。
- サーバを停止/再開(オフ/オン)できます。
- Chef をはじめとする provisioner が動きます。
なお Chef を利用する場合は vagrant-omnibus プラグインを使ってサーバ上に
Chef をインストールしてください。
インストール
通常の Vagrant 1.1+ 以降のプラグインの導入方法でインストールできます。
インストール後は sakura プロバイダを指定して vagrant up してください。
以下に例を示します:
$ vagrant plugin install vagrant-sakura
...
$ vagrant up --provider=sakura
...
なお実行前にさくらのクラウド用の Vagrant box を取得しておく必要があります。
かんたんな使い方
プラグインを(先述の通りに)インストールしたら、てっとり早く始めるためには
ダミーのさくらのクラウド用 box を使い、詳細は config.vm.provider で
指定します。
まずはじめに、ダミーの box を好きな名前で追加してください:
$ vagrant box add dummy https://github.com/sacloud/vagrant-sakura/raw/master/dummy.box
...
次に、以下のような Vagrantfile を作成し、必要な情報を埋めてください。 なお、以下の Vagrantfile は Vagrant 付属の "insecure key" でログインできる サーバを作成します。実用する際は次節の「SSH 鍵の指定方法」を参考に安全な SSH 鍵を設定してください。
Vagrant.configure("2") do |config|
config.vm.box = "dummy"
config.ssh.username = "ubuntu"
config.vm.provider :sakura do |sakura|
sakura.access_token = '<YOUR ACCESS TOKEN>'
sakura.access_token_secret = '<YOUR ACCESS TOKEN SECRET>'
sakura.use_insecure_key = true
end
end
そして vagrant up --provider=sakura を実行してください。
サーバのディスクソース(OS)は sakura.disk_source_archive またはsakura.os_typeで指定します。
デフォルトではsakura.os_type="ubuntu"となっています。
注: ディスクソースに指定するOSに応じて
config.ssh.usernameを適切に指定する必要があります。
詳細はos_typeの説明を参照してください。
APIキーの指定
さくらのクラウド API を利用するための APIキー(トークン/シークレット/ゾーン)は 以下の3通りの方法で指定できます。
- Vagrantfileに直接記載
- さくらのクラウド CLI Usacloudの設定ファイル
- 環境変数
複数指定されている場合はより上に記載されているものが優先されます。
1. Vagrantfileに直接記載
以下のようにVagrantfileに直接記載する方法です。
config.vm.provider :sakura do |sakura|
sakura.access_token = '<YOUR ACCESS TOKEN>'
sakura.access_token_secret = '<YOUR ACCESS TOKEN SECRET>'
sakura.zone_id = '< is1a / is1b / tk1a >'
# ...
end
2. さくらのクラウド CLI Usacloudの設定ファイル
Usacloudの設定ファイルを利用する方法です。
UsacloudにてAPIキーの設定(usacloud configコマンドの実行など)を行なっておけばvagrant-sakura が自動的にUsacloudの設定ファイルを読み込みます。
この機能を利用すればVagrantfileにAPIキー関連の設定を記載する必要はありません。
デフォルトでは~/.usacloud/<current_profile>/config.jsonファイルが利用されます。
任意のUsacloud設定ファイルを利用したい場合、Vagrantfileにconfig_pathを指定することで利用する設定ファイルを指定できます。
config.vm.provider :sakura do |sakura|
sakura.config_path = 'your/config/file.json'
# ...
end
3. 環境変数
環境変数でAPIキーを指定可能です。
UsacloudやPacker for さくらのクラウド、Terraform for さくらのクラウドと共通の環境変数を利用できます。
- API アクセストークン:
SAKURACLOUD_ACCESS_TOKENまたはSAKURA_ACCESS_TOKEN - API シークレット:
SAKURACLOUD_ACCESS_TOKEN_SECRETまたはSAKURA_ACCESS_TOKEN_SECRET - ゾーン:
SAKURACLOUD_ZONE
SSH 鍵の指定方法
vagrant-sakura では、サーバにログインするための SSH 公開鍵を 以下の3通りの方法で 設定できます。
コントロールパネルで設定済みの SSH 公開鍵をリソース ID で指定する。 対応する秘密鍵は
override.ssh.private_key_pathで指定できます。sakura.sshkey_id = '101234567890' override.ssh.private_key_path = File.("~/.ssh/vagrant")SSH 公開鍵のパスを指定する。この方法では、ひとつサーバを作成する度に SSH 公開鍵リソースがひとつ作成されます。vagrant-sakura が SSH 公開鍵リソース を削除することはないため、SSH 公開鍵リソースが不必要に増えてしまうことに 注意が必要です。
sakura.public_key_path = File.("~/.ssh/vagrant.pub") override.ssh.private_key_path = File.("~/.ssh/vagrant")Vagrant 付属の "insecure key" をそのまま使う。"insecure key" は安全性に 懸念があるため、
sakura.use_insecure_keyをtrueにセットした時に のみ利用されます。sakura.use_insecure_key = true
コマンド
OSの再インストール
sakura-reinstall コマンドを使って、ディスクに対しOSの再インストールを行うことができます。
$ vagrant sakura-reinstall
...
各種IDの一覧表示
sakura-list-id コマンドを使って、Vagrantfile で指定するリソース ID
を調べることができます。
$ vagrant sakura-list-id
...
設定
さくらのクラウド provider では以下の設定ができます:
access_token- さくらのクラウド API にアクセスするための API キーaccess_token_secret- API キーのシークレットトークンdisk_plan- サーバで利用するディスクのプラン IDos_type- サーバで利用するディスクのベースとするアーカイブの種別 (※disk_source_archiveとは同時に指定できません)
指定可能な値は以下の通りです。
| 指定可能な値 | SSHユーザー名 | Vagrantfileの例 | 備考 |
|---|---|---|---|
ubuntu(デフォルト) |
ubuntu |
example | - |
ubuntu-20.04 |
ubuntu |
- | - |
ubuntu-18.04 |
ubuntu |
- | - |
ubuntu-16.04 |
ubuntu |
- | - |
centos |
root |
example | - |
centos8 |
root |
example | - |
centos7 |
root |
example | - |
centos6 |
root |
example | - |
debian |
root |
example | - |
debian10 |
root |
- | - |
debian9 |
root |
- | - |
coreos |
core |
example | - |
freebsd |
root |
example | - |
rancheros |
rancher |
example | メモリ2GB以上のプランが必要 |
k3os |
rancher |
example | - |
disk_source_archive- サーバで利用するディスクのベースとするアーカイブのID (※os_typeとは同時に指定できません)server_name- サーバ名server_plan- 作成するサーバのプラン ID(非推奨 代わりにserver_coreとserver_memoryを利用してください)server_core- 作成するサーバのコア数(デフォルト:1)server_memory- 作成するサーバのメモリサイズ(GB単位、デフォルト:1)packet_filter- 作成するサーバに適用するパケットフィルタ IDstartup_scripts- 作成するサーバに適用するスタートアップスクリプト ID(リスト)enable_pw_auth- パスワード認証の有効化(デフォルト:false)tags- 作成するサーバ/ディスクのタグ(リスト)description- 作成するサーバ/ディスクの説明sshkey_id- サーバへのログインに利用する SSH 公開鍵のリソース IDzone_id- ゾーン ID (石狩第1=is1a, 石狩第2=is1b、東京第1=tk1a、デフォルトはis1b)config_path- APIキーが記載されたUsacloud設定ファイルのパス
ネットワーク
vagrant-sakura は config.vm.network を利用したネットワークの構築を
まだサポートしていません。
開発
vagrant-sakura プラグインをいじる場合は、リポジトリを clone してから
Bundler を使って依存関係を解決してください。
$ bundle
開発中のプラグインをテストするには以下のようにビルドしてからvagrant pluginコマンドでプラグインをインストールします。
bundle exec rake build
vagrant plugin install pkg/vagrant-sakura-*.gem
プラグインをインストール後、Vagrantfile を clone したディレクトリに置いて
(.gitignore に書いてあるので git には無視されます)、
開発中の Vagrant 環境をテストすることができます。
$ vagrant up
