VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(前編)
はいどーも!
てるおです。
はいどーも!に見出しタグを使って元気感を演出しています。
今日はタイトル通りのことをしていきたいと思います。
ローカル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行ぐらいで終わるはずでしょう…(願望)
それではみなさん、おやすみなさい
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