- 現在のところansibleはwindowsには対応していません。
なので、今回はvagrantでマルチマシン設定を行います。
構築するのは下記の構成。

ctrl : ansibleをインストールしここからwebサーバ、DBサーバの構築を指示します。
web : webサーバです。apache、php、mariaDB(クライアント用途)をインストールします。web→dbサーバに接続する設定をします。
db : dbサーバです。mariaDB(サーバ)をインストールして外部から接続するように設定します。
※git bashをインストールしておくとlinuxのコマンドがある程度打てるようになるのでお勧めです。 -
vagrant init行います。
今回のテスト用にホームディレクトリにansibleというディレクトリを作成し、その中でvagrant init行います。
※vagrant、git bashのインストールは完了しているのが前提です。mkdir /c/ansible cd /c/ansible vagrant init centos71 vi Vagrantfile
上記の例ではc:\の直下に作業ディレクトリansibleを作成しました。
-
Vagrantfileの記述
ctrlにansibleをインストール行い、webサーバ、dbサーバの構成を管理するようにします。Vagrant.configure(2) do |config|
に追記していく。
下記の設定を行うとwindows7のディレクトリとVM内のディレクトリでファイルの共有が可能になります。
前者がwindows、後者がlinux側のディレクトリ。config.vm.synced_folder "./data", "/vagrant_data"
まずはctrl
下記のように記載する。
//ctrl
config.vm.define :ctrl do |ctrl|
//ボックス名
ctrl.vm.box = "centos71"
//sshのforward設定
ctrl.vm.network :forwarded_port, guest: 22, host: 2001, id: "ssh"
//IP設定
ctrl.vm.network :private_network, ip: "192.168.33.11"
//provision実行するshell指定
ctrl.vm.provision "shell", privileged: false, path: "ctrl_setup.sh"
end
実行するshellファイルctrl_setup.shは主にansibleのインストールやsshの設定、ansibleのplaybookの実行を行うように記述しています。
内容は後述します。
次にweb。
//web
config.vm.define :web do |web|
//ボックス名
web.vm.box = "centos71"
//sshのforward設定
web.vm.network :forwarded_port, guest: 22, host: 2002, id: "ssh"
//httpのforward設定
web.vm.network :forwarded_port, guest: 80, host: 8000, id: "http"
//IP設定
web.vm.network :private_network, ip: "192.168.33.12"
end
最後にdb。
//db
config.vm.define :db do |db|
//ボックス名
db.vm.box = "centos71"
//sshのforward設定
db.vm.network :forwarded_port, guest: 22, host: 2003, id: "ssh"
//IP設定
db.vm.network :private_network, ip: "192.168.33.13"
end
すべてまとめて書くと下記のようになる。
ctrlが最下部なのはwebとdbに対してansibleのplaybookを実行するため。
Vagrant.configure(2) do |config|
config.vm.box = "base"
config.vm.synced_folder "./data", "/vagrant_data"
config.vm.define :web do |web|
web.vm.box = "centos71"
web.vm.network :forwarded_port, guest: 22, host: 2002, id: "ssh"
web.vm.network :forwarded_port, guest: 80, host: 8000, id: "http"
web.vm.network :private_network, ip: "192.168.33.12"
end
config.vm.define :db do |db|
db.vm.box = "centos71"
db.vm.network :forwarded_port, guest: 22, host: 2003, id: "ssh"
db.vm.network :private_network, ip: "192.168.33.13"
end
config.vm.define :ctrl do |ctrl|
ctrl.vm.box = "centos71"
ctrl.vm.network :forwarded_port, guest: 22, host: 2001, id: "ssh"
ctrl.vm.network :private_network, ip: "192.168.33.11"
ctrl.vm.provision "shell", privileged: false, path: "ctrl_setup.sh"
end
end