Vagrantにはさまざまな便利なプラグインがあります。
使い方
プラグイン一覧
vagrant plugin list
プラグインインストール
vagrant plugin install <プラグイン名>
プラグインアンインストール
vagrant plugin uninstall <プラグイン名>
プラグインアップデート
vagrant plugin update <プラグイン名>
※プラグイン名の入力無しですべてのプラグインをアップデート
プラグイン
vagrant-vbguest
vagrant-vbguestは、ホストOSのVirtualBox Guest AdditionsをゲストOSに自動的にインストールするプラグインです。
vagrant plugin install vagrant-vbguest
Guest Additionsは、ホストOSとゲストOS間の連携をスムーズにするソフトウェアです。
ホストOSとの時刻同期やフォルダーの共有などが行えるようになります。
Guest Additionsをインストールする際に、kernelなどのパッケージ更新も行われます。
sahara
ゲストOSをロールバックして元の状態に戻すことができるようになるプラグインです。
vagrant plugin install sahara
仮想マシンを起動後、sandboxモードをonにします。
vagrant sandbox on
roolbackすることにより、onにした状態へ戻ります。
vagrant sandbox rollback
commitすることにより、その時点の状態を記憶します。
rollbackするとcommitした時点に戻ります。
vagrant sandbox commit
sandboxモードをoffにすると、commitした時点、もしくは、sandboxモードをonにした時点へ戻ります。
vagrant sandbox off
vagrant-disksize
仮想マシンのディスク容量を増やすことができます。
vagrant plugin install vagrant-disksize
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.disksize.size = "100GB"
end
ディスク容量は減らすことができません。
Boxによってはディスク容量が増えても、パーティションの設定が必要になる場合があります。
パーティションの設定が必要な場合は、Gpartedというパーティション操作ツールを使うとよいです。
https://gparted.org/livecd.php
VirtualBox側からLive CDで起動して使えます。
debianのBoxはパーティションの操作が必要になります。
ubuntuのBoxの場合はパーティションが1つなので、パーディション操作は不要です。
vagrant-hostmanager
ホストOS・ゲストOSのhostsに設定を行ってくれます。
vagrant plugin install vagrant-hostmanager
Vagrant.configure(2) do |config|
config.vm.box = "debian/buster64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.hostname = "hostmanager.test"
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.hostmanager.manage_guest = true
end
DHCPで動的にIPアドレス割り当照られる場合でも、ゲストOSからIPアドレスを取得して設定することも可能です。
Vagrant.configure(2) do |config|
config.vm.box = "debian/buster64"
config.vm.network "private_network", type: "dhcp", ip: "192.168.33.0"
config.vm.hostname = "hostmanager.test"
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.hostmanager.ip_resolver = proc do |vm, resolving_vm|
ip_address = ''
if hostname = (vm.ssh_info && vm.ssh_info[:host])
vm.communicate.execute("/bin/ip addr show dev eth1 | grep 'inet ' | tail -n 1 | egrep -o '[0-9\.]+' | head -n 1 2>&1") do |type, contents|
ip_address = contents.split("\n").first
end
end
ip_address
end
end
vagrant-env
.envファイルから環境変数を読み込みます。
vagrant plugin install dotenv
HOST_NAME=hostmanager.test
Dotenv.load
Vagrant.configure(2) do |config|
config.vm.box = "debian/buster64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.hostname = ENV['HOST_NAME']
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.hostmanager.manage_guest = true
end
Dotenv.load
で.env
から読み込みます。
vagrant-envというプラグインもあるのですが、設定ファイルにひらがなが入っているとエラーになります。
vagrant-docker-compose
ゲストOSにDocker・Docker Composeをインストールします。
コンテナをdocker-compose.ymlから起動させることも可能です。
vagrant plugin install vagrant-docker-compose
Vagrant.configure(2) do |config|
config.vm.box = "debian/buster64"
config.vm.provision :docker
config.vm.provision :docker_compose
end
docker-compose.yml起動例
config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", run: "always"
コメント