=
Vagrantはコードベースで複数の仮想環境を迅速かつ再現性高く構築できるツールです。VirtualboxやDocker、AWSなど複数のプロバイダーをサポートしており、開発やテスト環境の自動化に適しています。本稿ではVirtualboxを例にVagrantの基本操作を解説します。
- クイックスタート
プロジェクトディレクトリの作成:
mkdir my-vagrant-env
cd my-vagrant-env
初期化処理:
vagrant init
生成されるVagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "base"
end
特定のイメージ指定:
vagrant init centos/7
カスタムURLの使用:
vagrant init custom-box http://example.com/boxes/centos7.box
生成されるVagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "custom-box"
config.vm.box_url = "http://example.com/boxes/centos7.box"
end
起動コマンド:
vagrant up
プロバイダーの指定:
vagrant up --provider vmware
操作コマンド一覧:
vagrant reload # 再起動
vagrant ssh # SSH接続
vagrant halt # 終了
vagrant destroy # 削除
- イメージ管理
ローカルイメージ一覧:
vagrant box list
イメージ削除:
vagrant box remove centos/7
手動インストール:
vagrant box add http://example.com/ubuntu.box --name ubuntu2004
- ポートフォワーディング
Vagrantfile設定:
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 3000, host: 4000
end
アクセス方法:
http://localhost:4000
- フォルダ同期
デフォルト同期:
config.vm.synced_folder ".", "/vagrant"
カスタム同期:
config.vm.synced_folder "../src", "/opt/app",
owner: "developer",
group: "devgroup",
mount_options: ["dmode=755", "fmode=644"]
- プロビジョニング
シェルスクリプト内埋め込み:
config.vm.provision "shell", inline: <<-SHELL
apt update && apt install -y nginx
SHELL
外部ファイル参照:
config.vm.provision "shell", path: "setup.sh"
Ansible使用例:
config.vm.provision "ansible" do |ansible|
ansible.playbook = "deploy.yml"
end
強制実行設定:
config.vm.provision "shell", inline: "echo 'Setup complete'", run: "always"
- ネットワーク設定
プライベートネットワーク:
config.vm.network "private_network", ip: "192.168.10.10"
パブリックネットワーク:
config.vm.network "public_network", bridge: "en0"
- プロバイダーコンフィグ
Virtualbox名変更:
config.vm.provider "virtualbox" do |vb|
vb.name = "my_development_vm"
end
プロバイダー固有設定:
config.vm.provider "vmware" do |vmware|
vmware.vmx["memsize"] = "4096"
end