こんにちは、ちゃりおです。
今回は、amazon-extras(amazonが管理しているパッケージ群)を使ってphpをインストールしてみます。
amazon-extrasのモジュールがあると楽なのですが、無かったのでshellモジュールも活用しながらやっていきます。
結論
結論から書くとこうなりました。
以下でこのplaybookの解説や、amazon-extrasの使い方について書きました。
環境
- OS: amazonlinux2
- インストール対象: php7.3
amazon-linux-extrasコマンドについて
Ansibleを書く前にamazon-linux-extrasでphpをインストール手順をおさらいします。
パッケージの一覧表示
利用可能なパッケージの一覧が表示されます。
php7.3を利用できるようです。
$amazon-linux-extras list
(抜粋)
31 php7.3 available \
リポジトリの有効化
php7.3のリポジトリを有効にします。
$amazon-linux-extras enable php7.3
もう一度listで確認すると、enableになっていることが確認できます。
$amazon-linux-extras list
31 php7.3=latest enabled \
yum.repos.dにもphp7.3のリポジトリが追加されています。
$cat /etc/yum.repos.d/amzn2-extras.repo
(抜粋)
[amzn2extra-php7.3-source]
enabled = 0
name = Amazon Extras source repo for php7.3
mirrorlist = http://amazonlinux.$awsregion.$awsdomain/$releasever/extras/php7.3/
latest/SRPMS/mirror.list
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-linux-2
priority = 10
phpのインストール
amazon-linux-extras installでインストール事もできますが
ansibleでyumモジュールを使いたいので、yumを使う方法を紹介します。
まず、どのリポジトリ経由でphpが入るか確認します。
$yum info php
Name : php
Arch : x86_64
Version : 7.3.6
Release : 1.amzn2.0.1
Size : 3.2 M
Repo : amzn2extra-php7.3/2/x86_64
amazon-extrasのレポジトリから入るようなので、インストールします。
$yum install php
$yum install enable-repo="amzn2-extras" php
$php -v
PHP 7.3.6 (cli) (built: Jun 12 2019 20:40:46) ( NTS )
ansibleで書いてみる
ansibleで書くとこんな感じです。
roleにしたりバージョンのところ変数にしたりすると汎用性が上がります。
amazon-linux-extrasの有効化は、shellモジュールを使用しました。
shellモジュールを使ったので毎回実行されてしまいますが、enableするだけなので問題ないです。
「changed_when: False」を設定したことで、Playbook実行時はOKで返ってきます。
別にchangedになっても問題はないですが、playbook実行した際に「なにか変更あったのか」とか心配にならないようにです。
phpのインストールは、ansibleのyumモジュールを使用しています。
まとめ
今回は、ansibleでamazon-linux-extras経由でphpをインストールしてみました。
普通にremiとか使ってもいいと思うのですが、amazon-extrasを使うのも良いかと思います。
ただamazon-extrasだとremiと比べてアップデートが遅いことがあるので、注意が必要です。
個人的には、shellモジュール使いたくないので、remiを使いたいところです。