56
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

大人数でBoxen使うならboxen-webが断然便利

Last updated at Posted at 2013-03-18

BoxenをWebアプリケーションとして配布できるboxen-webを使ってみた。

簡単なまとめ

boxen-webは...

  • Boxenのインストールから実行までを1行のシェルコマンドでできるようにする
    • デザイナなどの非エンジニアに優しい
  • Boxenを使う上で必須ではない
  • OAuthを用いた認証によりメンバーのみアクセス可能
  • Heroku上で動作するのでサーバを用意する必要はない
  • GitHubの利用が必須
  • デプロイすると下記のようなサイトができる

Boxen Web

この記事で分かること

  • boxen-webをデプロイする方法
  • 新しいMacをboxen-webを使ってセットアップする方法

この記事で分からないこと

  • Boxenの使い方
  • Herokuの詳しい使い方

注意事項

Boxen自体はGitHub外のプライベートリポジトリでホストできるが、boxen-webを使う場合はGitHub上でホストされていなければならない。例えば、Boxen使わなくても許されるのは2012年までだよねに従ってBitbucketを使ってプライベートリポジトリを作った場合はboxen-webを使えない。

boxen-webとは何か

boxen-webはGitHub社が開発しているオープンソースのMac自動設定ツールBoxenを簡単にチームで共有できるようにするツール。中身はRailsで書かれておりHeroku上で動作する。
Webアプリケーションにアクセスすると表示されるワンライナーを実行するだけでセットアップが完了するので非エンジニアでも簡単に使える。(boxen-webを使わずにBoxenを使う場合一旦git-cloneしてきてからスクリプトを叩く必要がある)

GitHubのOAuthによってクライアントを認証し、部外者がアクセスできないようになっている。

現在利用できるのはGitHub上でホストされているBoxenリポジトリのみ。GitHub:Enterpriseのサポートはissueには上がっているがいつになるかは不明。

使い方

  1. 事前準備
  2. GitHub OAuth Applicationの用意
  3. boxen-webの用意
  4. Herokuにデプロイ
  5. 新しいMacをboxen-webでセットアップする手順

事前準備

Boxenを作る

チーム用にBoxenを用意する。詳しくはBoxen使わなくても許されるのは2012年までだよね参照。

OrganizationとTeamを作る

GitHubにOrganizationとTeamを作る。OrganizationとTeamの関係は一対多、つまり、1つのOrganizationに複数のTeamを作れる。そしてOrganizationのmemberとは少なくとも1つのTeamに所属しているGitHubアカウント。

boxen-webはOrganizationではなくTeam単位で作るものであることに注意。
Boxen自体にプロジェクト単位やチーム単位でセットアップする設定を書けるので、AllみたいなTeamを作って全員このTeamに含めてしまうのがいいのではないだろうか。

OrganizationとTeamの作り方はGoogle先生に聞いてほしい。Teamには固有のID(整数)が割り振られる。それについてはTeamのページのURLを見れば分かる。このIDは後で必要になる。

GitHub OAuth Applicationの用意

OrganizationのOrganization Applications設定へ行って"Register new application"を押す。
下記のNAME はHerokuに作るアプリケーションの名前に置きかえる。

項目
Application Name Boxen Web
Main URL https://NAME.herokuapp.com
Callback URL https://NAME.herokuapp.com/auth/github/callback

boxen-webを用意

Terminal
cd ~/src
git clone git://github.com/boxen/boxen-web.git
cd boxen-web

ローカルで動作確認する

boxen-webの動作確認をローカルですることができる。必須ではないので、一旦ここは飛ばしていきなりデプロイしていい。デプロイが上手くいかなかったらここに戻ってくる。

まず、前提としてHerokuなのでDBはPostgreSQLである。またそのPostgreSQLはBoxenでセットアップされたものでなければならない。

Puppetfile
# 追記
github "postgresql, "1.0.0"

そして下記を実行する。上手くいかなかったら自分のmanifestにinclude postgresqlと追記してscript/boxenを実行する。

Terminal
cd ~/src/my-boxen
script/boxen postgresql # PostgreSQLをインストール

次にboxen-webをインストールする。

Terminal
script/bootstrap

続いて以下の環境変数を設定する。一つでも欠けているとエラーになる。

名前
REPOSITORY GitHub上でのリポジトリの名前
GITHUB_CLIENT_ID OAuth Applicationで作ったやつ
GITHUB_CLIENT_SECRET OAuth Applicationで作ったやつ
GITHUB_TEAM_ID アクセスを許可するTeamのID
SECRET_TOKEN $ rake secret で取得する
Terminal
rake db:migrate
script/server

するとローカルでサーバが立ち上がる。http://localhost:9393 にアクセスしてみる。エラーが起きなければOK。500が発生する場合は環境変数がおかしい可能性が高いので確認する。

Herokuにデプロイ

Herokuの準備

  1. Herokuのアカウントを持っていない人は http://get.heroku.com でアカウントを作る。
  2. https://toolbelt.heroku.com からHeroku Toolbeltをダウンロードしてインストールする。これはHerokuを使うためのCLIツール。
  3. heroku loginを実行するとメールアドレスとパスワードを聞かれるので正しく入力する。

Herokuにアプリケーションを作る

NAMEはGitHub OAuth Applicationで設定したものと同じにする。

Terminal
# ~/src/boxen-webで下記を実行
heroku create NAME

これで空のアプリケーションが作られた。gitのremoteが設定されていればOK

Terminal
git remote -v
#=> heroku git@heroku.com:NAME.git (fetch)
#=> heroku git@heroku.com:NAME.git (push)
#=> origin git://github.com/boxen/boxen-web.git (fetch)
#=> origin git://github.com/boxen/boxen-web.git (push)

デプロイ

Heroku用の環境変数を設定してデプロイする。環境変数の値は前述した「ローカルで動作確認する」参照。

Terminal
# ~/src/boxen-webで下記を実行
heroku config:set \
  REPOSITORY=user_or_organication/repo_name \
  GITHUB_CLIENT_ID=your_github_client_id \
  GITHUB_CLIENT_SECRET=your_github_client_secret \
  GITHUB_TEAM_ID=team_id \
  SECRET_TOKEN=your_secret_token
git push heroku master
heroku run bundle exec rake db:migrate

https::NAME.herokuapp.com にアクセスしたらGitHubにリダイレクトされるのでアクセスを許可。再びherokuapp.comにリダイレクトされて "WELCOME TO BOXEN" という画面が表示されればOK

Boxen Web

新しいMacをboxen-webでセットアップする手順

Boxenの管理者がすること

その人の設定が既にBoxenにある場合、例えばMacを新しく買い換えた場合、は特にすることはない。

新しくメンバーが加わった場合は以下を実行する。

  1. GitHubアカウントを教えてもらう
  2. OrganizationのTeamにその人を追加する
  3. Boxenのリポジトリにmodules/people/manifests/ACCOUNT.ppを作る
  • その人のための設定を書く
  1. 忘れずにGitHubにgit-pushする

boxen-web利用者がすること

  1. GitHubアカウントを持っていなければ作る
  2. 必要に応じて公開鍵を設定する(Boxenでアクセスするプライベートリポジトリに正しくアクセスできるようにするため)
  3. Xcodeをインストールする(CLIでもGUIでもどちらでもOK)
  4. https://NAME.herokuapp.com にアクセスする
  5. ワンライナーを端末にコピペ実行してしばらく待つ
  6. .zshrc(や.bashrc)に下記を追記する
.zshrc
[ -f /opt/boxen/env.sh ] && source /opt/boxen/env.sh
[ -f /opt/boxen/nvm/nvm.sh ] && source /opt/boxen/nvm/nvm.sh

合わせて読みたい

56
56
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
56
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?