RedHat EL7にDKMSをインストール
RHELのファイルシステムの拡張を行うために、Kernel Moduleをインストールする必要があるのだが、その際にDKMS(Dynamic Kernel Module Supportという機能を使うことができる。だが、当然DKMS自体をインストールする必要がある。
DKMSのインストール方法をあちこち探して要約見つけた。
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm; # yum install dkms kernel-devel-$(uname -r) kernel-headers-$(uname -r); ... ... # dkms Usage: /usr/sbin/dkms [action] [options] [action] = { add | remove | build | install | uninstall | match | autoinstall | mkdriverdisk | mktarball | ldtarball | mkrpm | mkkmp | mkdeb | status } [options] = [-m module] [-v module-version] [-k kernel-version] [-a arch] [-d distro] [-c dkms.conf-location] [-q] [--force] [--all] [--templatekernel=kernel] [--directive='cli-directive=cli-value'] [--config=kernel-.config-location] [--archive=tarball-location] [--kernelsourcedir=source-location] [--no-prepare-kernel] [--no-initrd] [--binaries-only] [--source-only] [-r release (SuSE)] [--verbose] [--size] [--spec=specfile] [--media=floppy|iso|tar] [--legacy-postinst=0|1] [--no-depmod] Error! No action was specified.
おお・・入った入った!
OpenLDAPとKerberos認証の統合について
OpenLDAPの設定にslapd.dが用いられることが一般的になってしまい、OpenLDAPとKerberos認証に苦労していたのですが、ここにまとめがありました。
これを参考にしてようやくRaspberryPIで認証とユーザー・グループ管理の統合がようやくうまくいきました。
http://www.rjsystems.nl/en/2100-d6-openldap-provider-kerberos.php
必須文房具リスト
チームワークを行う際に必要な文房具のリスト
- 住友スリーエム ふせん ポスト・イット(R)強粘着ノート657SS 混色 75×100mm 657-5SSAN 1パック(5冊入)
- 住友スリーエム ポスト・イット(R)強粘着エコノパックTMノート ネオンカラー 6501SS-NE 1箱(90枚×10冊入)
- 住友スリーエム M40J-18 塗装用マスキングテープ18×18 1P 1個 382-7020 (取寄品)
- ニチバン マイタック(R)ラベル カラーラベル 直径8mm ML-120 1箱(各色2100片:各色210片入×10袋)
- ぺんてる 水性サインペン 赤インク S520-BD 1箱(10本入)
- ぺんてる 水性サインペン 黒インク S520-AD 1箱(10本入)
- コクヨ テープのりドットライナー 貼ってはがせるタイプ 交換テープ 幅8.4mm タ-D401N-08 1箱(10個入)
- 無印良品 ポリプロピレンメイクボックス 2分の1 5854158
- オキナ プロジェクトリングノート A4 5mm方眼 1パック(5冊入)
- TSバリューボード 両面紙貼 910×1820 厚さ7mm 20枚/梱包
購入するためのリンクもつけておきました。
起業に向けたCorporate Sloganの作り方
起業に向けたCorporate Sloganの作り方です。
おそらく色々な作り方があると思うのですが、以下の五つの質問に答えることによって自然と文章が組み立てられる方法です。
- 何が目的か
- 自分たちの長所は
- ターゲットとする顧客は
- リソース(人的、経済的)にリミットが無ければ何をする
- 最終的にどうなりたいか
(ゴール)のために(長所)をもって、(顧客)に(理想)をもたらし(最終目標)を目指す会社。
統合認証のIDはフルネーム表記にするべきか、ハンドル名にするべきか
企業によってはActive DirectoryやKerberosの統合認証のログインIDに、例えば"yusuke.izumi@EXAMPLE.COM"といったように、フルネーム表記で統一しているところもあると思います。この命名規則は基本的におすすめしません。国籍にもよると思いますが、基本的に1,000人位の企業になってくると、ローマ字表記で同姓同名のスタッフ出てくるからです。そうすると"yusuke.izumi2@EXAMPLE.COM"といったようなIDを作らざるを得ない非常に残念な運用になってしまいます。
その点、ハンドル名の場合は、はじめのイズミユウスケさんであれば「yizumi@EXAMPLE.COM」にし、二人目のイズミユウスケさんは「yusukeiz@EXAMPLE.COM」にしてしまえば何も問題ありません。厳格なルールは持たずに、本人がその組織に入った時に自分で8文字のIDを決めさせてしまうのもいいかもしれません。ハッカーコミュニティーの人たちはその世界でユニークなハンドル名で通っている敏腕エンジニアの方もいるので「chubaccaにしたい!」とかいう変人がいても嫌な顔せずに稟議を通していいと思います。不思議なことに、こういう人たちのハンドル名はみんなちゃんと8文字に収まっています。(昔から使っているUnixのIDをコミュニティーのハンドル名にしている人が多いので、別に不思議でもなんでもないんです!)
また、たいした事ではないのですが「ユーザIDは最大8文字」という前提で出力のフォーマットを決めているコマンドも多数あるので、8文字以上になるとIDが切れてしまったり、フォーマットが崩れたりすることもあります。
結論的には、統合認証のIDは最大8文字のハンドル名で運用することを強くお勧めします。
「メールアドレスは社外の人にも露出しないといけないので、奇妙なハンドル名はダメ!」という人もいますが、それはメールサービスの方でいかようにでも設定できるのであまり気にすることはないかと。ログインIDとは関係のない話です。
OpenAFS (Introduction)
OpenAFSとは?
AFS(Andrew File System)は分散型ファイルシステム(Distributed File System)の一種です。1983年にカーネギーメロン大学が開発を開発し、商用化・販売するのにTransarc社(後のIBM Pittsburg Labs)が設立され、オープンコミュニティーでも利用できるようにしたものがOpenAFSです。現在は大学などの教育機関、大企業、行政などで広く使われています。Network File Server(NFS)は単一のサーバーでファイルを管理・共有するのに対し、DFSは複数のファイルサーバーで同期を取りながらファイルを共有することができるためSPOFになる心配もなく、大量のホストで同じバイナリ―を共有して分散型システムを構築したり、他部署とのミドルウェアの共有などにも使用することが出来ます。
AFSの特徴はいくつかありますが、代表的な特徴をいくつか挙げると
クロスプラットフォーム
- クライアントはMac, Linux, Windowsに対応している
- どのプラットフォームのホストからも同一パスでファイルを参照することができる
- 特殊シンボリックリンク(@sys)を使って、特定アーキテクチャでしか動かせないバイナリ―も同一パスで扱うことができる
バイナリ―に関しては、アーキテクチャーの差異も吸収できるので、例えばruby/python/javaも一回そのアーキテクチャ用にコンパイルさえしておけば、どのホストからも利用できるので、新サーバーのミドルウェアの設定が飛躍的に楽になります。
特殊シンボリックリンク(@sys)はかなり強力な機能で、例えばLocalのMacでテストしたrubyスクリプトもshebang行のパス情報も変えることすらなく、いきなり違うアーキテクチャーのホスト本番Linuxサーバーで実行することが出来ます。(後述します)
スケーラビリティ
- NFSの場合だとそのホストのキャパシティーに依存してしまうが、OpenAFSの場合Volumeという単位でディレクトリを分解することができるため、あるパスの容量が不足したら、そのパスだけ別のボリュームサーバーに移動したり、パス内をさらに小さいVolumeに分解したりしていくらでも増やすことが出来る。
- 参照頻度の高いファイルはMaster Slave方式で分散させることもできる。(更新頻度の高い地域に合わせてMasterの地理的場所を移動させる等のウルテクも可能です)
事前のキャパシティープラニングなどしなくても、後追いでいくらでも設定変更が可能ということです。
セキュリティ
- 認証システムはKerberosを利用している。
- どのユーザが(またはどのグループのユーザが)リスト権限、アクセス権限、書き込み権限、ロック権限をもつかが細かく設定できる。(フォルダに対してもファイルに対しても)これによりプロダクション用のパスワードが入ったファイルはプロダクション用IDしか読めない、とすることが出来る。(もちろんパスワードをファイル管理する運用はおすすめしませんが、MySQL等Kerberosをネイティブで対応できないミドルウェアも多数あるので)
ボリュームの概念図
OpenAFSを使う前に
OpenAFSをインストールする前に色々と準備しておかないといけません。NTP, DNS, LDAPは一般の社内ネットワークなら十分整備されていると思いますが、Kerberosはあまりメジャーではないように思えます。
NTP
全ホストの時間を同期させる必要があります。主にはKerberos認証を正しく動作させるためですが、運用上はログのタイムスタンプ、DBサーバーならアプリケーションにおいて「取引時間の記録」等正確に記録する必要があるので、一般的にもホストの時間の同期は必須です。
DNS
ホストがQualified Nameでないとホスト認証が出来なくなり、結果Kerberosコマンドが使えなくなってしまいます。
Kerberos
KerberosのKの文字を見ただけで暗い顔をされる人もいるようですが、Kerberosをうまく使いこなせれば、統合ログインやSingle Sign-Onの基盤にもなりえますし、今後色々な成長業界にかかる色々な情報技術系の規制にも柔軟に対応できるでしょう。統合認証にActive Directoryを採用されている企業は多く、Active Directoryなら統合認証プロトコルにKerberosVを採用しているので、これで代用できるらしいのですが、まだ自分も実験中です。
djbdnsの設定(Debian)
参考
http://network.station.ez-net.jp/special/djbdns/index.asp
Daemontoolsの設定
# apt-get install make gcc patch # mkdir /package # cd /package # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz # tar xvfz daemontools-0.76.tar.gz # cd admin/daemontools-0.76/src # vim error.h -extern int errno; +include <errno.h> # cd admin/daemontools-0.76 # package/install # ps -auxw | grep service Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html root 6381 0.0 0.2 1580 356 ? S 19:36 0:00 svscan /service root 6382 0.0 0.2 1408 276 ? S 19:36 0:00 readproctitle service errors: ................................................................................................................................................................................................................................................................................................................................................................................................................ root 7979 0.0 0.4 1712 624 pts/0 S+ 21:14 0:00 grep service
ucspi-tcpの設定
# cd /usr/local/src # wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz # tar xvfz ucspi-tcp-0.88.tar.gz # cd ucspi-tcp-0.88 # make # make setup check
djbdnsの設定
# apt-get install dnsutils # cd /package # wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz # cd djbdns-1.05 # # groupadd djbdns # useradd -d /dev/null -g djbdns -s /bin/true tinydns # useradd -d /dev/null -g djbdns -s /bin/true dnslog # useradd -d /dev/null -g djbdns -s /bin/false dnscache # /usr/local/bin/tinydns-conf tinydns dnslog /etc/tinydns 127.0.0.1 # cd /etc/tinydns/root # ./add-ns home.local 192.168.0.4 # Name-server record # ./add-ns 0.168.192.in-addr.arpa 192.168.0.4 # reverse lookup record # ./add-host dns1.home.local 192.168.0.4 # host name # make # ln -s /etc/tinydns /service # ps -efa | grep tinydns root 8482 6381 0 21:20 ? 00:00:00 supervise tinydns tinydns 8483 8482 5 21:20 ? 00:00:00 /usr/local/bin/tinydns root 8489 5208 0 21:20 pts/0 00:00:00 grep tinydns # dig dns1.home.local @127.0.0.1 ; <<>> DiG 9.6-ESV-R4 <<>> krb1.home.local @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20496 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;dns1.home.local. IN A ;; ANSWER SECTION: dns1.home.local. 86400 IN A 192.168.0.4 ;; AUTHORITY SECTION: home.local. 259200 IN NS a.ns.home.local. ;; ADDITIONAL SECTION: a.ns.home.local. 259200 IN A 192.168.0.4 ;; Query time: 17 msec ;; SERVER: 192.168.0.4#53(192.168.0.4) ;; WHEN: Sat Oct 13 21:34:25 2012 ;; MSG SIZE rcvd: 84
dnscacheの設定
# dnscache-conf dnscache dnslog /etc/dnscache 192.168.0.4 # cd /etc/dnscache/root/ip # touch 192.168.0 # cd ../servers # echo 127.0.0.1 > home.local # echo 127.0.0.1 > 0.168.192.in-addr.arpa # ln -s /etc/dnscache /service/dnscache # svstat /service/dnscache /service/dnscache: up (pid 8835) 5 seconds # dig www.google.com @127.0.0.1 # test the lookup of an external ip address ; <<>> DiG 9.6-ESV-R4 <<>> www.google.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24568 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 300 IN A 74.125.235.147 www.google.com. 300 IN A 74.125.235.144 www.google.com. 300 IN A 74.125.235.146 www.google.com. 300 IN A 74.125.235.145 www.google.com. 300 IN A 74.125.235.148 ;; Query time: 557 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat Oct 13 21:40:56 2012 ;; MSG SIZE rcvd: 112
dnsの登録
# vim /etc/resolv.conf -nameserver 192.168.0.1 +nameserver 192.168.0.4