続・Mac OSXの設定をAnsibleで9割以上自動化する
今年の1月に書いた記事では
- Ansibleをインストールの自動化
- Ansibleによるアプリのインストールや設定の自動化
の2つを行いました。
今回の記事では
- masによるアプリのインストール
- Ansibleのアップデート
- それに伴い、defaultsコマンドのv1系の実装を削除
- 終了後の通知
- その他あるべきディレクトリ構成にリファクタ
を、行いました。
1. masを使う
前回、できていなかったものが、AppStoreからアプリのインストール。
Macでの開発環境構築をできる限り自動化する。 - Qiita
という記事の中でmas-cliが紹介されていたので使ってみた。 mas-cliとはコマンドラインでAppStoreのアプリケーションをインストールできるようにしたアプリケーション。
- 署名・審査を通過したアプリケーションソースなので安全
- 自動的にアップデートされる
という2点の理由から、brew-caskよりもこちらのほうがなにかといい。
1. brewでmasをインストール
2. AppStoreのログイン情報を設定ファイルに記載
mas signin ${ID} "${PASSWORD}"
という形式でサインインしてから、インストールします。masのroleでは最初にsignoutし、signinしてからアプリのインストールを開始しています。
3. アプリのリストを記載
mas_applications: - {name: 'Slack', store_hash: 803453959} - {name: 'CCMenu', store_hash: 603117688} - {name: 'Apple Configurator 2', store_hash: 1037126344}
試しで3つだけアプリケーションのIDを列挙しました。
name
は使われないですが、hashだけだと何のアプリケーションかがわからなくなるので。
4. アップデート
自動アップデートを有効にしてれば、不要ですが
mas upgrade
で、AppStore経由でインストールしたアプリをすべてアップデートすることができます。
mas-cliを使う上でのTIPS/NOTICE
1. アプリのリストを取得する
もし、PCを乗り換えるならmasをインストールして下記のワンライナーを実行すれば、AppStore経由でインストールされているアプリ名とハッシュがgroup_varsに記載するべきフォーマットでリストされる
~/W/provisioning ❯❯❯ mas list | sed -e"s/\([0-9]*\)\ \(.*\)\ (.*/- {name: '\2', store_hash: \1\}/" - {name: 'Apple Configurator 2', store_hash: 1037126344} - {name: 'Xcode', store_hash: 497799835} - {name: 'Word Writer', store_hash: 931198233} - {name: 'Keynote', store_hash: 409183694} - {name: 'iMovie', store_hash: 408981434} - {name: 'CCMenu', store_hash: 603117688} - {name: 'Evernote', store_hash: 406056744} - {name: '1Password', store_hash: 443987910} - {name: 'Slack', store_hash: 803453959} - {name: 'Dash', store_hash: 449589707} - {name: 'LINE', store_hash: 539883307} - {name: 'GarageBand', store_hash: 682658836} - {name: 'LadioCast', store_hash: 411213048}
2. CLI経由だとインストールできないケースがある
CCMenuというアプリケーションは何故か、AppStoreからGUIで操作しないとインストールできなかった
3. AppStoreよりもbrew caskのほうがアップデートが進んでるケースが有る。
Alfredはcaskだと最新の3系がインストールされます。AppStoreからDLすると2系になってしまいました。(2016/10/08現在)
2. 通知する
MESSAGE="Provisioning is successfull, please restart or re-login" osascript -e "display notification \"${MESSAGE}\" with title \"osx-provisioing\"" say "${MESSAGE}'"
終わったあとこちらをフックしています。通知センターに通知して、sayコマンドで再起動を促すメッセージを喋らせてます。
いい感じだ〜