AnsibleのGalaxyでLAMP環境を作る方法

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/

コメントを残す