macの環境構築をできるだけ自動化する

  • 17
    Like
  • 2
    Comment

この記事はドワンゴ Advent Calendar 2016 3日目の記事です。
昨日は@tanaproさんのEthereumのコントラクトで学ぶ、ポンジースキームの仕組みについて でした。

@regtanです。こんばんは。2016/10にMacBookPro(Late2016)が発表されました。発表直後はESCキーがなくなり、ジョブズの息吹を感じないという話で盛り上がっていました。ここ数週でお手元に届いたユーザーさんも多くなり、みんな大好きなapple storeの店頭でも手に入るようになりました。
最初の評判ではあまり評判の良くなかったtouch barも寿司を流していたりする様子がtwitterで見られるほどに受け入れられ、割とみんな楽しんでいるように思う今日この頃です。わたしも「iOSアプリ開発がんばるぞい」と3回唱えてからMBPを手に入れたのですが、以前のdotfileも古いし、そろそろ構築を楽にしたいと思うようになり、今回ある程度1自動化したというお話です。
最近やりたいゲーム2もあるし、12月だから少しでも予定を開けて置かないといけないので手っ取り早く新しいPCに乗り換えます。

開封してここまではやる

Xcodeのインストールはどうしても手でやる必要があります。AppStore経由でインストールすればOK。インストール後は必ず一度起動してライセンス許諾とかコンポーネントのインストールをする必要があります。
あとはシステムアップデートは開封後即やっても良いかと思います。

セットアップの実行

色々と面倒なのでコマンド一発でやってくれるようにしておきました。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/regtan/dotfile/master/setup.sh)"

あとは画面の指示に従ってYとかnとか押せばなんとかなります

何をしてるか

セットアップで何をしているかというとansibleでplaybookに基づいて各種アプリケーションのインストールを行っています。まずhomebrewをインストールし、それを利用して、他のアプリケーションをインストールするという流れです。各ステップで実行する・しないを選ぶことが可能です。

regtan/dotfile

key-pairの生成

ssh-keygen 叩いて新しいkey-pairを生成します

dotfileとplaybookのDL

自分のレポジトリからgit cloneします

homebrewのインストール

homebrewのサイトのインストールスクリプトを叩いてインストールします

Ansibleのインストール

homebrewを利用してpythonとAnsibleをインストールしてます

Ansibleの実行

playbookに基づいて各種アプリケーションのインストールを行います

dotfileの配置

dotfileを~/config/以下に配置して必要に応じてシンボリックリンクを貼ります。neovimを見たりしてもconfig/アプリケーション名の下に配置するのが流行ってるみたい。

なぜcurlでとってきて実行するの?

git cloneしてスクリプト叩いても同じじゃんといえばそうなんですが、gitコマンドすらない場合も想定しての構成です。この手のやり方が良いかどうかって議論はありますが、今回はこのような手法を取っています。

ハマったところ

githubのrawデータ配布してるところがキャッシュを持ってるということ。これまで全然気がつかなかったのですが、手元からpushしてもすぐに反映されないことがありました。適当にquery stringをつければ回避できるのでいいのですが、何度か直しているはずの内容が反映されず「あれっ?」って感じでした。
あと相変わらずansibleのエラーメッセージは難しいなという点。間違っている点がよくわからないメッセージがたくさん出るというAnsibleあるある。
超初歩的なやーつですが、公開鍵をgithubに登録してない状態ではsshでgit cloneできないことを忘れていてちょっと焦った。

やっぱり自動化すると楽

コマンド一発であとはガッキーの恋ダンス3とか欅坂46 『二人セゾン』4を見てれば大体終わります。

それでは、忙しい12月を時間を無駄にしなくてもすむ一つの参考になれば幸いです。明日は@orzngoさんです。
http://qiita.com/advent-calendar/2016/dwango
http://qiita.com/advent-calendar/2016/dwango2


  1. 完全自動化はやっぱり無理。特にdockの設定とかhotcornerの設定とかまでやりだすと厳しいと思われます。 

  2. WATCH_DOGS2とポケモンやりたい。あとFF14もやりたいし、skyrim SEもやりたいし、桃鉄もやりたい。あとファミコンクラシックが未開封になってる。(๑•﹏•) 

  3. 夢があるw 

  4. 欅坂って書けないですが衣装の裾が並んだら一直線に並んでるのはすごいなぁって思います。