ハマログ

株式会社イーツー・インフォの社員ブログ

VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(前編)

ansible

はいどーも!

てるおです。
はいどーも!に見出しタグを使って元気感を演出しています。

今日はタイトル通りのことをしていきたいと思います。
ローカルPCはMac OS X 10.11.6を使用しています。
念のため、この投稿は2016年8月26日時点での情報です。

会社の色んなプロジェクトでVagrant + Ansibleでの開発環境構築してるのを習って、
自分のブログ(https://teriyakiegg.com)のローカル開発環境もXAMPPじゃなくて、Vagrant使いたいなと思ったのが本投稿のきっかけです。
ちなみに、会社のChatworkをディグっていたらVagrant導入時の会話が残っていて、
以下の記事が皆に共有されていました。

もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
http://www.slideshare.net/shin1x1/xampp-mamp-vagrant-php

VagrantでXAMPPに替わる開発環境を整備
http://14-00.com/archives/26

これを読むと、Vagrant使いたくてソワソワしてきますね。

それでは前置きはこの辺で、作業に取り掛かります!
最初にVagrantとViirtualBoxをダウンロード&インストールします。
https://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads

肝心のここからのステップですが、
わたくしこんな記事を見つけてしまいました。

『Ansible で CentOS 6.5 に WordPress + Nginx + PHP-FPM 環境をさくっと構築(Vagrantバージョン & さくらのVPSバージョン)』
http://akiyoko.hatenablog.jp/entry/2014/05/31/204914

なんということでしょう、
今回の投稿とまるで一緒の内容なのでは..?!
実はこの記事の通りにやってもうまくいかなかったので、
今回の投稿を書こうと思ったという経緯があります…

ということで、
以降はこの記事の中でどこにつまづき、どうやって解決したかを書きまス。

まず、3. 仮想マシンを起動
ここで vagrant up がエラーでうまくいきませんでした。
ただこれは既に会社でぶつかったことのある問題だったので、
以下の記事を参考に回避しました。

『Vagrant 1.8.5でLinux boxをvagrant upするとエラーが出る件について』
http://stknohg.hatenablog.jp/entry/2016/07/26/190330

そしてズバリ、4. Ansible Playbook を GitHub からクローン
ここのクローンした後がよく分からなくなって爆発しました。

会社でVagrant + Ansible使う時はホストマシン(Mac)にAnsibleをインストールしなかったのに、
Ansibleをインストールしないとansibleコマンドは叩けないぞ?!というのが混乱の元でした。
そして見つけたのが以下の記事。

『Vagrant + Ansible で開発環境を作るなら ansible_local プロビジョナがいい!』
http://blog.shin1x1.com/entry/ansible_local-provisioner-in-vagrant

ansible_local、
こいつを使えばホストマシンにansibleインストールする必要がないんですね。
ということで嬉々としてVagrantfileの中身を変更。

config.vm.provision "ansible_local" do |ansible|
 ansible.playbook = "site.yml"
end

時は流れ、

config.vm.provision "ansible_local" do |ansible|
ansible.limit = "wordpress-server"
ansible.verbose = true
ansible.playbook = "site.yml"
ansible.inventory_path = "hosts"
end

最終的にVagrantfileはこうなりました。

ansible.limit = "wordpress-server"
ansible.inventory_path = "hosts"

この二つはplaybookを実行するhostが見つからないよというエラーが出たので追加しました。

ansible.verbose = true

これを入れとくとログがより詳細に出て助かります。

時は更に流れ…

[Errno 111] Connection refused

…ここで鬼のハマりをくらいました。

なぜかansibleが192.168.33.10にsshで接続できてない様子…(この結論に辿り着くまでも遠かった..)

ちなみにエラー回避のため色々試す度にvagrant destroyしてvagrant upしてたのですが、
vagrant provisionでprovisionのとこだけ実行できるのが便利でした。

ホストPC(Mac)から仮想環境へのsshでの接続は ssh vagrant@192.168.33.10で普通に接続できる…
ということは..?

『Ansibleでsshユーザを指定する』
http://qiita.com/kiarina/items/397b12c56aea83669286

これの記事を参考にhostsファイルを以下のように変更したところ、エラーメッセージが変わった..!

[wordpress-server]
192.168.33.10 ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

エラーメッセージ↓

Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.

おおおお、いけそう!
ホストキーチェッキングが有効になってるからパスワードを使ってのsshログインができないんですね!
ということでAnsibleの設定ファイルを変更します。

『Vagrant (4) VagrantでAnsibleを利用する』
http://techblog.clara.jp/2015/01/vagrant-4-ansible-on-vagrant/

Ansible の設定ファイル(ansible.cfg)は、Vagrantfile と同じディレクトリに置いておくと参照される、
というのがこの記事のおかげでわかりました。
ゲストサーバーにansibleがインストールされると、設定ファイルのansible.cfgは/etc/ansible/配下に置かれるので、
これをコピーしてホストPCのVagrantfile と同じディレクトリに置き、
[defaults]の下らへんに
host_key_checking = Falseを追加して再トライ!!!ホストキーチェッキング無効!!

You need to be root to perform this command.\n”, “rc”: 1, “results”: [“Loaded plugins: fastestmirror, versionlock\n”]

まだエラー出るけどよしいける!!
rootでログインすればいいですね?!

hostsファイルのユーザー指定のところをrootに変更して再再トライ。

キターーーーーー!

けど、MySQLのインストールで若干failしてる..
しかしゴール目前…!

The conditional check ‘ansible_selinux.status == \”enabled\”‘ failed.

これは元々参考していた記事でも言及されてるやつでした..!

「ううう。
SELinux が disable だとエラーになってしまうようです。」

https://github.com/akiyoko/ansible-examples/commit/9a981839e1c81721466041ae8ae26f5431d4c73b
ここのgithubに書いてある通りにtaskファイル達を変更して再再再トライ。

キターーーーーー!!!!!!!!!!!

今度こそ遂にきました..!!!
ブラウザからhttp://192.168.33.10/にアクセスするとwordpressインストール画面が表示されました..!
参考にしていた記事もここで終わっていてよし満足、と言いたいところですが、
肝心の自分のブログをこの環境で再現してみる、という最終タスク残ってます。
いやしかし、ここまで来たらもう大丈夫でしょう…フフフ…

完全に長くなってしまったし、
キリが良いのでここまでを前編とし、
以降は後編として別に投稿したいと思います。
後編はきっと10行ぐらいで終わるはずでしょう…(願望)

それではみなさん、おやすみなさい

中編→https://blog.e2info.co.jp/2016/08/31/vagrant%E3%81%A8ansible%E3%81%A7%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%81%AEcentos6-5%E3%81%ABwordpress%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%EF%BC%81web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AFn-2/

Posted by てるお
twitter @teriyakiegg
site https://teriyakiegg.com

【参考記事】
Ansible コトハジメ http://qiita.com/seizans/items/54da2077ac8e2dcf5d6f
Ansibleのドキュメントを読んでみたメモ http://qiita.com/okochang/items/f264825e538dbce5dfac
AnsibleでHost Key Checkingを無効にする http://qiita.com/toshiro3/items/e380ac6c4e31e7588e19

ansiblevagrantWordpress

  teruo   2016年8月28日


関連記事

PHPのPSRについて

こんにちは、かねこです。 プログラムの話を書きます。 PHPのコーディング規約に…

Laravel 8.* のフォームリクエストでバリデーションチェック済みの値を整形してみる

突然ですが、フォームリクエストでバリデーションチェック済みの値を整形する必要に出…

Laravel5.4(5.3?)のメール送信

Laravel5.0とか5.1とかあたりでは、クロージャを利用してメール送信のプ…


← 前の投稿

次の投稿 →