Home > 未分類 Archive

未分類 Archive

WiMAX はじめました

uqwimax

WiMAX

これまで外出中にネットワークに接続する手段として e-mobile を使用していました。ですが、この度 UQ WiMAX に乗り換えることにしました。因みに乗り換えの理由は通信速度です。

WiMAX は前々から気になっていたのですが、エリアカバー率にはあまり期待していなかったのと e-mobile の二年縛りもあって e-mobile を使い続けていました。しかし 4月頃 に Try WiMAX なるお試しサービスがあることを知り、とりあえず試してみるかということで try wimax に申し込んでみて、僕の良く行く場所で実用的に使えるのかどうか検査してみました。

WEB から Try WiMAX を申し込むと、申込日を含めて三日程で端末が手元に届きました。Try WiMAX では試用するにあたって端末を選択することができます。僕はホストマシンを Ubuntu にしてしまっているので OS を制約される端末は使用できないということで、ルータタイプの端末を選択しました。(ただ現在は試用機からは失くなっているようです) ルータタイプの端末があるというのはかなりポイント高い(逆になかったとすると、WiMAX は選択肢に入らないということなんですけどね)。

実機がきてから端末のセットアップをしますが、このセットアップには別マシンの Windows 機を使用しました。セットアップツールは大概 Windows にフォーカスされているものなので、ここは努めて従うのが吉ですね。電波が入る場所であればセットアップは難なく完了です(自宅では窓際でようやく電波が入るというところでした)。

で、僕の活動域各地に出向いて電波を確認してみたところ、電波状況はかなり良好で最大 5Mbps くらいの速度が出ています。遅くても 1Mbps は出ているので、今使っている e-mobile と比べればこれでも十分です。自宅は窓際に端末を置かないと電波が入らないですが、自宅では自宅の光回線を使うのでこれは問題なし。もし自宅で光などのネット環境を整備していない方で WiMAX の電波が届く場所に住んでいる方にとっては WiMAX だけで十分実用に耐える気がします。契約が住所に縛られる訳でもないので、取り回しの良さで言えば光回線等の上を行きますね。と個人的には思っています。

ということで Try WiMAX にて WiMAX は問題なく使えることを確認し、e-mobile を使用していたときに比べて速度も速いし、端末は無線LANルータとして使えるので iPhone 等も同時に同じネットワークで同じ速度で使えるし、無線LAN なので USB ポートは一つ空くしということで僕にとっては WiMAX は素晴らしい魅力的なネットワーク環境ということが分かりました。

いやほんとに素晴らしいですね。

Try WiMAX を終えてからしばらく経ってしまいましたが、先週末にようやく新宿のヨドバシで NEC AtermWM3300R PA-WM3300R(AT) の端末をかなりの安さで購入して現在実運用中です。今はキャンペーンをやっているらしく、来月から一年間は 月額 3,780円 で済むそうなので価格面でも 月単位で e-mobile より 1,000円 以上も安くなる計算です。とりあえずのところ僕にとってはかなりいいことづくめですね。NEC AtermWM3300R PA-WM3300R(AT)持ち運べる無線LANルータなので、外でも自宅とほぼ同じような環境を確保したことになります。

蛇足ですが e-mobile を使い続ける場合は Pocket WiFi が同じ欲求を満たしてくれそうですね。それでも WiMAX にするのは、若干月額の料金が安いのと、二年縛りなどの契約の分かりにくさが WiMAX にはないということですかね。e-mobile は今月で二年縛りが解けるのでささっと解約してしまおうと思っています。さて今使ってる e-mobile の端末はどうしようかな…

では Bye Bye e-mobile. Hello WiMAX!!! ということで。

gitosis - Git リポジトリ群の管理とアクセス制御 vol.2

gitosis - Git リポジトリ群の管理とアクセス制御 vol.1 の続編です。

前回までで、gitosis のインストールと疎通確認まで終わりました。もしエントリの通りに手を動かしていれば、手元には gitosis-admin.git のクローンがある状態のはずです。このエントリは gitosis の設定編ということで、gitosis-admin.git の説明をしていきます。

gitosis はアカウント情報やアクセス制御の情報を gitosis-admin.git を用いて管理します。アカウントの追加や削除やアクセス制御の変更を行うときには、僕たちは gitosis-admin.git の内容を変更することになります。

gitosis の設定変更の基本は以下の2ステップです。

  1. ローカルで gitosis-admin ディレクトリ以下のファイルを追加/変更/削除
  2. サーバ上の gitosis-admin.git に反映(git push)

それでは、まずはサーバ上の gitosis-admin.git を git clone して、ディレクトリ階層を見てみます。まだ gitosis-admin.git を手元に落としていない場合は以下の操作で手元に落としておきます。

local% git clone ssh://git@remote-name.com/gitosis-admin.git

ディレクトリの中を眺めてみます。以下のような構成になっており、非常に単純です。

gitosis-admin
|-- gitosis.conf # アクセス制御用の設定ファイル
`-- keydir
    `-- keiji.pub # 登録されてるアカウントの公開鍵、keiji.pub は gitosis-init で指定した公開鍵

では gitosis.conf と keydir を個別に見ていきます。

gitosis.conf
gitosis.conf の中身は INIっぽいフォーマット で記述されいます。初期状態では以下のように自分自身(gitosis-admin)の設定のみが記述されています。

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = keiji

上記の内容は、ユーザ keiji がサーバ上のリポジトリ gitosis-admin.git を編集可能(writable) であることを定義しています。リポジトリコンテナの管理アカウントは、現時点では keiji のみとなります。

それでは、fred というアカウントを追加してこのアカウントがリポジトリコンテナの管理者としてふるまえるようにしてみます。

まずは上記 gitosis.conf の内容を編集します。

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = keiji fred

gitosis.conf の変更はこれだけです。簡単ですね。

ですが、これだけでは fred は git clone ssh://git@remote-name.com/gitosis-admin.git することはできません。fred はまだ gitosis のアカウントとして認証されていないからです。ここでようやく keydir の出番です。

keydir
keydir ディレクトリは認証された gitosis アカウントの公開鍵一覧を含みます。現時点では gitosis-init を実行したときに登録された最初のアカウント(keiji の公開鍵 keiji.pub)のみ登録されています。fred アカウントを有効にするには fred の公開鍵を keydir 以下に保存する必要があります。

ここでは仮に fred から公開鍵 id_rsa.pub を受け取ったとします。この鍵を gitosis-admin/keydir に保存します。

local% ls -F
id_rsa.pub gitosis-admin/
local% mv id_rsa.pub fred.pub
local% mv fred.pub gitosis-admin/keydir/
local% ls gitosis-admin/keydir/
keiji.pub fred.pub

id_rsa.pub のファイル名を変更したのには理由があります。gitosis はアカウント名として公開鍵のファイル名から拡張子 .pub を除いた部分を使用します。そのため keydir に保存するときは、公開鍵のファイル名を gitosis.conf で指定したアカウント名と併せておく必要があるのです。

さて、現時点ではローカル上では fred が存在して、サーバ上には存在しない状態です。これをサーバ上の gitosis-admin.git に反映する必要があります。ここからは git オペレーションになります。

local% cd gitosis-admin
local% git commit -a -m "account 'fred' added. this account is administrator."
local% git push

git push が上手くいけば、サーバ上の設定ファイルが自動的に更新されて fred が有効になります。1

これで fred は gitosis-admin.git をクローンすることができるようになっているはずです。fred ユーザで試してみます。

local% sudo su - fred
local% mkdir -p workspace/hosting-self
local% cd workspace/hosting-self
local% git clone ssh://git@remote-name.com/gitosis-admin.git
Initialized empty Git repository in /home/fred/workspace/hosting-self/gitosis-admin/.git/
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 24 (delta 6), reused 3 (delta 0)
local% ls -F
gitosis-admin/

上記のように gitosis-admin.git をクローンできれば成功です。2

ここまでで、アカウント追加の作業は終了です。

次は、現在存在するアカウント(keiji, fred)にそれぞれプライベートな(それぞれ自分だけが編集できる)リポジトリを与えてみます。gitosis.conf を以下のように変更して git push します。

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = keiji fred

[group keiji]
writable = private/keiji
members = keiji

[group fred]
writable = private/fred
members = fred

これで keiji は private/keiji.git、fred は private/fred.git。というリポジトリを与えられました。gitosis はコンテナ内にディレクトリ階層を作れるというのがポイントです。ここでは private というディレクトリを掘ってみました。private という名前に特に意味はありません(hoge でも fuga でも何でも良い)。

ただし gitosis.conf を push したら、サーバ上のコンテナに勝手に Git リポジトリが作られるわけではありません。単に push する権限を与えられるだけです。

ということで private/keiji の領域に収める Git リポジトリを作ってみたいと思います。まずはローカルの keiji ユーザで新しい Git リポジトリを用意します。

local% mkdir private-repo
local% cd private-repo
local% git init
local% git remote add origin ssh://git@remote-name.com/private/keiji.git
local% echo 'This git repository is private.' > README
local% git commit -a -m 'Initial commit'

git remote add ssh://git@remote-name.com/private/keiji.git の指定が重要ですので間違えないように気をつけて下さい。そうしたら後は git push するだけです。

local% git push origin master

サーバ上に存在しないリポジトリを push すると、gitosis は以下のプロセスを経てリポジトリを同期します。

  1. コンテナ内にリポジトリが存在するかをチェック
  2. gitosis.conf に記述されているリポジトリ名かチェック
  3. 権限はあるかチェック
  4. Bare リポジトリを新しく作成
  5. git push されたリポジトリの内容とコンテナ内のリポジトリを同期

これで gitosis の一連の操作はカバーできたかなという感じがします。まだ触れていないものは、(現時点で僕が把握してる限り)以下の5つですね。

  • アカウントの削除
  • リポジトリの削除
  • gitosis.conf のその他の細かい設定
  • git-daemon について
  • gitweb について

gitosis はリポジトリの削除はサポートしないようです。まぁ、削除は危険ですからね。リポジトリを本当に削除したい場合はサーバにログインして rm -rf すればいいでしょう。アカウントの削除は、単純に keydir ディレクトリから該当の公開鍵を削除して git push すれば ok です。簡単ですね。

git-daemon と gitweb については試してないので説明はできません。gitosis.conf の細かい設定については git://eagain.net/gitosis.git の中にある example.conf を見て頂ければ分かるでしょう。

ひとまずこれで終わりですが、gitosis 側で個々のリポジトリのフックを操れるようになれば post-receive にメール送信を仕込むとかより簡単に設定できるようになると思ってるので、今後ちょくちょく gitosis をいじっていくかもしれません。

  1. gitosis は git をトランザクション機能のあるミラーリングツールとして上手く使っているなと感じます。gitosis は git の post-update と post-receive フックを上手く使ってサーバ上の設定ファイルを更新しています
  2. 「これではきちんとアクセス制御できているか分からない!」と感じる人がいると思います。そういう人は fred でクローンした gitosis-admin の gitosis.conf から fred の権限を削除して git push して、git pull してみると良いと思います。git push は成功しますが、git push した後の git pull は失敗するはずです。

Home > 未分類 Archive

Search
Feeds
Meta

Return to page top