~nabeken/diary/

Gentoo Linux(6年くらい)とFreeBSD(1年くらい)とOpenBSD(新参者)を使う日々。


IHANet BGP peering overview

Func と Puppet で相互運用してみる part 1

Posted on Sat Jun 28 16:02:42 +0900 2008 by nabeken

v6対応もひとまず落ちついたので、SSL の証明書を共有できるか調べてみました。これが可能になると、certmaster の代わりにこれまでに展開してきた Puppet の証明書が使えるようになります。

まだ本家には取りまれていない機能を使っているので、試したい方は私が投稿したメールを見て、試してください。https://www.redhat.com/archives/func-list/2008-June/msg00062.html(パッチが mailman に食われたので、githubから取得してください。まだ本家には投げていませんが、IPv6対応パッチも入っています。)

認証局の扱い

Func の CA の秘密鍵は passphase を抜いているようです。

Puppet の CA の秘密鍵は passphase 付きのようで、そのパスは $vardir/ssl/ca/private/ca.pass に保存されています。何か特殊なファイルかと思ったのですが、ただのテキストファイルです。末尾に改行がないので、cat するとちょっと変ですが…。

共有方法

Func で使う証明書を Puppet のものに合せることにします。Funcはまだまだハードコードされた値が多いため、今後も仕様がころころ変わることが予想されます。

puppetmasterd が動いているホストでの設定

Func に合せて、リンクの生成、そして、証明書の秘密鍵の passphase を抜きます。

 # cd /var/lib/puppet/ssl/ca
 # openssl rsa -in ca_key.pem -out ca_key_nopassphase.pem -passin file:private/ca.pass
 # ln -s ca_key_nopassphase.pem certmaster.key
 # ln -s ca_crt.pem certmaster.crt

そして、 /etc/certmaster/certmaster.conf を設定します。

cert_extension = pem
cadir = /var/lib/puppet/ssl/ca
certroot = /var/lib/puppet/ssl/ca/signed

puppetd が動いているホストでの設定

専用のディレクトリを作り、そこへリンクを集めます。こうすることで、minion.confへの設定を楽にできます。

 # cd /var/lib/puppet/ssl
 # mkdir func && cd func
 # ln -s ../certs/ca.pem ca.cert
 # ln -s ../certs/${HOSTNAME}.pem ${HOSTNAME}.cert
 # ln -s ../csr_${HOSTNAME}.pem ${HOSTNAME}.csr
 # ln -s ../private_keys/${HOSTNAME}.pem

そして、 /etc/certmaster/minion.conf を設定します。

cert_dir = /var/lib/puppet/ssl/func

puppetd 側で funcd を起動させます。これで、 puppetmasterd が動いているマシンから func で指示を出すことができるようになります。

 # func func.example.org command run 'uname -a'
on https://func.example.org:51234 running command run (uname -a)
[0, 'Linux func.example.org 2.6.18-53.1.21.el5 #1 SMP Tue May 20 09:34:18 EDT 2008 i686 i686 i386 GNU/Linuxn', '']

更新履歴

  • cadir と certroot が必要 (Sat, 28 Jun 2008 16:02:42 +0900)
  • Revert "MAINT ca_dir ではなくて certroot だったのを修正" (Sat, 28 Jun 2008 16:01:09 +0900)
  • MAINT ca_dir ではなくて certroot だったのを修正 (Sat, 28 Jun 2008 15:53:54 +0900)
  • MAINT ln -s の引数で拡張子が抜けていたのを修正 (Sat, 28 Jun 2008 01:18:18 +0900)
  • MAINT 秘密鍵を抜くのではなく、passphaseを抜く (Fri, 27 Jun 2008 23:23:09 +0900)
  • MAINT Puppet の CA の〜あたりの文章が変だったのを修正 (Fri, 27 Jun 2008 23:19:14 +0900)
  • 初稿 (Fri, 27 Jun 2008 19:42:02 +0900)
  • MAINT ログ出力を有効にした (Fri, 27 Jun 2008 17:16:34 +0900)
  • initial import/ほぼ書きあげた。 (Fri, 27 Jun 2008 17:15:47 +0900)