廃止予定[vagrant]

本稿は廃止予定のページです。

概要

2010年3月、HashiCorp社が開発したFLOSS仮想ツール。仮想環境上にサーバを構築することが目的です。
Ansibile、Docker、Kubernetesなどと併用して利用することも多い。

インストール、設定

VagrantはOracle製VirtualBox依存で稼働するため、先にVirtualBoxのインストールが必要です。完了したら続いてVagrantをインストールしてください。またPCのBIOS/UEFIでVirtualization Technology(VT-x/IntelVT)を有効化する必要があります。
 https://www.virtualbox.org/wiki/Downloads
 https://www.vagrantup.com/

vagrantfile作成

vagrantfileは、作成したいフォルダ配下でコンソールを開き、
[[vagrant]] init
を実行するとvagrantfileのテンプレートが作成されます。全く初めての方はこれを使って
vagrant up
とするだけで仮想環境(サーバ)を作成することができます。
Vagrantは「vagrantfile」に、
 ・box(OSのISOをベースとしたイメージ)
 ・SSH設定
 ・ネットワーク設定
 ・各種アプリケーションのインストール
 ・各種設定など
を記して実行することで目的の仮想環境を作成できます。
vagrantfileはvagrantコマンドに加え、shellをインナー又は外部ファイルに書くことができます。これで各種アプリケーション(ミドルウェア等)の自動インストール、自動設定が行えます。


vagrantfile

記述する主な内容は下記のとおりです。
1.vagrant pluginのアップデートをチェック
2.configバージョン宣言
  config.vm.provider.nameでBOXに独自名を設定できる(任意)
3.取込むBOX名を指定(vagrant cloudのBOX名を記す場合が多い)
4.ネットワーク設定
  ポートフォワーディング
  プライベートネットワーク
  パブリックネットワーク
5.共有フォルダ設定(要、vagrant-vbguest、VBoxGuestAdditions)
6.ミドルウェア、アプリ等のインストール(Shell。外部ファイル化も可能)
 
もちろん上記以外の設定項目があり、系統では下記のものがある。
config.vm     .network (例、config.vm.network)
              , .hostname, usable_port_range
              , .provision, .synced_folder, .cloud_init
              , .disk, .define, .box, .provider, .usable_port_range
config.ssh
config.winrm
config.winssh
config.vagrant
config.push
など。
 

記述例:
+ ...
# vagrant plugins check
if ARGV[0] == 'up'
  plugins_dependencies = %w( vagrant-vbguest vagrant-docker-compose )
  plugin_status = false
  plugins_dependencies.each do |plugin_name|
    unless Vagrant.has_plugin? plugin_name
      puts "#{plugin_name} is required."
      system("vagrant plugin install #{plugin_name}")
      plugin_status = true
    end
  end
  #Restart Vagrant if any new plugin installed
  if plugin_status === true
    exec "vagrant #{ARGV.join' '}"
  else
    puts "All Plugin Dependencies already installed"
  end
end
 
# vagrant settings
Vagrant.configure("2") do |config|
  config.vm.provider "virtualbox" do |v|
    v.name = "VM-NAME"
  end
  config.vm.box = "centos/8"
  config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.network "public_network"
  config.vm.synced_folder "../data", "/vagrant_data"
 
  config.vm.provision "shell", inline: <<-SHELL
  # ミドル、アプリ等のインストール、設定など
  SHELL
end
 

起動

起動は「vagrant up」のみで良い。
vagrant up
初回起動はISO(BOX)イメージや関連をダウンロードしていくるので時間はそれなりに要する。
コマンドはホストOS(WindowsやMacOSなど)のコンソールから実行するが、完了したことを
示す表示が特に無く、プロンプトが戻ってきていれば完了していることになる。

2度目からShellの実行はされないが、少しでも早く起動させたいのであれば判定処理を
入れておく必要がある。

接続

基本的にターミナル(teraterm, Rsync, poderosaなど)を使って公開鍵を設定してログインする。
コマンドプロンプトやPowershellを使う場合は、
vagrant ssh
でログインすることも可能。MacOSの端末コンソールなら使い勝手良いが、
Windowsはターミナルを使うことをお薦めする。


起動後の確認

ネットワーク構成を確認するため「ip a」でを行う。(CentOS8の場合)
ループパック(lo)、ブリッジ(eth0)と、private_network(eth1)が表示され
eth1にはprivete_networkで設定したipが表示される。

だがeth1にipが上手く登録できていない場合がある。
そういった場合はゲストOS側で、shutdown -h nowか、ホストOS側でvagrant haltで落とす。
そしてvagrantfileを再確認の上で、もう1度vagrant upをして起動する。
この他VBoxGuestAdditions、plugin各種、vagrantやVirtualBox本体が
最新かどうかも確認し必要に応じてアップデート、アップグレードを行う。
最終更新:2021年11月28日 17:09