インフラ

Ansibleでamazon-extrasを使ってphpをインストールする

こんにちは、ちゃりおです。

今回は、amazon-extras(amazonが管理しているパッケージ群)を使ってphpをインストールしてみます。

amazon-extrasのモジュールがあると楽なのですが、無かったのでshellモジュールも活用しながらやっていきます。

ちゃりお
ちゃりお
ansibleでamazon-extrasを使う方法についてです

Contents

結論

結論から書くとこうなりました。
以下でこの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を使いたいところです。

php_nginx
amazonlinux2にnginx + php-fpm(php7.3)をインストールしてみるこんにちは、ちゃりおです。 いままでapacheを使う機会が多く、nginxを使ったことがありませんでした。 最近、nginxを初めて...
ansible28yum
[Ansible] "yum lockfile is held by another process "エラーの対処法こんにちは、ちゃりおです。 yumモジュールを使って複数のパッケージをインストール際に、"yum lockfile is held b...
【Ansible】playbookを分割してユーザ作成・グループ作成をする以前、ユーザの作成をやってみたのですが、今回はplaybookを分けてやってみます。 playbookを分けると、再利用性や可読性が高...

Amazonで「Ansible」の本をみてみる!!