本記事は、エキサイトホールディングス Advent Calendar 2023の17日目のものになります。
リンクはこちら
本記事の目的
Ubuntu22.04のEC2にPHP7.2を入れる際に必要だった操作やPlaybookなどを記載しておく。
*結構調べたのですが、同じことをやっている人があまりおらず、日本語の記事が少なかったので、Tipsとして記録しておく。
Ubuntu22.04のEC2を用意する
私は、会社からEC2作成の際にAMIが準備されています。
AWSのEC2から適当にUbuntu22.04のEC2を選択して作成してください。
特にこちらに関しては、記載しません。
Ansibleのバージョン: ansible 2.9.9
PHP7.2をインストールするPlayBookを作る
今回は、Block単位でタスクを実行してほしいと考えました。
理由は、散らばるとPHP7.2をインストールのための前準備かどうかとかもわからないからです。
- name: Install php7.2 Block
block:
- name: software-properties-common
apt:
name: software-properties-common
- name: PHP | Install Ondrej PHP PPA
apt_repository:
repo: 'ppa:ondrej/php'
update_cache: yes
- name: "Updating the repo"
apt: update_cache=yes
become: yes
- name: Installation PHP 7.2
apt:
name: php7.2
state: present
become: yes
ちょっとずつ解説していきます。
software-properties-commonについて
こちらは、その次のリポジトリppa:ondrej/php
をインストールするために追加しておく必要があります。PHPのバージョンが少し古いものをインストールするときは、このリポジトリがよく使われる印象です。
Ondrej PHP PPAについて
これは、希望したPHPのバージョンをインストールするのに必要なリポジトリになります。
PHP5.5, 5.6, 7.0とかも同様にできるらしいです。
update_cache: yes
は、インストール前にapt-get update
をしてくれます。これがないとインストールに失敗したりします。
updateは時間かかる!何度も実行したいよ!の場合は、cache_valid_time
を指定してあげると良い。
Updating the repo
まあ、正直Installation PHP 7.2
にupdate_cache: yesを追加すれば良いです。
やっていることは同じですが、このように明示的にすることもできるということを伝えたく、わざとこう書きました。
Installation PHP 7.2
じゃあ、バージョン指定をしてインストールしていきましょう。
name: php7.2
で、7.2をインストールできます。
PHP7.2は古いわ!
えーと、その通りです。ですが、プロジェクトによっては、移植で速攻で作成してほしい。一から作るというよりほぼコピー品として作成して、別サイトを作成してほしい。でも、Ubuntuのサポートしているバージョンにはしておきたい。そんな時の参考にしてください!PHPのバージョンを少し古めなものを扱うときに役に立つかと思います。
以下、Tips的なAnsibleの情報
dry runのやり方
コマンド例: ansible-playbook -i playbook.yml --check
dry runでshellを利用した結果を元にバージョンチェックを入れたい場合、shellで確認した値がskippedされることがあります。その場合、変なエラーで返ってくることがあります。(値がないよ的な...)
それを防ぐには、check_mode: no
でdry run実行時にskipしないようにすることができます!
これ結構便利!
複数タスクを同じタスクとして実行する方法
例えば、dry run実行時に、ひとつ前のタスクを実行した上で次のタスクを実行しないと成功しない場合やタスクをまとめてみやすくしたい。などをするときに使えます。
- name: block task
block:
- name: task1
...
- name: task2
...
- name: task3
エラーを無視する
タスクでエラーが発生してもとりあえず、無視して一通り確認したい!場合あると思います。
そんな時に使えます。
task:
- name: task1
...
- name: task2
...
ignore_errors: yes
- name: task3
task2でエラーが出てもtask3に移り無視します。
dry runでお試し実行の時に使えたりします。
タスクファイルの再利用方法
- import_tasks: task/install1.yml
- import_tasks: task/install2.yml
task/install1.yml
を完了後、task/install2.yml
を実行するような順になっています。
playbookは、import_tasks
だけで作り上げることもできます。
終わりに
今回は、あくまでUbuntu22.04でPHP7.2をインストールしたい
というニッチな記事になっています。
Tipsも記述しましたが、少しでも参考になったら嬉しいです。
余談
terraform周りの記事や輪読会で読んだ本についての記事も書きたいな〜
と思っています。ちまちま書いていきます。