As rookie

ルーキーインフラエンジニアがインフラのこと以外も結構書いてしまうブログ

ansibleでwordpressサーバー構築する際にphpのバージョンを指定する

ansibleのgithubからwordpressのplaybookをクローンし何も考えずに実行するとPHPのバージョンが古いままだったのでPHPのバージョンを挙げるようにplaybookを書き換えた。そのときのメモです。
ベストプラクティスやクローンしたものを見るとyumリポジトリすらホストマシンからcopyモジュールを使ってマネージドマシンにコピーしている。

ってことでPHPの様々なバージョンをインストールできるremiリポジトリをマネージドマシンに登録する。ってのが一番の目的です。
まずremi.repoをホストマシンに準備します。

[remi]
name=Remi's RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55]
name=Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php55/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php56/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-test]
name=Remi's test RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/test/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/test/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-debuginfo]
name=Remi's RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-remi/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55-debuginfo]
name=Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-php55/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56-debuginfo]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-php56/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-test-debuginfo]
name=Remi's test RPM repository for Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-test/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

をremi.repoとしてroles/common/filesに保存します。
RPM-GPG-KEY-remiも同じく
filesの配下に保存します。

もう一つ必要なものがあります。
remi.repoでPHPをインストールしようとしたときに[libzip.4.so]が存在しないということでインストールできないです。
ですのでlibzip.4.soもyumでインストールするようにします。

playbookの記述

roles/common/のplaybookに

- name: Import rpm package libzip
  yum: name=http://rpmfind.net/linux/remi/enterprise/6/remi/x86_64/libzip-last-1.1.2-1.el6.remi.x86_64.rpm state=present

- name: Copy the REMI repository from files
  copy: src=remi.repo dest=/etc/yum.repos.d/remi.repo

- name: Import remi gpg-key
  copy: src=RPM-GPG-KEY-remi dest=/etc/pki/rpm-gpg

phpをインストールするplaybookに

yum: name=php state=present enablerepo=remi-php56

を追加しましょう。タスクの名前は何でもいいです。

この方法を知っていれば、ansibleで自由にリポジトリの選択ができるのではないでしょうか。