VagrantでVPSホストを構築してみる
Vagrantを使ってローカルでサーバーを起動してごにょごにょしてる人は多いと思いますが、このVagrantを使ってサーバーを立てられるホスト環境を構築しています。もともとはOpenStackを構築して使おうと思ったのですが、redhatの出してるインストール「RDO」で構築するとCinderボリュームが20GBに制限されてしまうという問題を、ぐぐってもぐぐっても解決できなかったのでしょうがなくVagrantです(ぉぃ
サーバー
とりあえずサーバーは社内に転がっていた、
- Core 17(Quad Core)
- メモリ32GB
- 500GB SSD
のマシンを使用。
OS
ホストOSは、枯れているUbuntu Server 14.04 LTS。
もうそろそろ16.04 LTSで行けるかもしれないんですが、LTSのアップデートでは結構な修正点があるので、ネットをぐぐって設定とかする時にコピペが通用しないので、コピペ作業がメインの人は14.04にしておきましょう。
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "webserver" do |webserver|
webserver.vm.box = "Official_Ubuntu_14.04_AMD64"
webserver.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
webserver.vm.hostname = "webserver"
webserver.vm.provision "shell", path: "provision.sh", privileged: true
webserver.vm.network "private_network", ip: "192.168.100.101"
webserver.vm.provider "virtualbox" do |node|
node.customize ["modifyvm", :id, "--memory", "4096"]
node.customize ["modifyvm", :id, "--cpus", "2"]
node.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
end
解説
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "webserver" do |webserver|
webserver.vm.box = "Official_Ubuntu_14.04_AMD64"
webserver.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
webserver.vm.hostname = "webserver"
webserver.vm.provision "shell", path: "provision.sh", privileged: true
webserver.vm.network "private_network", ip: "192.168.100.101"
webserver.vm.provider "virtualbox" do |node|
node.customize ["modifyvm", :id, "--memory", "4096"]
node.customize ["modifyvm", :id, "--cpus", "2"]
node.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
end
このVagrantfileで、
$ vagrant up
設定が複数ある場合は、
$ vagrant up webserver
とやると、Ubuntu Server 14.04 AMD64が起動します。メモリは4GBで、CPUコアは2(仮想)で起動します。ホストのCPU稼働率の50%を超えない設定も入っています。
これで起動するとホストオンリーアダプターにはおなじみの、
10.0.2.15
が割り当てられます(おそらくeth0)。
そこに、192.168.100.101が割り当てられたNICも生成されます(おそらくeth1)。
以降は上記の、
config.vm.define "webserver" do |webserver|
で始まるブロックを複製してwebserverを新しいVPSの名前に置換すればそのままその名前で操作出来ます。
ネットワーク
この状態だと、ホストとゲスト、ゲストとゲストの通信は出来るのですがゲストに繋ぐためには一旦ホストを踏み台にする必要があります。
これがめんどくさいんですよね〜(ぉぃ
なので直接ゲストに入れるようにしようとしたんですが、入ろうとしてるマシンと同じネットワークに接続するしか手段が見つけられなかったんですね。ぐーぐる力が低いもんで。
とりあえずホスト側に、
192.168.100.1
のアダプターを生成したんですが(やりかたは「ubuntu network interfaces」とかでぐぐってください)、どうにも繋がらない。iptablesは-Fで大開放済み。とここで結構ハマってしまったんですが「行きと帰りで経路違うんじゃね?」と思い、ゲストに設定されているデフォルトゲートウェイ、
10.0.2.1
を削除して新たに、
192.168.100.1
をデフォルトゲートウェイに設定。これで普通に繋がるようになりました。
あとがき
そもそも、
public_network
で、接続しようとしてるマシンと同じネットワークに参加させるだけでも接続出来るようにはなるんですが、このVPSをルーターからDNATかまして外部に公開する予定だったので、ネットワークを分離してネットワーク毎にiptablesで制御したかったのでした。
目的が達成出来たので満足です(笑)
Author And Source
この問題について(VagrantでVPSホストを構築してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/digitarhythm/items/7ae19833899aa1e25b87著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .