Vagrant入門2

=

Vagrantはコードベースで複数の仮想環境を迅速かつ再現性高く構築できるツールです。VirtualboxやDocker、AWSなど複数のプロバイダーをサポートしており、開発やテスト環境の自動化に適しています。本稿ではVirtualboxを例にVagrantの基本操作を解説します。

  1. クイックスタート

プロジェクトディレクトリの作成:

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  # 削除
  1. イメージ管理

ローカルイメージ一覧:

vagrant box list

イメージ削除:

vagrant box remove centos/7

手動インストール:

vagrant box add http://example.com/ubuntu.box --name ubuntu2004
  1. ポートフォワーディング

Vagrantfile設定:

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 3000, host: 4000
end

アクセス方法:

http://localhost:4000
  1. フォルダ同期

デフォルト同期:

config.vm.synced_folder ".", "/vagrant"

カスタム同期:

config.vm.synced_folder "../src", "/opt/app", 
  owner: "developer", 
  group: "devgroup",
  mount_options: ["dmode=755", "fmode=644"]
  1. プロビジョニング

シェルスクリプト内埋め込み:

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"
  1. ネットワーク設定

プライベートネットワーク:

config.vm.network "private_network", ip: "192.168.10.10"

パブリックネットワーク:

config.vm.network "public_network", bridge: "en0"
  1. プロバイダーコンフィグ

Virtualbox名変更:

config.vm.provider "virtualbox" do |vb|
  vb.name = "my_development_vm"
end

プロバイダー固有設定:

config.vm.provider "vmware" do |vmware|
  vmware.vmx["memsize"] = "4096"
end

タグ: バーチャルボックス アンシブル ポートフォワーディング プロビジョニング 仮想マシン管理

7月9日 18:46 投稿