エラーが出る前にやったこと
多分これが原因かなぁ。
$ 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 }}'
ということでした。