ansible でいつもの通り試行錯誤していたら、見慣れないエラーが出ました。
TASK [composer : 高速化のため、リポジトリとして https://packagist.jp を使用する] *******************
fatal: [localhost]: FAILED! => {"msg": "module (community.general.composer) is missing interpreter line"}
いつも通っていたロジックなのですが、なぜだろう。該当の箇所は以下のとおりです。
- name: 高速化のため、リポジトリとして https://packagist.jp を使用する
community.general.composer:
command: config
arguments: -g repos.packagist composer https://packagist.jp
composer_executable: /usr/bin/composer
global_command: yes
become: yes
tags: packagist
ぐぐってみると、結構深いところで起こっているエラーっぽい?
- module is missing interpreter line – running python module #40561
- Ansible “gather_facts: yes” leads to error “module (setup) is missing interpreter line”
自分で直せるほどのスキルはないので、いつもの通りワークアラウンドを探します。
まずは yum update をかけてみたけど変わらず。
エラーが起こっているのは community モジュールであり、これは追加でインストールしたところです。collection 関連の要求モジュールは以下のとおりです。
vagrant@hoge:~/hoge-deploy$ cat requirements.yml
---
collections:
- name: community.mysql
version: 2.1.0
- name: community.general
version: 3.3.1
- name: ansible.posix
version: 1.2.0
collection install し直してみます。
vagrant@hoge2:~/hoge-deploy$ ansible-galaxy collection install -r requirements.yml
ERROR! Collection file at '/home/vagrant/.ansible/collections/ansible_collections/community/mysql/MANIFEST.json' does not contain a valid json string.
なんか ~/.ansible 配下の何かがおかしいようです。このディレクトリは作った覚えはないので ansible-galaxy が作ったのでしょう。おそらく消しても大丈夫なはずです。
vagrant@hoge2:~/hoge-deploy$ rm -rf ~/.ansible
vagrant@hoge2:~/hoge-deploy$ ansible-galaxy collection install -r requirements.yml
Process install dependency map
Starting collection install process
Installing 'community.general:3.3.1' to '/home/vagrant/.ansible/collections/ansible_collections/community/general'
Installing 'ansible.posix:1.2.0' to '/home/vagrant/.ansible/collections/ansible_collections/ansible/posix'
Installing 'community.mysql:2.1.0' to '/home/vagrant/.ansible/collections/ansible_collections/community/mysql'
いったん削除してから collection を入れ直しました。その後、通常通りプレイブックを流してみたら無事に正常終了しました。めでたしめでたし。