Vagrant構築

本項は書きたての記事です。正確な情報は公式サイト、公式ドキュメント、記載の参照サイトでご確認ください。

目次

+ 読む

概要

2010年、Mitchell Hashimoto氏が開発したプロビジョニングツール。MITライセンス
2007年に米Innotek社(現Oracle社)が開発したVirtualboxを利用してRubyで構築されている。

v3.0に向け実装環境をRubyからGoへ置換え、柔軟性を高める計画がされている。
以前あったVirtualBoxとHyper-Vの同居不具合は、VirtualBox 6.1.4以降は解消している。しかし
同居させるとパフォーマンスが下がる場合もあるので注意が必要。

Download

[ Vagrant by HashiCorp ]
( https://www.vagrantup.com/ )
win10 macOS Linux CentOS,Debian Other ArchLinux Unix

version

ver release note
2.2.19 2021/11/05 guest/suse: Add fallback shutdown for versions without systemd ,provider/virtualbox: Validate VirtualBox hostonly network range
- 2010/03/08 start release


VirtualBox

プロバイダツールはVirtualBoxを使う。
Hyper-V, Dockerでも利用できると公式にはあるが、当方の経験を踏まえた記事になるのでVirtualBoxを利用している。
VirtualBoxとVagrantの相性は頻繁に問題になることがある。セキュリティ上の問題がないのであれば安定して利用できるバージョンの組合せを優先した方が良い。特に双方最新版がリリースされたときにすぐにバージョンアップすると様々な問題を引き起こす可能性がある。
+ 閲覧
ver date platform pkg Ext pack SDK Change
7.0.4 November 18 2022 VMM,GUI,VirtioSCSI,virtio-net,VBoxManager,Main,Guest,3D,Linux GuestAdditions
7.0.2 October 20 2022 macOS Catalina memory corruption,Main,macOS,WinHost,LinuxGuestAdditions
7.0.0 October 10 2022 VM fully encrypted,OCI,GUI,Audio,GuestControl,VBoxManage,macOShost,LinuxGuestAdditions,Device,EFI,Debugging
6.1.40 October 11 2022 GUI,USB,Main,LinuxHost,LinuxGuestAdditions
6.1.38 September 02 2022 GUI,Main,Redording,LinuxHost,LinuxGuestAdditions
6.1.36 July 19 2022 VMM,GUI,NAT,Audio,Recording,VGA,vboximg-mount,SDK,API,WinHost,LinuxHost,LinuxGuestAdditions
6.1.34 March 22 2022 VMM,GUI,EHCI,Storage,NVMe,DevPcBios,virtio-scsi,E1000,VBoxManage,Networking,OVF,SharedClipboard,macosHost,LinuxGuestAdditions,EFI
6.1.32 January 18 2022 VMM,GUI,Audio,E1000,LinuxHost,Guest,SharedClipboard,OS2,Solaris
6.1.30 November 22 2021 VMM,GUI,Host-only networking,DVD,VBoxManage,VBoxHeadless,vboximg-mount,macosHost,Shared Clipboard,LinuxGuestAdditions
6.1.28 October 19 2021 VMM,UI,VMSVGA,Storage,Network,NAT,Audio,API,Host(win,linux)
6.1.26 July 28 2021
6.1.24 July 20 2021
6.1.22 April 29 2021
6.1.20 April 20 2021
6.1.18 January 19 2021
6.1.16 October 16 2020
6.1.14 September 04 2020
6.1.12 July 14 2020
6.1.10 June 05 2020
6.1.8 May 15 2020
6.1.6 April 14 2020
6.1.4 February 19 2020
6.1.2 January 14 2020
6.1.0 December 10 2019
6.0.24 July 14 2020
6.0.0 December 18 2018
5.2.44 July 14 2020
5.2.0 October 17 2017
5.1.38 May 09 2018
5.1.0 July 12 2016
5.0.40 2017/4/28
5.0.0 2015/7/9
4.3.40 2016/8/22
4.3.0 2013/10/15
4.2.36 2015/11/11
4.2.0 2012/9/13
4.1.44 2015/11/11
4.1.0 2011/7/19
4.0.36 2015/11/11
4.0.0 2010/12/22

さらに古い情報

+ さらに古いバージョン
[ vagrant/CHANGELOG.md at main · hashicorp/vagrant · GitHub ]
( https://github.com/hashicorp/vagrant/blob/main/CHANGELOG.md )

構築

1 BIOS/UEFI 仮想化機能有効化 IntelCPUの場合は「VirtualizationTechnology」をEnabled
AMD CPUの場合は「SVM Mode」をEnabled
2 Virtualboxをインストール virtualboxダウンロード
インストーラーを実行して道なりに手順を踏むだけでよい。
3 vagrantをインストール vagrantダウンロード
インストーラーを実行して道なりに手順を踏むだけでよい。
vagrant pluginインストール vagrant pluginインストールを参照。
4 vagrant設定 任意の場所にvagrant用フォルダ/ディレクトリを作成
vagrantfileを作成
vagrant イメージを、vagrant cloudを選び vagrantfileを書き換える
vagrantfileを作成 vagrant init
vagrantfileをテキストエディタで開く
vagrantfile変更箇所 Vagrant.configure("2") do |config|
config.vm.box = "(box名)"
vagrantfile詳細設定 vagrantfile詳細設定を参照。
5 vagrant構築 vagrant up
6 vagrant(ゲストOS)にログイン vagrant ssh
(コマンドプロンプトやPowershell等から)
7 ゲストOS ログイン後はLinuxコマンドで操作をするのみ。
ユーザーはvagrantなので、他のユーザーで操作をしたい場合はsudo su- USERNAMEで切り替えるなどをする。
PowerShell等でなくTeratermなどでもログインできるが、その場合は".vagrant/machines/default/virtualbox/private_key"を指定してやる必要がある。


Vagrantコマンド

vagrant up vagrant起動
vagrant halt vagrantゲストOSシャットダウン
vagrant reload vagrantゲストOS再起動
vagrant reload --provision vagrantゲストOS再起動+再構築
vagrant up --provider docker vagrant+dockerプロバイダ起動
vagrant box remove BOX/NAME 指定したboxを削除

vagrant pluginインストール

hostsやsmb(ファイル共有)などを行うための便利ツールがある。
インストール vagrant plugin install (プラグイン名)
アンインストール vagrant plugin uninstall (プラグイン名)
一覧取得 vagrant plugin list
一括アップデート vagrant plugin update

プラグインの実インストール先は下記。
  C:\Users\{USERNAME}\.vagrant.d\gems\2.7.4\gems
都合でVagrant本体をアンインストール⇒インストールした場合でも同フォルダは削除されずに残っているので、本当にクリーンインストールを行う場合は、/.vagrant.dを削除してから再インストールを行った方がよい。


プラグイン一覧

vagrant-cachier プロビジョンなどでDL済パッケージをキャッシュ
vagrant-global-status 起動済みvagrantを一覧などを行う
vagrant-host-shell ホストOS上でコマンドを記述する
vagrant-hostmanager ゲストOSとホストOSの/etc/hostsを設定
vagrant-hosts ゲストOSのhosts設定
vagrant-hostsupdater ホストOSの/etc/hostsへゲストOS情報を追加/削除
vagrant-omnibus プロビジョニングにChefを利用できる(※1)
vagrant-vbguest ホストOS/ゲストOS間のファイル共有
vagrant-vbox-snapshot スナップショット(※2)
docker-provider 【注意】Docker provider for Vagrant
vagrant-dns A plugin to manage DNS records for vagrant
vagrant-dnsmasq A Dnsmasq Vagrant plugin that manages the dnsmasq.conf file and /etc/resolver directory on your host system.
vagrant-niftycloud https://github.com/sakama/vagrant-niftycloud

【注意】現在docker-providerはバグがあるため要注意。

vagrantfile詳細設定

テンプレート) ※修正中

IPや各値は仮のものです。適宜読み替え、変更してください。
パイプ(|)はatwiki編集の都合上「全角」で記載していますが、利用時は「半角」に直してください。
ホスト名の指定 config.vm.hostname
Virtualboxのイメージ名の指定 config.vm.provider :virtualbox do |vbox|
vbox.name = "VirtualboxNAME"
end
ポートフォワーディング config.vm.network "forwarded_port", guest: 22, host: 2222
プライベートネットワーク config.vm.network "private_network", ip: "192.168.33.10"
共有フォルダ config.vm.synced_folder "./data", "/vagrant_data"
※ ホスト側Path, ゲスト側Path
プロビジョニング(外部shell) config.vm.provision "shell", path: "./shell/init.sh"
プロビジョニング(ファイルコピー) config.vm.provision "file", source: "./HOSTDIR", destination: "/GUESTDIR/."
source⇒destinationへファイルコピーする
プロビジョニング(インライン) config.vm.provision "shell", inline: <<-SHELL
(コマンド)
SHELL
メモリー設定 config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "1024"
end

Gitの共有(Vagrant(ゲストOS)先とローカルPCでのGit共有化)

ゲストOS ローカルPC
通常ファイル共有ディレクトリ <--> ローカルPCフォルダ
Git共有ディレクトリ <--> ローカルPCフォルダ

リポジトリ


サンプル



エラーシューティング

エラーシューティングにまとめています。

参考

[ 【VirtualBox】VirtualBox 6.1.4にしたらHyper-Vと共存できるようになった件 - Crieit ]
( https://crieit.net/posts/VirtualBox-VirtualBox-6-1-4-Hyper-V )

タグ:

vagrant linux
最終更新:2023年01月23日 14:42