/etc/hostsのエントリの共有
サーバ台数が増えてくると/etc/hostsいじってssh hogeで接続するのがめんどくなる。
hostsが古くて別のサーバに接続してしまったり...
それにIP直指定は長いし、ホスト名だとzshの補完がきく。
NISとかNIS+とかLDAP使えばhostsの共有ができる。
この記事ではLDAPでやってみる...っていうかLDAPの記事ばっか書いてたんだからそういう流れです。
環境はDebianです。
MigrationToolsでhostsファイルをLDIF形式に変換
MigrationToolsを使えばhostsファイルからLDIF形式に変換できる。まずはインストールから。
$ sudo apt-get install migrationtools
なぜか/usr/share/migrationtoolsにスクリプトがインストールされる。
しかも現在のディレクトリにmigrate_common.phっていうファイルがないとスクリプトが動かないので、
cd /usr/share/migrationtoolsしないと使えない。
っていうか変なパスにインストールされる原因はそれだろうけど微妙すぎる。
めちゃめちゃ気になるけどとりあえず気にしないでおく。
$ cd /usr/share/migrationtools $ ./migrate_hosts.pl /etc/hosts ~/hosts.ldif $ cd $ vim hosts.ldif # dc=padl,dc=com とかなってるところ :%s/padl/example/g で書き換え(sedでもいいけど)。 # あと、localhostだとか追加するつもりのないエントリも削除。
LDIF形式のファイルを登録
できたhosts.ldifを登録する前に、以下のテキストをhosts-base.ldif(なんでもいい)で保存してldapaddで登録しておく。
現在はグループ,ホスト情報用の親エントリがない状態ですので,リスト1のような親エントリを登録した後それぞれを登録します。
第3回 もう一歩進んだUNIXアカウント:そろそろLDAPにしてみないか?|gihyo.jp … 技術評論社dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: exampledn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: Peopledn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Groupdn: ou=Hosts,dc=example,dc=com
objectClass: organizationalUnit
ou: Hosts
保存したら、hosts-base.ldifとhosts.ldifの登録。
$ sudo ldapadd -x -D "cn=Manager,dc=example,dc=com" -f hosts-base.ldif -W $ sudo ldapadd -x -D "cn=Manager,dc=example,dc=com" -f hosts.ldif -W
これでサーバの設定は終了。
クライアントの設定
クライアントの環境はUbuntuです。
PAMの設定は前々回の記事を参照。
とはいうものの、前回auth-client-configなんかも試したので一応設定ファイル置いておく...というか前回のと同じです。
前回と同じく/etc/auth-client-config/profile.d/以下に保存したら、以下を実行。
$ sudo auth-client-config -t pam-password,pam-auth,pam-session,pam-account -p my_ldap
そうすればPAMの設定ファイルのみ反映されるので、あといじるのは/etc/nsswitch.confのみ。
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Ubuntuではこんなんなってたので、末尾にldapを追加。