経緯
LAMPが主戦場という会社はまだまだ多くあり
Vagrant+AnsibleでLAMP構築するのも需要があるかな、
と思い個人的に利用していたものをまとめました。
何故ソースから?
バージョン指定が明確な為です。
yumでのインストールはリポジトリに左右され
バージョン指定がしにくいです。
なので指定バージョンのソースからのインストールをするようにしました。
開発環境
- MacOSX Yosemite 10.10.3
- VirtualBox 4.3.26 r98988
- Vagrant 1.7.2
- Ansible 1.9.1
手順
1. Vagrant Box追加
$ vagrant box add centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
2. gitリポジトリをclone
$ git clone https://github.com/kenzo0107/Vagrant-Ansible
こちらのGitでは以下バージョンを指定しています。
- httpd : 2.4.12
- mysqld : 5.5.39
- PHP : 5.3.6
※バージョン変更する際、URLが正しく存在するかチェックした後に変更してください。
※変数以外の箇所も異なる場合は変更するようにしてください。
3. vagrantからVM起動
$ cd Vagrant-Ansible/centos6
$ vagrant up
4. ssh-config設定をssh.configへ転記
vagrant起動後に以下実行します。
一度vagrant halt
などで停止状態にした後再度vagrant up
した場合でも以下実行してください。
$ vagrant ssh-config > ssh.config
▼ssh.configは以下のようになります。
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/kenzo/Vagrant/Vagrant-Ansible/centos6/.vagrant/machines/default/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATAL
※IdentityFile のパスはgitをcloningし、vagrant upしたパス配下のprivate_keyが指定されます。
▼ansible.cfg
Ansibleの設定ファイルに以下設定しておくとコマンドがシンプルになります。
イベントリファイル hostfile = hosts
ssh接続時の設定 ssh_args = -F ssh.config
[defaults]
hostfile = hosts
[ssh_connection]
ssh_args = -F ssh.config
▼hosts
Vagrantのnode名は変更していない限り、default
なので
defaultを指定しています。
Ansibleはこのhostsで指定したnodeにしかアクセスできません。
default
5. VM疎通テスト
それでは疎通テストしてみましょう。
$ ansible default -m ping
※defaultというnodeに対し、-m でモジュール(コマンド)指定しています。
default | success >> {
"changed": false,
"ping": "pong"
}
上記のようにsuccessと出力されれば成功!
疎通確認でき、環境構築準備が整いました。
6. Ansibleで環境構築実行
$ ansible-playbook lamp.yml
※時折、Timeoutが確認されましたが、再度実行いただくと問題なく構築されたことを確認してます。
簡単にlamp.ymlについて概要説明です。
- httpdインストール
A. httpdをビルドする為に必要な以下モジュールをインストールしビルド
- APR (Apache Portable Runtime)
- APR-Util (Apache Portable Runtime Util)
B. ドキュメントルートを /var/www/htmlに変更
C. apacheユーザ追加
D. 起動スクリプト登録/起動
- mysqlインストール
A. mysqlをビルドする為に必要な以下モジュールをインストールしビルド
- CMAKE
B. mysqlユーザ追加
C. 起動スクリプト登録/起動
- PHP
A. PHPソースをインストールしビルド
7. Apache起動確認
http://192.168.33.10にアクセスし
Working!
と表示されれば成功
8. phpからMySQLへの接続確認
http://192.168.33.10/dbtest.phpにアクセスし
Connect Success: Localhost via UNIX socket
と表示されれば成功
以上です。
その他、Vagrant+AnsibleでCentOS7にSentry構築も個人ブログですがまとめました。
今度は Vagrant+Ansibleで nginx + golang 環境構築 辺りを着手してみよう♪