LoginSignup
13
14

More than 5 years have passed since last update.

osx_defaultsモジュール (from Ansible 2) でMacのプロビジョニングが簡単になってすごい便利

Posted at

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で設定できる項目のドキュメントとかは出してくれないものでしょうか。

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14