Vagrant上にAnsibleを使ってLAMP環境を作る方法を説明します。
今回はGalaxyを使います。
手順
Vagrantは立ち上がっていると仮定して、それ以降の手順を説明する。
必要なroleをインストールする
使うroleは以下の通りです。
* geerlingguy/ansible-role-apache
* geerlingguy/ansible-role-php
* geerlingguy/ansible-role-mysql
* geerlingguy/ansible-role-composer
* geerlingguy/ansible-role-repo-remi
これらをダウンロードする。
$ ansible-galaxy install --roles-path roles geerlingguy.apache
$ ansible-galaxy install --roles-path roles geerlingggguy.php
$ ansible-galaxy install --roles-path roles geerlingguy.mysql
$ ansible-galaxy install --roles-path roles geerlingguy.composer
$ ansible-galaxy install --roles-path roles geerlingguy.repo-remi
--roles-path roles
をつけることでrolesというディレクトリ内にダウンロードされる。
たしかrolesというディレクトリがない場合は自動で作ってくれる。
playbookを作成
playbookは任意の名前で良いので今回はlamp.ymlを作成します。
touch lamp.yml
そしたらファイルの中身を変更します。
最小限良ければ以下のようになります。
---
- hosts: all
roles:
- geerlingguy.mysql
- geerlingguy.apache
- geerlingguy.php
- geerlingguy.php
- geerlingguy.repo-remi
ただこれだけだと後で設定しなくてはいけなくなる箇所が出てくると思うのでとりあえず必要そうな設定を紹介します。
---
- hosts: all
become: true
roles:
- name: geerlingguy.mysql
vars:
mysql_databases:
- name: dbname #dbの名前
collation: utf8_general_ci
encoding: utf8
replicate: 1
mysql_users:
- name: dbuser #のDBのuser名
host: localhost
password: password #DBのuserのパスワード
priv: "dbname.*:ALL" #userの権限 今回の記述でdbuserにdbnameのすべての権限を付与する
tags:
- mysql
- name: geerlingguy.apache
vars:
apache_vhosts:
- servername: "local.dev"
documentroot: "/var/www/sprix" #apacheで設定の設定キュメントルートの設定
tags:
- apache
- name: geerlingguy.repo-remi
vars:
ansible_distribution_major_version: 6 #CentOS6系という意味の6
tags:
- repo-remi
- name: geerlingguy.php
vars:
php_packages: #phpに入れたいパッケージを記述する。
- php-pdo_mysql
- php-pecl-xdebug
php_enablerepo: "remi"
php_packages_state: latest
php_install_recommends: yes
php_date_timezone: "Asia/Tokyo"
xdebug_remote_enable: On
xdebug_remote_autostart: On
xdebug_remote_host: 192.168.33.1
xdebug_remote_port: 9000
xdebug_idekey: phpstorm_xdebug #任意
xdebug_remote_connect_back: On
tags:
- php
- name: geerlingguy.composer
vars:
composer_path: /usr/local/bin/composer
composer_home_path: '~/.composer'
tags:
- composer
roles/{各role} /defaults/main.ymlにデフォルトの設定値が書かれている。
こちらを編集しても良いのだが、出来れば設定値は外に出してあげた方が良いので、必要な箇所だけ取り出してplaybookに記述したほうが良い。
investroyをダウンロードする
vagrant用のinvestroyをダウンロード
curl -O https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/vagrant.py
playbookを実行する。
ansible-playbook -i vagrant.py -s lamp.yml
roleを個別に実行したい場合
lamp.ymlで設定したtagsを使う。
phpであれば以下のようにして使う。
ex
ansible-playbook -i vagrant.py lamp.yml --tags="php"
参考サイト
- https://www.jeffgeerling.com/blog/using-ansible-galaxy
- http://knowledge.sakura.ad.jp/tech/3116/