Vagrantで複数ゲストOSを立ててみる
やりたいこと
Vagrant
で複数ゲストOSを作って更にPostgreSQLをインストールしたい。
VagrantのVersion
以下の通りです。
➜ ~ vagrant -v Vagrant 2.2.0
Vagrantfileを作ってみる
以下のようにしました。
ポイントは以下です。
config.vm.define
のところを作成するゲストOS分定義します- 今回は3つのゲストOSを定義し、それぞれdb1, db2, db3と割りふっています
- 今回はCentOS7なので、
config.vm.box = "centos/7"
で共通的に定義します - sshで繋ぐことを考慮して、ゲストOSごとにIPアドレスを分けます
- ゲストOS作成後のスクリプトとして、以下2つを定義し、
xxx.vm.provision
で読みこませます- yumのアップデートを行う
$yum_script
- PostgreSQLのインストール、初期セットアップを行う
$postgresql_script
- yumのアップデートを行う
# -*- mode: ruby -*- # vi: set ft=ruby : $yum_script = <<EOF yum update -y EOF $postgresql_script = <<EOF yum -y localinstall https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm yum -y install postgresql10-server /usr/pgsql-10/bin/postgres --version /usr/pgsql-10/bin/postgresql-10-setup initdb EOF Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.define :db1 do |db1| db1.vm.network "private_network", ip: "192.168.33.10" db1.vm.provision "shell", inline: $yum_script db1.vm.provision "shell", inline: $postgresql_script end config.vm.define :db2 do |db2| db2.vm.network "private_network", ip: "192.168.33.11" db2.vm.provision "shell", inline: $yum_script db2.vm.provision "shell", inline: $postgresql_script end config.vm.define :db3 do |db3| db3.vm.network "private_network", ip: "192.168.33.12" db3.vm.provision "shell", inline: $yum_script db3.vm.provision "shell", inline: $postgresql_script end end
vagrant up
うまく出来ました。yumアップデート、postgresqlインストールも出来ていい感じです。
あとはスクリプトをもうちょっと整理したりすると良さそう。
ここまでくるとChefとかAnsible使ったほうがいいのではないかなと思うけれども。