Mac上のAnsibleスクリプト用いてリモート上のLinux(CentOS)へcertbot(※)のインストールを試みたところ、下記のエラーメッセージを出力し処理が異常終了した。
※Let’s Encrypt認証局用のTLS/SSL証明書の入手・更新クライアント。
事象
$ ansible-playbook -i hosts xxx.yml PLAY [set up xxx on CentOS 7] **************************************************************************************** <中略> TASK [common : install Certbot] ****************************************************************************************** fatal: [192.0.2.10]: FAILED! => {"changed": false, "msg": "No package matching 'certbot' found available, installed or updated", "rc": 126, "results": ["No package matching 'certbot' found available, installed or updated"]} to retry, use: --limit @/Users/xxx/server/coin/xxx.retry PLAY RECAP *************************************************************************************************************** 192.0.2.10 : ok=3 changed=2 unreachable=0 failed=1
原因
何のことは無く、Extra Packages for Enterprise Linux (EPEL)が未インストールだった為。
解決法
AnsibleからEPELをインストールする場合は、certbotのインストールの前に、下記をymlへ追記する。
- name: install EPEL (Extra Packages for Enterprise Linux) yum: name: "{{ item }}" with_items: - epel-release
補足:上記ではepelのみyumに指定しているが、with_itemsブロック以降は先頭に-“ハイフン”を付ければ複数のパッケージを指定可能。