0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エキサイトホールディングスAdvent Calendar 2023

Day 17

AnsibleでUbuntu22.04のEC2にPHP7.2を入れてみた

Last updated at Posted at 2023-12-17

本記事は、エキサイトホールディングス 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周りの記事や輪読会で読んだ本についての記事も書きたいな〜
と思っています。ちまちま書いていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?