Elaboration in, Garbage out

Twitt*r ではメモできない何かそれ的なモノ・コトを

Chef だと面倒くさいけど Ansible だとできること:踏み台構成

前提

本業で本格的に ansible 使うようになるんだけれども、本業では次のよーなサーバ構成になっている。

(操作端末)→(踏み台)→(サーバ郡)

これで ansible 使えるんだっけーっていうの調べてた。ついでに Chef も。 この踏み台がなんのためにあるかってのは、DeMilitarized Zone と Militarized Zone を分かつためにあるってことで*1

本題

で、こんな環境で構成管理ツール使う場合、おそらく次のようになると思う。

構成 Chef Ansible
操作端末だけで可能 knife-zero, knife-solo のみ?
サーバ郡に構成管理サーバを導入

サーバ郡に構成管理サーバを導入すればできるってのは、例えば通信が(Install で download すること以外)MZ 内のみで閉じるっていうことなんでほぼ当たり前ですね。

多段 SSH

そもそも踏み台があるなかで直接サーバ群にアクセスするには

  1. netcatコマンドを利用
  2. sshの-Wオプションを利用

をすれば多段 ssh がかんたんにできるよう。

ちなみに -W の説明はこんな感じ

-W host:port
    Requests that standard input and output on the client be forwarded to host on port over the secure channel.  Implies -N, -T,
    ExitOnForwardFailure and ClearAllForwardings.  Works with Protocol version 2 only.

つまり、踏み台サーバには

  1. netcat コマンドが使える
  2. SSHv2 に対応

という条件がそれぞれ必要。

参考になるぺーじ

netcat コマンドを利用する場合は、

-W オプションで行う場合には

が参考になるっぽい。(2015/3/1 追記:リンク間違えてたので修正しました)

余談

  • chef の場合、knife-{zero|solo} を使う場合 ssh-config を読み込めるので使える かもしれない
    • *2 公式の knife には -W オプション入っていないので、踏み台経由ではできないかもしれない 。頑張って調べればできるかもしれない。
  • 踏み台って英語でなんて言うんだろうって調べると、jump host というのが一般的らしい。が、特にセキュリティ担保のための踏み台は Bastion Host ともいうらしい(↓のリンク参照)。

*1:DMZ、MZ の詳しい説明は一番最後のリンク参照

*2:継続性の観点では、knife-{zero|solo} はほぼ個人でしか作成されていないので、いつか開発が止まるリスクは ansible に比べると大きい。っていうことも考えると