Func 検証中
仕事で。
ぢつは以前、某大学のインターンな方々に動作検証をお願いしていたんですが、動作が微妙ってコトであまりきちんと原因解析せずに (< わしが) puppet の検証をお願いしてた経緯がございました。
で、再度検証の命が下り (ってか立候補したんですが)、今日がっつり確認。以前ハマッていたと思われるナニは /usr/lib/python2.4/site-packages/certmaster/urls.py にて定義されている get_hostname 手続きの以下の箇所でした。
config_file = '/etc/certmaster/minion.conf' config = read_config(config_file, MinionConfig) server = config.certmaster port = 51235 try: s = socket.socket() s.settimeout(5) s.connect((server, port)) (intf, port) = s.getsockname() remote_hostname = socket.gethostbyaddr(intf)[0]
上記の gethostbyaddr 手続きの呼び出し部分でコケてました。これ、きちんと python インタープリタの中で確認すれば分かるコトなんですが、s.getsockname 手続きで戻されるのはネットの向こう側ではなく、こちら側の情報でした。
ので、gethostbyaddr 手続きで解決されなければならないのは自ホストになる模様。こんなカンジ。
$ python Python 2.4.4 (#2, Apr 15 2008, 23:43:20) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import socket >>> s = socket.socket() >>> s.connect(('66.249.89.99', 80)) >>> s.getsockname() ('192.168.10.169', 57779) >>>
いっちゃん最後のは自端末の IP でこの IP を名前に解決するためのナニが必要、という事になります。いっちゃん簡単なのは /etc/hosts ですな。
自分の名前解決 (しかも逆引き) ができないと使えない、というのもなんと言えばよいのか、と。(意味不明