前回のDocker Machineベタに3つVagrantfileを記述してVM作ったけど、 絶対にもっちょい楽な方法あるよなーと思って調べてみたらやっぱりあった。
単一のVagrantfileファイルで複数台を管理できるっぽい。
複数のVMを用意するには…
複数ホストを用意したいような状況の場合、
どうやらVm.configure(2)
内で
config.vm.define "master" do |server| server.vm.network "private_network", ip: "192.168.33.10" end
みたいな感じの記述を足していけば良いらしい。
中にホスト固有の設定を記述するので、今回であればそれぞれのIPを指定しておく。
プロビジョニング
Vagrantfileを読んでみたら、どうやら実行しておきたいコマンドを記述しておくことができるらしい。
全部で必要な処理はconfig以下、個別のVMで必要なことは先の処理のserverの中へ記載する。
config.vm.provision "shell", inline: <<-SHELL sudo yum update sudo yum install -y net-tools sudo firewall-cmd --permanent --add-port=2376/tcp sudo firewall-cmd --reload SHELL
実際の動きをログで見る限りだと、先に全体処理を行ってから個別の処理をやってくれるみたいだ。
書こうと思えばいくらでも書けそうだけど、 あまり複雑なことをやるならAnsibleとかを検討したほうが良さそう。
VMだけじゃなくて実サーバにも流用できるしね。
- 作者: Lorin Hochstein,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/04/16
- メディア: 大型本
- この商品を含むブログを見る
こっちはこっちで別途勉強していきたいところ。
Vagrantfile
最終的には以下の形で。
CentOS7のマシンを3台用意する。
それぞれに連番のIDを振り、共通での処理と管理用のmasterだけ開けるポートを記載している。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "CentOS7" config.vm.box_url = "https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box" config.vm.define "master" do |server| server.vm.network "private_network", ip: "192.168.33.10" server.vm.provision "shell", inline: <<-SHELL sudo firewall-cmd --permanent --add-port=3376/tcp sudo firewall-cmd --reload SHELL end config.vm.define "node1" do |server| server.vm.network "private_network", ip: "192.168.33.11" end config.vm.define "node2" do |server| server.vm.network "private_network", ip: "192.168.33.12" end config.vm.provision "shell", inline: <<-SHELL sudo yum update sudo yum install -y net-tools sudo firewall-cmd --permanent --add-port=2375/tcp --add-port=2376/tcp --add-port=4789/udp --add-port=7946/tcp --add-port=7946/udp sudo firewall-cmd --reload SHELL end
使い方
単体の場合はディレクトリ直下でvagrant ssh
という風にやっていたのを、
記述した名前を用いてvagrant ssh master
とかvagrant ssh-config node1
とかやれば個別に操作できる。
これでサクッと検証用のVMのネットワークを構築できた。
1コマンドなので気軽に作り壊しできるのが良い。
Dockerとかに比べれば流石に時間はかかるのだが、 コンテナでは検証できないような事案もあるわけで、 これはこれで非常に活用しどころが多そう。
- 作者: 新原雅司
- 出版社/メーカー: 技術評論社
- 発売日: 2013/09/12
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
ちなみに今やろうとしているのはDocker Machine/Docker Swarmのマルチホストネットワークの検証なんだけど、 CentOS7だとスルッとは動作してくれないところが多く、ちょっと心が折れかかってる。
個人でやるならUbuntu使いたいところだけど、会社の案件だからそう気楽にはいかないしなあ。