Ansibleはそのシンプルさゆえに、brewやgemなどによるMacの開発環境構築にも利用されることが多かったですが、Ansible 2からosx_defaultsという、Macのほぼあらゆる設定を変更できるdefaultsコマンドを扱えるモジュールが使えるようになりました。
細かなMacの設定項目もこれでプロビジョニングしやすくなるので、これで作っておけば新しいMacを買った時も設定を手間なく受け継げます。会社で一度に多くのMacを導入するときとかすごく便利なんじゃないでしょうか。
osx_defaults - osx_defaults allows users to read, write, and delete Mac OS X user defaults from Ansible — Ansible Documentation
http://docs.ansible.com/ansible/osx_defaults_module.html
以前はこんなふうにゴリゴリ書いていたところを・・・
- name: Check Dock
shell: "defaults read com.apple.dock | grep autohide > /dev/null && test `defaults read com.apple.dock autohide` -eq 1; echo $?"
register: is_autohide
changed_when: is_autohide.stdout != '0'
- name: Autohide Dock
shell: "defaults write com.apple.dock autohide -int 1"
notify: Restart Dock
when: is_autohide.stdout != '0'
こんな風にとてもシンプルに書けるようになりました。
- name: Autohide Dock
osx_defaults: domain=com.apple.dock key=autohide type=bool value=true
notify: Restart Dock
コミットログ見るとホントものすごい量を減らせました。
GitHub
https://github.com/ikuwow/mac-provision/commit/e9bcff7c411a410875bb070854dfe9d6e2226ee8
使い方としては、変えたい設定とそれに対するdefaultsコマンドを作って、それをAnsibleに書きなおすという感じでしょうか。書かなきゃいけない量が減るだけで、defaultsコマンドはやっぱり知らないとダメですね。というかChefでもPuppetでもこの点は同じですね。
実際にやってみると、データ型の違いでエラーが出ることが多くて悩まされます。今後より使いやすくなってくれることを期待します。
それにしてもAppleさん、defaultsで設定できる項目のドキュメントとかは出してくれないものでしょうか。