yukofebの日記

個人的な技術メモ。

Ansibleを使ってMacBook Airのセットアップをする

新しいMacBook Airを購入したタイミングで以下の記事を発見してしまった。
Mac の開発環境構築を自動化する (2015 年初旬編) - t-wadaのブログ
ということで、触発されたのでやってみる。実は初Ansibleです。

事前準備

まずはセットアップ前にAnsible実行のためのコードを書いておく。

ということでまずは最低限のものだけ入れるようにしたのがこちら。
yukofeb/AnsibleLocalProvisioning
このコードを使ってMacにインストールしていく。

インストール

XCodeコマンドツールインストール

$ sudo xcodebuild -license
$ xcode-select --install

homebrewインストール

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew doctor
// option
$ brew update

Ansibleインストール

$ brew install ansible
$ brew install python

gitインストール

$ brew install git

githubレポジトリをクローン

$ git clone git@github.com:yukofeb/AnsibleLocalProvisioning.git
$ cd AnsibleLocalProvisioning

Ansible実行
一気に入るからかなり楽!

$ HOMEBREW_CASK_OPTS="--appdir=/Applications" ansible-playbook -i hosts -vv localhost.yml
No config file found; using defaults
1 plays in localhost.yml

PLAY ***************************************************************************

TASK [tap homebrew] ************************************************************
changed: [localhost] => (item=homebrew/binary) => {"changed": true, "item": "homebrew/binary", "msg": "added: 1, unchanged: 0"}
changed: [localhost] => (item=homebrew/dupes) => {"changed": true, "item": "homebrew/dupes", "msg": "added: 1, unchanged: 0"}
changed: [localhost] => (item=caskroom/cask) => {"changed": true, "item": "caskroom/cask", "msg": "added: 1, unchanged: 0"}

TASK [update homebrew] *********************************************************
ok: [localhost] => {"changed": false, "msg": "Homebrew already up-to-date."}

TASK [install homebrew-packages] ***********************************************
changed: [localhost] => (item={u'name': u'vim'}) => {"changed": true, "item": {"name": "vim"}, "msg": "Package upgraded: vim"}

特につまづきポイントはなかったけど、virtualboxのインストールが失敗してしまった。
下記のダウンロードURLを直接叩くとダウンロードできるので、なぜ失敗したんだろう。。

failed: [localhost] => (item={u'name': u'virtualbox'}) => {"failed": true, "item": {"name": "virtualbox"}, "msg": "Error: Download failed on Cask 'virtualbox' with message: Download failed: http://download.virtualbox.org/virtualbox/5.0.14/VirtualBox-5.0.14-105127-OSX.dmg"}

もう一度走らせたら成功。ネットワークが不安定だったのかな。

changed: [localhost] => (item={u'name': u'virtualbox'}) => {"changed": true, "item": {"name": "virtualbox"}, "msg": "Cask installed: virtualbox"}

Formula自作

さて、公式には入っていないけど入れておきたいソフトウェアがちょこちょこあったので、
homebrew-caskに対応させるために、自分でFormulaを書いてみる。

書き方はhomebrew-caskレポジトリを参考にすると良さそう。
ドキュメントもしっかりしてるし参考にできるFormulaもたくさん。
homebrew-cask/doc at master · caskroom/homebrew-cask

ということでひとまずお試しでウイルスバスターを対応させてみました。
yukofeb/homebrew-mycask
MacOSのバージョンごとにURLが異なるので、分岐を使うようにした。
しかしこれ、OSが新しくなるたびにいちいちチェックして分岐を追加しないとダメそうだなー。
その辺今後の運用が少し面倒臭い。

まとめ

ということで、さわりだけAnsibleを使ってみました。
思ったよりもとても簡単で、特に困ることもなくセットアップできました。
Ansible、今更だけどちゃんと勉強しようw

続編

秘密情報ファイルをansibleでデプロイするためにVaultを使う - yukofebの日記

MacBook Air11インチを注文しました

最近dockerをよく使っているせいか、MacBook Airが異様に遅い。
アクティビティモニタを確認すると、
VirtualBoxChromeXCodeと、メモリを食うアプリケーションが揃い踏み。
うーん、この辺は外せないし、そろそろ買い替えどきか。

というかよく見たらこのMac、メモリ2GBしか積んでなかった!そりゃ重いわ。
モデルもLate 2010だし、5年も使ったら十分減価償却できてるでしょう。

というわけで、あと数ヶ月でMacBook Airの新モデルが出そうですが、このタイミングで注文しました。
Intel Core i7、メモリ8GB、ストレージ512GBと、すべてアップグレード。
しょっちゅう買い換えるお金もないし、ここでケチってはいけないと思う。

あと初めて英語配列キーボードにしてみた。
使い勝手がいいとよく聞くので。楽しみ。

dockerコンテナのnginxでConnection refused

dockerコンテナでnginxを動作させてみる。
nginxを起動してcurlでアクセスしてみたものの、Connextion refusedと出力されてしまう。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
50802d9a477a        yukofeb/nginx       "/usr/sbin/nginx -g '"   17 minutes ago      Up 8 minutes        0.0.0.0:80->80/tcp   nginx1

$ curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused

ドキュメントによるとDOCKER_HOST0.0.0.0に設定されていないことが原因らしい。
Installation on Mac OS X

DOCKER_HOSTのIPを確認する方法は以下。

$ docker-machine ip default
192.168.99.100

これでOK!

$ curl 192.168.99.100:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>