** に一致するパッケージは Ansible で利用できません

** に一致するパッケージは Ansible で利用できません

Ansible を使用してパッケージのリストをインストールしようとしていますが、何が問題なのかわかりません。

- name: Add PHP 7.2 repo
  apt_repository:
         repo: ppa:ondrej/php
         state: present
  register: ppastable

- name: install php7.2-fpm and all necessary modules
  apt: name={{ item }} state=present
  with_items:
     - php7.2-fpm
     - php7.2-gd
     - php7.2-curl
     - php7.2-mysql
     - php7.2-mcrypt
     - php7.2-mbstring
     - php7.2-xml
  update_cache: true
  when: ppastable is success

ただし、プレイブックを実行すると、次のエラーが発生します。

failed: [172.31.110.103] (item=[u'php7.2-fpm', u'php7.2-gd', u'php7.2-curl', u'php7.2-mysql', u'php7.2-mcrypt', u'php7.2-mbstring', u'php7.2-xml']) => {"changed": false, "item": ["php7.2-fpm", "php7.2-gd", "php7.2-curl", "php7.2-mysql", "php7.2-mcrypt", "php7.2-mbstring", "php7.2-xml"], "msg": "No package matching 'php7.2-mcrypt' is available"}

これをテストしているサーバーでは、すべてのパッケージをインストールできます。これは問題ではありません。何が起こっているのか、何かアイデアはありますか? Ubuntu 16.04 で Ansible 2.6.3 を実行しており、同じ OS を実行している別のシステムにもパッケージをインストールしようとしています。

答え1

受け取ったエラーの関連部分には、次の内容が記載されています。

No package matching 'php7.2-mcrypt' is available

これは、この機能が PHP 7.2 で削除されたため、対応する Ubuntu/Debian パッケージがなくなったためです。

ドキュメント州:

This feature was DEPRECATED in PHP 7.1.0, and REMOVED in PHP 7.2.0.

この機能は、外部 PECL パッケージとして引き続き利用可能です。ただし、PHP 7.2 用の PECL mcrypt パッケージがある Red Hat/Fedora とは異なり、Ubuntu/Debian パッケージ作成者はパッケージ化しないことを選択しました。古い PHP コードで必要な場合は、PECL から手動でインストールできる可能性があります。

関連情報