linuxサーバー構築標準教科書をWindows10上で学習するため、Vagrantで仮想環境を作成した時のメモです。
この教科書の想定している実習環境は、講師と受講生2名で計3名、それぞれマシンが1台と想定されているので、一つのPCの上に仮想マシンを3台立ち上げます。
また、実習環境では、CentOSのバージョン6.2が利用されていますが、ここでは、バージョン6.7をインストールしています。
VirtualBox
インストールしていない場合はインストールします。
Vagrant
インストールしていない場合はインストールします。
Vagrantの操作については、下記に目を通しておきます。
学習用のフォルダの作成
学習用のvagrantを展開するフォルダを作成します。
ここでは、cドライブ直下に、three_vms
作成しています。
C:\Users\user>cd C:\ C:\>mkdir three_vms C:\>cd three_vms
Vagrantの初期化
vagrantのinit
コマンドを実行します。
C:\three_vms>vagrant init bento/centos-6.7
C:\three_vms
にVagrantfile
が作成されます。
Vagarntfileの編集
エラーが出る部分があるので、変更している箇所がありますが、基本的には下記のスクリプトを利用させていただきました。
Vagrantで複数の仮想マシンを立ち上げる マルチマシン(Malti-Machine)設定
ちなみに、Vagrantfileはrubyで書かれているので、rubyをあまり知らない(私の)場合は、さらっと下記を眺めさせていただきました。
C:\three_vms
のVagrantfile
をエディタで開き、下記のように編集します。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "bento/centos-6.7" config.vm.box_url = "https://app.vagrantup.com/bento/boxes/centos-6.7" # 1台目管理マシン(マシン名:teacher) config.vm.define "teacher" do |centos| centos.vm.hostname = "teacher.centoshost" # 共有フォルダを3つのマシンで共有されると困るので使わない。 centos.vm.synced_folder ".", "/vagrant", disabled: true # "forwarded_port"を指定でhostの2222ポートへのアクセスがguestの22ポートへ転送。 centos.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2222 # "private_network"を指定しホストOSからのみアクセス可。 # "virtualbox__intnet"オプションでprivate networkをvirtualboxのinternal networkに指定。 centos.vm.network "private_network", ip: "192.168.33.10", virtualbox__intnet: "intra" end # 2台目 マシン名:sutudent1 config.vm.define "sutudent1" do |centos| centos.vm.hostname = "sutudent1.centoshost" centos.vm.synced_folder ".", "/vagrant", disabled: true centos.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2223 centos.vm.network "private_network", ip: "192.168.33.101", virtualbox__intnet: "intra" end # 3台目 マシン名:student2 config.vm.define "student2" do |centos| centos.vm.hostname = "student2.centoshost" centos.vm.synced_folder ".", "/vagrant", disabled: true centos.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2224 centos.vm.network "private_network", ip: "192.168.33.102", virtualbox__intnet: "intra" end end
仮想マシンの起動
仮想マシンを起動します。
C:\three_vms>vagrant up
時間がかかりますが、3台の仮想マシンが起動し、それぞれが通信可能な状態となります。
まずは、vagrant ssh
でteacher
にログインして、ping
を打ってみます。
C:\three_vms>vagrant ssh teacher [vagrant@teacher ~]$ ping -c 4 192.168.33.101 PING 192.168.33.101 (192.168.33.101) 56(84) bytes of data. 64 bytes from 192.168.33.101: icmp_seq=1 ttl=64 time=2.01 ms 64 bytes from 192.168.33.101: icmp_seq=2 ttl=64 time=1.15 ms 64 bytes from 192.168.33.101: icmp_seq=3 ttl=64 time=1.11 ms 64 bytes from 192.168.33.101: icmp_seq=4 ttl=64 time=1.06 ms --- 192.168.33.101 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3007ms rtt min/avg/max/mdev = 1.066/1.335/2.012/0.394 ms
sshでログインできるようにする
いつの間にか、コマンドプロンプトがssh
コマンドでssh接続ができるように進化していたので、その設定をします。
ssh-config
コマンドでsshの設定を確認します。表示されたHost以降をテキストエディタにコピペしておきます。
[vagrant@teacher ~]$ exit logout Connection to 127.0.0.1 closed. c:\three_vms>vagrant ssh-config Host teacher HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile c:/three_vm/.vagrant/machines/master/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL Host student1 HostName 127.0.0.1 User vagrant Port 2223 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile c:/three_vm/.vagrant/machines/node01/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL Host sutudent2 HostName 127.0.0.1 User vagrant Port 2224 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile c:/three_vm/.vagrant/machines/node02/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
sshの設定を保存します。C:\Users\user\.ssh
、つまり自分のホームフォルダ直下の.sshというフォルダに空のconfig
ファイルを作成します。
c:\three_vms> cd %homedrive%%homepath%\.ssh C:\Users\user\.ssh> type nul > config
このconfig
ファイルをエディタで開いて、先ほどコピペしたHost以降の内容を貼り付け、保存します。
これで、コマンドプロンプトから、vagrant ssh
ではなく、ssh
コマンドで仮想マシンに接続できるようになりました。試しに、別のコマンドプロンプトを2つ開いて、それぞれ接続してみます。
C:\Users\user>ssh teacher [vagrant@teacher ~]$
C:\Users\user>ssh student1 [vagrant@sutudent1 ~]$
接続できました。
接続が確認できたので、仮想マシンを停止しておきます。
c:\three_vms>vagrant halt