Vagrant とは何ですか?#
Vagrantは、仮想マシン環境を管理するためのツールです。
例えば、VirtualBox を取り上げると、VirtualBox は仮想マシンを作成するためのインターフェースを提供します。Vagrant はこのインターフェースを利用して仮想マシンを作成し、Vagrant を通じて仮想マシンを管理、設定、自動インストールします。
仮想マシンのインストール#
VirtualBox#
VirtualBox
Vagrant 自体は仮想マシンの機能を提供しないため、別途インストールが必要です。Vagrant はさまざまな仮想マシン(VirtualBox、Hyper-V、VMware)をサポートしていますが、ここでは VirtualBox を選択しました。ダウンロードリンク
Vagrant を使用して仮想マシンを管理するため、VirtualBox の特別な設定は必要ありません。デフォルトのインストールで問題ありません。私は仮想マシンの保存場所(デフォルトは C ドライブ)だけを変更しました。インストール後、VirtualBox を開き、[管理]→[グローバル設定]→[一般]→[デフォルトの仮想マシンの位置] を自分の好きな場所に変更し、ウィンドウを閉じます。これ以降はほとんど使用しないでしょう。
Vagrant#
VirtualBox の設定が完了したら、Vagrant をインストールすることができます。ダウンロードリンク
ここでは Windows 64 ビット版を選択しました。インストールプロセスも簡単ですが、インストールが完了したらコンピュータを再起動する必要があります。再起動する前に、コマンドラインで環境変数を設定することができます。setx.exe VAGRANT_HOME "D:/dev/vbox/boxes"
というコマンドを実行します(引用符内のパスは自分の好きな場所に変更してください)。そうしないと、Vagrant はイメージを C ドライブにダウンロードしてしまいます。
仮想マシンの実行#
コンピュータを再起動したら、環境を実行する準備ができます。
まず、コマンドラインを開いてvagrant box add centos/7
を実行して、CentOS 7 のイメージをダウンロードします。
ダウンロードには時間がかかるかもしれませんが、その間に好きな場所にフォルダを作成し、その中にVagrantfile
というファイルを作成します。ファイルを開いて編集し、以下の内容を入力します:
# 3つの仮想マシン(c1、c2、c3)をクラスターとして定義します
Vagrant.configure("2") do |config|
# c1仮想マシンを定義します
config.vm.define "c1" do |c1|
# c1仮想マシンのホスト名を定義します
c1.vm.hostname = "centos-1"
# centos/7イメージを使用します
c1.vm.box = "centos/7"
# ネットワークの設定を定義します(bridgeの後にはネットワークの名前を記入します)
c1.vm.network "public_network", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz"
c1.vm.provider "virtualbox" do |vb|
# 仮想マシンのパラメータを設定します
vb.memory = "2048"
vb.cpus = 2
vb.name = "k3s-1"
end
end
config.vm.define "c2" do |c2|
c2.vm.hostname = "centos-2"
c2.vm.box = "centos/7"
c2.vm.network "public_network", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz"
c2.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
vb.cpus = 2
vb.name = "k3s-2"
end
end
config.vm.define "c3" do |c3|
c3.vm.hostname = "centos-3"
c3.vm.box = "centos/7"
c3.vm.network "public_network", bridge: "Intel(R) Wi-Fi 6 AX200 160MHz"
c3.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
vb.cpus = 2
vb.name = "k3s-3"
end
end
end
ここでは必要な設定のみを行いましたが、他の設定項目については公式ドキュメントを参照してください。
イメージのダウンロードが完了したら、コマンドラインで Vagrantfile がある場所に移動し、vagrant up
を実行します。
Vagrant は 3 つの仮想マシンを順番に起動します。ポートが他のプログラムに使用されていない場合、3 つの仮想マシンの SSH ポートはそれぞれ 2222、2200、2201 になるはずです。画面の出力ログを参照してください。SSH address: 127.0.0.1:2200
という行があります。
通常、3 つの仮想マシンが正常に起動しますが、私は正常な状態ではありませんでした:
ログはSSH auth method: private key
という行で数分間停止し、タイムアウトのメッセージが表示されました。問題ありません。例えば、c2 の起動が停止した場合、vagrant halt c2
、vagrant destroy c2
、vagrant up c2
の順に実行して仮想マシンを再作成するだけです。c3 がまだ起動していない場合は、最後にvagrant up
またはvagrant up c3
を実行します。
起動が成功したら、vagrant ssh c1
、vagrant ssh c2
、vagrant ssh c3
を実行して、それぞれの仮想マシンに接続できます。私は 3 つの仮想マシンに対してパスワードなしでログインする設定を行った後、Xshell で操作を行いました。
これで、3 つのサーバーからなるクラスターができました。十分な設定があれば、さらにいくつか追加することもできます。
仮想マシンは自由に操作できます。Vagrantfile があれば、vagrant up
コマンドで簡単に再構築できます。