読者です 読者をやめる 読者になる 読者になる

AnsibleでCIに使うMacProを管理する

弊社、cocos2d-xのビルド時間とかの関係でオフィスにMacPro置いて、Jenkins入れて、そこでCI回してる。

MacProでcocos2d-xやらUnityやらのCI回せるように、何人かがログイン出来る状態になってるんだけど、そのうちの一人が環境壊したり、何時の間にか状態が変わってたりするという問題があった。

問題の原因の一つは、ログイン情報を教える際に、その人の技術的な知識範囲や傾向を見極めずに教えてしまったというのがある。

そこで、MacProにログイン出来る人を最低限(僕+役員とか)にしようというのも考えたんだけど、出来るだけ全ての人に同じだけの権利が与えられている方が健全だなぁと思っているので、AnsibleでMacProの環境をプロビジョニングして、PullRequestベースでCI環境を整える事にした。

AppStoreじゃないと入れられないアプリとかはAnsibleからインストール出来ないので、そこらへんは一定割り切って管理できる部分だけAnsibleで管理する。

僕がAnsible初学者なのと、普段サーバー触らない人にも触ってもらえるように結構雑にyaml書いた。Jenkinsが入ってるMacProで通るserverspecは書いたんだけど、手元だとvagrantで建てたyosemitevmで確認してて、それに対してのserverspecはまだ書いてない。別のipのに対して同じspec使うの分からなくてまだググってない。

OSX - OS X YosemiteのVagrant Boxを作る - Qiita

YosemiteVagrant Boxはこれで作れる。便利

以下は雑にyamlとかVagrantfileとか貼り付ける。全部の学習が中途半端なまま書いてるので、こうした方がいいみたいなのがあったら教えて欲しい。

roles/base/task/main.yaml

Command Line ToolsとHomebrewのインストールは dotfiles/install.sh at master · r7kamura/dotfiles を参考に(コピペ)した。

gistf84c15f3f90a9df84d94

CIに必要なID/Passはenvchain使ってるんだけど、Ansibleのhomebrew moduleがhoge/fuga/nameみたいな書き方とか、URL指定したinstallに対応してないっぽくて、envchainリポジトリforkしてtap出来るようにしてる。

gist5c1f4bb87ecabb23f597

ほぼAnsibleチュートリアルのコピペ。