- 現在のところ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