Mac
vagrant

Vagrantを1.5系に上げたら色々追加されていたので確認する

More than 1 year has passed since last update.

経緯

インフラ系ツールの勉強会として始まったFukagawa.rb、次回の#02で、vagrantを扱う。
その予習も兼ねて、vagrantをアップデートしたら結構追加されていたので、まとめてみる。
(以前はv1.4.3を使用していました。)

環境:Mac OSX 10.9.2 / vagrant 1.5.4

※ これ違うな、と思われる記述がありましたらご指摘下さい。

新しい要素

開発環境向けの新要素。

  • VAGRANT CLOUD: Vagrant Boxを外部に公開/非公開することのできるもの。
    Boxのバージョン管理にも利用できる。
  • BOXの共有(http共有/ssh共有/General Sharing)

参考記事:Vagrantが開発環境向けコラボレーションツールをリリース

コマンド

VAGRANT DOCS COMMAND-LINE INTERFACE$ vagrant -h$ vagrant list-commandsを見ながら確認していきます。

box          manages boxes: installation, removal, etc.

add: 予め作られているvagrant用のBoxを追加する。
例:$ vagrant box add ADDRESSと使用する。

追加する方法は3つある。
1. VAGRANT CLOUD内のカタログからイメージを探し、"hashicorp/precise64"みたいに追加する。
例:$ vagrant box add hashicorp/precise64
2. VAGRANT CLOUD内のカタログからイメージを探し、ファイルパス or URLを指定して追加する。
この場合、ベーシック認証もサポートしているし、http_proxyでの環境変数でも利用できる。
当然(VAGRANT CLOUDでもそうだが)httpsもサポートしている。
例:$ vagrant box add https://vagrantcloud.com/hashicorp/precise64
3. BoxのURLを直接指定してダウンロードする。Vagrantbox.esを利用していた時の方法。

OPTION:
1.Boxファイルを直接指定しない場合(VAGRANT CLOUDを利用)

--box-version VALUE: 追加したいバージョンを指定する。
デフォルトでは、最新のバージョンが追加される。
例:$ vagrant box add hashicorp/precise64 --box-version "1.0.0"
例:$ vagrant box add hashicorp/precise64 --box-version ">=1.0.0,<1.1.0"
--cacert CERTFILE: ルート認証局での認証を使用しない場合に使用。
--cert CERTFILE: Boxをダウンロードする時にクライアント証明書を利用できる。
-c, --clean: Boxダウンロード時、(以前Boxをダウンロードした時に失敗した?)一時ファイルを削除してダウンロードを開始できる。
-f, --force: Box listに同名のBoxがある場合、使用。(上書きして追加する。)
--insecure: httpsのURLで、SSL証明書を検証せずにBoxをダウンロードする。
--provider PROVIDER: Virtual BOxなどのプロバイダを指定してダウンロードする。
デフォルトでは、プロバイダを自動検出(選択して)ダウンロードする。

例:$ vagrant box add hashicorp/precise64
1) hyperv
2) virtualbox
3) vmware_fusion
Enter your choice:

2.Boxファイルを直接指定する場合(VAGRANT CLOUDを利用しない)

--checksum VALUE: check sumを利用できる。
--checksum-type TYPE: check sumのタイプを指定する。
サポートしているのは、"md5", "sha1", "sha256"
checksumとchecksum-typeは併用利用する。
--name VALUE: Boxの名前を指定する。

list: ローカル環境にあるBox listを表示する。
例:$ vagrant box listと使用する。

outdated: VAGRANT CLOUDからダウンロードしたBoxが最新バージョンか確認できる。

OPTION:
--globalオプションを付けることで、全てのBoxのアップデートを確認可能。

remove: 追加したBoxを削除する。

OPTION:
--providerオプションを付けることで、プロバイダを指定できる。

repackage: 現在の稼働状態で再配布できるよう、Boxを再構成する。

update: Boxをアップデートする。

OPTION:
--box VALUE: 指定したBoxをアップデートする。
--provider VALUE: 指定したプロバイダのBoxをアップデートする。

connect      connect to a remotely shared Vagrant environment

vagrant shareされたVagrant環境に接続する。
例:vagrant connect NAMEと使用する。

OPTION:
--disable-static-ip: SOCKS環境で利用。
--static-ip IP: どのIPにアクセスするかを指定。
vagrant connectでは、172.16.0.0/16のIP郡を利用する。
--ssh: vagrant share --sshと同様にsshで接続する。

destroy      stops and deletes all traces of the vagrant machine

Vagrantで実行した仮想OSを破棄する。

OPTION:
-f, --force: 破棄してよいかの確認を求めず、実行する。

halt         stops the vagrant machine

Vagrantで実行した仮想OSを停止(shutdown)する。

OPTION:
-f, --force: 端末の電源を抜くように、OSを停止する。

init         initializes a new Vagrant environment by creating a Vagrantfile

今いるディレクトリで、VagrantのOS起動を設定する。
例:vagrant init [box-name] [box-url]と使用する。
[box-name]: 作成されたVagrantfileにconfig.vm.boxを指定する。
[box-url]: 作成されたVagrantfileにconfig.vm.box_urlを指定する。

login        log in to Vagrant Cloud

Vagrant Share等、特定の機能が必要な際、VAGRANT CLOUDにログインして利用する。
(注意:Vagrantを利用する大半のことでは利用しない。)

例:$ vagrant login
(中略)
Username or Email:
Password (will be hidden): 
You're now logged in!

$ vagrant login --check
You are already logged in.

$ vagrant login --logout
You are logged out.

OPTION:
--check: 今ログイン状態か確認する時に使用。
--logout: ログアウトする時に使用。

package      packages a running vagrant environment into a box

現在、VirtualBoxで稼働している環境を再利用可能な状態(Box)にする。
また、このバージョンでは、VirtualBoxのみサポートしているが、今後他のプロバイダにも対応予定。

OPTION:
--base NAME: VirtualBoxで稼働している端末の名前を指定する。
--output NAME: 生成されたBoxのファイル名を指定する。
デフォルトでは、package.boxと保存される。
--include x,y,z: Boxとともにパッケージ化するファイルを指定する。
--vagrantfile FILE: Boxファイルとともにパッケージ化するVagrantfileを指定する。
なお、詳細はVagrantfile load orderを確認して下さい。

plugin       manages plugins: install, uninstall, update, etc.

install: プラグインの名前/ファイルパスからプラグインをインストールする。
プラグインの名前の場合、たいていRubyGemsからインストールされる。
例:vagrant plugin install <name>と使用。

OPTION:
--entry-point ENTRYPOINT: 利用するプラグインのエントリポイントを指定する場合に利用。
--plugin-source SOURCE: インストールするプラグインのソース元を指定する。
--plugin-version VERSION: インストールするプラグインのバージョン("1.2.3"や"> 1.0.2, < 1.1.0")を指定する。

license: プラグインのライセンスファイルをインストールする。
例:vagrant plugin license <name> <license-file>と使用。

list: インストール済みのプラグインとそれぞれのバージョンの一覧を表示。

uninstall: 指定した名前のプラグインをアンインストールする。
例:vagrant plugin uninstall <name> [<name2> <name3> ...]と使用。

update: 指定されたプラグインをアップデートする。
但し、バージョン指定でインストールされたプラグインはアップデートされない為、再インストールが必要。
インストールされていないプラグインは、インストールされない。

provision    provisions the vagrant machine

vagrantで起動中のOSに対して、以下の設定を反映させる。
(詳細は、PROVISIONINGを確認して下さい。)

provisioners URL
Basic Usage http://docs.vagrantup.com/v2/provisioning/basic_usage.html
File http://docs.vagrantup.com/v2/provisioning/file.html
Shell http://docs.vagrantup.com/v2/provisioning/shell.html
Ansible http://docs.vagrantup.com/v2/provisioning/ansible.html
CFEngine http://docs.vagrantup.com/v2/provisioning/cfengine.html
Chef Solo http://docs.vagrantup.com/v2/provisioning/chef_solo.html
Chef Client http://docs.vagrantup.com/v2/provisioning/chef_client.html
Docker http://docs.vagrantup.com/v2/provisioning/docker.html
Puppet Apply http://docs.vagrantup.com/v2/provisioning/puppet_apply.html
Puppet Agent http://docs.vagrantup.com/v2/provisioning/puppet_agent.html
Salt http://docs.vagrantup.com/v2/provisioning/salt.html

OPTION:
--provision-with x,y,z: 指定されたprovisionerを実行する。

reload       restarts vagrant machine, loads new Vagrantfile configuration

Vagrantで起動中のOSを再起動($ vagrant halt と $ vagrant up)する。

OPTION:
--provision: provisionersを実行する。
--provision-with x,y,z: 指定したprovisionerを実行する。

resume       resume a suspended vagrant machine

Vagrantで稼働し、中断(vagrant suspend)していたOSを再開させる。

share        share your Vagrant environment with anyone in the world

Vagrantで稼働しているOSを共有する。

OPTION:
--disable-http: HTTPアクセスを無効にする。
--http PORT: HTTPポート番号を指定する。
但し、HTTPアクセスを無効(--disable-http)にした場合、効果はない。
--https PORT: HTTPSポート番号を指定する。
但し、HTTPアクセスを無効(--disable-http)にした場合、効果はない。
--ssh: ssh接続を有効にする。デフォルトでは無効。
--ssh-no-password: ssh接続での鍵認証の暗号化を無効にする。
--ssh-port PORT: ssh接続のポート番号を指定する。
--ssh-once: 一度だけssh接続を許可する。最初の接続後、生成された鍵は破棄される。

ssh          connects to machine via SSH

Vagrantで稼働しているOSにssh接続する。

OPTION:
-c COMMAND, --command COMMAND: 指定したCOMMANDをssh接続して実行する。
-p, --plain: ユーザに認証をさせてssh接続する。

ssh-config   outputs OpenSSH valid configuration to connect to the machine

Vagrantで稼働しているOSにssh接続する為の設定情報を出力する。

OPTION:
--host NAME: 出力する設定名を指定する。

status       outputs status of the vagrant machine

Vagrantで稼働しているOSの状態を確認する。

suspend      suspends the machine

Vagrantで稼働しているOSを中断の状態にする。
中断にはホスト側で追加容量が必要だが、メモリやCPUリソースを消費しない。

up           starts and provisions the vagrant environment

Vagrantfileの設定を元にOSを起動する。

OPTION:
--[no-]destroy-on-error:
予期しないエラーが発生した場合に、新しく作成されたOSを破棄(destroy)する。
これでデフォルトで設定されている。
--[no-]parallel: プロバイダがサポートしている場合、並列でOSを起動する。
--provider x: 使用するプロバイダを指定する。デフォルトでは、Virtualbox。
--provision: provisionersを実行する。
--provision-with x,y,z: 指定したprovisionerを実行する。


・VirtualBoxの共有フォルダやNFSが利用できない時に、rsyncで同期ができる。

rsync           syncs rsync synced folders to remote machine
rsync-auto      syncs rsync synced folders automatically when files change

詳細は、RSYNC、若しくはRSYNC-AUTOを確認して下さい。

以上です。
ご覧いただき、ありがとうございました。