エラーが出る前にやったこと
多分これが原因かなぁ。
$ brew update
ここで、
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
するようにメッセージが出たで素直に従う。ただ、これはエラーには関係ないかな、多分。
ついでに $ brew upgrade したり、 Docker のアップデートなどを行った。
エラー内容
Mac のアプリケーションを ansible で管理しているのだけど、実行したところ、エラー
TASK [homebrew cask packages install] ******************************************
failed: [localhost] (item={'name': 'aerial'}) => {"ansible_loop_var": "item", "changed": false, "item": {"name": "aerial"}, "msg": "Warning: Cask 'aerial' is already installed.\n\nTo re-install aerial, run:\n brew reinstall aerial"}
こんなのが、Ansible で設定している item の数だけ出てくる・・・
Warning: Cask 'aerial' is already installed
ううん?
こっからが長い旅路だった、2時間くらい?
ちなみに aerial ってのは綺麗なスクリーンセーバーアプリ。
設定を抜粋するとこんな感じ
homebrew_cask_packages:
- name: aerial
- name: alfred
- name: appcleaner
- name: homebrew cask packages install
homebrew_cask: name={{ item.name }} state=installed
# ※1 GUIツールをインストールする場所を `/Application` に固定
environment:
HOMEBREW_CASK_OPTS: "--appdir=/Applications"
with_items: '{{ homebrew_cask_packages }}'
調べて分かったこと
brew で GUI アプリをインストールするときのコマンド
brew cask install Fooってのは deprecated 、非推奨だった現在は
brew install --cask Foo、cask はオプション引数みたいな感じになったAnsible で
brew caskする plugin であるhomebrew_caskはbrew cask install Fooの形式に対応していないbrew cask install Fooの形式に対応しているプラグインはcommunity.general.homebrew_cask- 名前空間を示すものがついた
このプラグインをインストールするコマンド
$ ansible-galaxy collection install community.general
プラグインインストール後の設定
- name: homebrew cask packages install
community.general.homebrew_cask:
name: "{{ item.name }}"
state: 'installed'
install_options: 'appdir=/Applications'
with_items: '{{ homebrew_cask_packages }}'
ということでした。