Mac で AppStore からのインストールやアップデートをコマンドラインから実行できるようになりました。
mas-cli - Mac App Storeのシンプルなコマンドラインインターフェイス | ソフトアンテナ
コマンドラインから実行できるのであれば、当然 Ansible の Playbook にも書けることになるので、これまで homebrew (tap)からインストールするアプリは ansible、AppStore は手動でインストール、みたいなことになっていたのが Ansible に一元化できることになります。 AppStore のアプリをインストールするツールは mas (Mfac App Store) というのですが、この mas でアプリをインストールする場合、引数にはアプリ名ではなく ID を取ることになります。*1 従って、シンプルに Playbook を書くのであれば、以下のようになります。
- hosts: localhost connection: local gather_facts: no become: no vars: mas: - name: The Unarchiver id: 425424353 - name: Evernote id: 406056744 - nane: PopClip id: 445189367 tasks: # mas で AppStore のアプリをインストールする # 大容量ファイルのダウンロード等、時間がかかるタスクなので、本タスクを実行したい場合は明示的に # -e "thorough=true" を指定する # 例: ansible-playbook localhost.yaml -e 'thorough=true' - name: install appstore applications command: mas install "{{ item.id }}" with_items: mas when: thorough == "true"
command モジュールを使用しているので、このタスクを実行すると常に "changed" になってしまうのが難点。 また、mas install コマンドは、既にインストール済のソフトウェアであっても無条件でアプリをダウンロード、インストールしてしまうため、このタスクを動かしてしまうと帯域・時間を大きく消費します。 さすがに 1 GB を超えるアプリを何度もダウンロード・インストールするのは嫌なので、ここでは when 句を指定しています。このあたりの話については以下エントリで。
明示的に指定した場合にのみ Ansible のタスクを実行する - 理系学生日記
*1:アプリ名ではアプリを一意に特定できないからだと思います