Vagrant

Vagrantfile

Template

cat <<'EOF' > Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "rockylinux/9"
  #config.vm.box = "almalinux/9"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "768"
    vb.cpus = 2
  end

  config.vm.define "machine"
  config.vm.synced_folder '.', '/vagrant', disabled: true
end
EOF

network

hostname

  config.vm.hostname = "hostname"

bridge

  config.vm.define "machine" do |machine|
    machine.vm.network "public_network" , bridge: "en0: Wi-Fi"
  end

host-only network

  config.vm.define "machine" do |machine|
    machine.vm.network :private_network, ip:"192.168.255.2"
  end

port-forwarding

    machine.vm.network :forwarded_port, guest:22, host:1234, id:"ssh"

tips

Vagrant provision時ansibleの実行

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "site.yml"
  end

/vagrantにマウントしない方法

イメージによって、エラー有無がある。

  config.vm.synced_folder '.', '/vagrant', disabled: true

プラグインvagrant-vbguest

commands

# Vagrantfile作成
vagrant init

vm起動

vagrant up
vagrant up --provision
vagrant up --no-provision

provisionのみ

vagrant provision

Status取得

vagrant status

ssh接続

vagrant ssh

保存停止

vagrant suspend

halt

vagrant halt

Status取得(all)

vagrant global-status

VM破壊

vagrant destroy -f [id]
vagrant global-status --prune

パラレル実行(xargsのコマンドでパラレル実行する)

seq 2 | xargs -P2 -I@ vagrant up vm@

vagrantとSCP

vagrant ssh-config > ssh.config
scp -P 2222 -F ssh.config vagrant@localhost:/etc/redhat-release .

共有フォルダマウントできない時

# プラグインのインストール
vagrant plugin install vagrant-vbguest
# 実行
vagrant vbguest

Clean for mac command

vagrant global-status
vagrant global-status —-prune

for f in `vagrant global-status --prune | grep /Users/ | awk '{print $1}'`
do
  vagrant destroy $f -f &
done
wait
# box
vagrant box list | awk '{print $1}' | xargs -I@ vagrant box remove @ --all

# VirtualBox
VBoxManage list vms | awk '{print $1}' | xargs -I@ VBoxManage unregistervm @
rm -rf "${HOME}/VirtualBox VMs"/*

Install

brew install vagrant
# その他、VirtualBoxが必要