Vagrant


高速化

Memo/VirtualBox#z5912edd


rootパスワード


WSLでの問題

WSL2でupがsshで止まる

記事:


WSL2でsynced_folderが機能しない


forwarded_port: ポートフォワード


手動で消したVMをvagrant global-statusからも消す

手動でVMを消したりすると、「global-status」には残り続ける。
「.vagrant/」や「~/.vagrant/」に管理ファイルがある。

Vagrantfileがある場所以外からでも実行できる。

vagrant global-status --prune

Vagrantfile内


引数の取得


デバッグ


pluginの自動インストール


KVM用仮想マシンの作成

Linux上ではVirtualBoxよりKVMを使った方が起動等が早い。


構築済み環境のコピー

初期構築に時間がかかる場合、初期構築済みのboxを保存する事で時間を短縮できる。


cloud-initを使う


local-exec: ホストOSで実行


yamlで複数VMの構築


プラグイン


ssh経由でのコマンド実行


sshでの接続


Ansibleを使う

shellより楽に設定できる。


/vagrantディレクトリが空の場合

Vagrant box centos/7 - Vagrant Cloud を使った場合、ホストOSから見た「/vagrant」が空の場合がある。


コマンドラインオプション

# ヘルプ
vagrant -h

# Vagrantfileの検証
vagrant validate

# vagrantの状態
vagrant status

# 起動
vagrant up

# 一時停止、スリープ
vagrant suspend

# suspend状態からの復帰
vagrant resume

# Vagrantfileの変更反映(halt -> up)
vagrant reload

# provision部分の再実行(shell, ansible部分だけの実行)
vagrant provision

# 電源off
# 裏でVMが動いていると重いので、使い終わったら停止したほうが良い
vagrant halt

# vmの削除. boxのイメージは残ったまま
vagrant destroy

インストール


macOS

brew install virtualbox
brew install vagrant

WSL環境

  1. Memo/Windows/PackageManagement#y905b7e1 でWindowsアプリとして、VirtualBoxのインストール
  2. WSLのUbuntu上でvagrantのインストール。Download - Vagrant by HashiCorp で最新バージョンを確認
    VAGRANT_VER=2.2.16
    wget https://releases.hashicorp.com/vagrant/${VAGRANT_VER}/vagrant_${VAGRANT_VER}_x86_64.deb
    sudo apt install ./vagrant_${VAGRANT_VER}_x86_64.deb
    
    vagrant -v
    Vagrant 2.2.16
  1. bash用の環境設定
    cat ~/.bash.d/vagrant-wsl.sh
    export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"
    export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
    export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/c/local/home/${USER}/vagrant"
    
    chmod +x ~/.bash.d/vagrant-wsl.sh
    source ~/.bash.d/vagrant-wsl.sh
  2. ruby warningを抑えるために、/etc/wsl.confの設定。Memo/Windows/10/WSL#bef978d4
  3. pluginの追加
    vagrant plugin install vagrant-vbguest

centos/7

mkdir ~/vagrant
cd vagrant
vagrant init centos/7

vim Vagrantfile
--
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.56.101"
  config.vm.synced_folder ".", "/vagrant"
  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.memory = "512"
  end
end
--

vagrant up
vagrant status

vagrant ssh

[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
exit

vagrant halt

centos/7 + nginx

  1. 例: CentOS 7のboxを追加して、nginxをインストール
    # Vagrantfileを作成。テンプレートを作成してくれる。1ディレクトリに1ファイル。
    vagrant init centos/7
    
    # 適当にカスタマイズ
    cat Vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
      config.vm.box = "centos/7"
      config.vm.network "forwarded_port", guest: 80, host: 18080
      config.vm.network "private_network", ip: "192.168.56.101"
      config.vm.provider "virtualbox" do |vb|
         vb.gui = false
         vb.memory = "512"
      end
      config.vm.synced_folder ".", "/vagrant"
      config.vm.provision "shell", inline: <<-SHELL
        yum install -y vim epel-release
        yum install -y vim nginx
        service nginx restart
        chkconfig nginx on
      SHELL
    end
    
    # Vagrantfileの検証
    vagrant validate
    Vagrantfile validated successfully.
    
    # 起動。初回は時間がかかる。「.vagrant/」「.vagrant.d/」ディレクトリができる 
    vagrant up
    
    # ステータスの確認
    vagrant status
    ...
    default                   running (virtualbox)
    
    # sshでのログイン
    vagrant ssh [default]
    [vagrant@localhost ~]$ pwd
    /home/vagrant
    
    [vagrant@localhost ~]$ exit
  2. http://192.168.56.101/ を開いてnginxのデフォルトページが表示されるはず

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-11-17 (水) 12:36:39