windows7内にansibleを使ってWebサーバ、DBサーバを構築する ~Vagrantfile編~

  1. 現在のところansibleはwindowsには対応していません。
    なので、今回はvagrantでマルチマシン設定を行います。
    構築するのは下記の構成。
    ansible
    ctrl : ansibleをインストールしここからwebサーバ、DBサーバの構築を指示します。
    web : webサーバです。apache、php、mariaDB(クライアント用途)をインストールします。web→dbサーバに接続する設定をします。
    db : dbサーバです。mariaDB(サーバ)をインストールして外部から接続するように設定します。
    ※git bashをインストールしておくとlinuxのコマンドがある程度打てるようになるのでお勧めです。

  2. vagrant init行います。
    今回のテスト用にホームディレクトリにansibleというディレクトリを作成し、その中でvagrant init行います。
    ※vagrant、git bashのインストールは完了しているのが前提です。

    mkdir /c/ansible
    cd /c/ansible
    vagrant init centos71
    vi Vagrantfile
    

    上記の例ではc:\の直下に作業ディレクトリansibleを作成しました。

  3. 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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA