Posted at

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

More than 5 years have 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を確認して下さい。

以上です。

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