🎄

ansible 研究 2024/12/25

2024/12/25に公開

非ansible管理サーバ畑を耕していく

  • ansible=python というくらいに、pythonが入っていないと動かない。
  • pythonは 2.7から3.x 移行時に苦労させられた記憶があって入れたくなかったが、自作スクリプトも pythonに依存し始めた関係で ''Resistance is futile'' と。
  • FreeBSD-jailで bastille を多用し始めたのはいいが、 初期状態で色々不具合を放置していることがある。
  • 最近多いのは pkg を完全に封入したり、cloned-jail での リモート疎通の不完全な jail
  • 疎通が悪いと pkg コマンドで失敗する。 repo をローカルに作るのが理想だが、長期に渡る構築による問題で アーキテクチャ、OSヴァージョン、pkg に入れるべきものが多すぎで poudrirere の運用がつらい。

本日の結論:

  • FreeBSD での Ansible 実践ガイドラインを書いた人間はおそらく実戦(とりわけ手垢で汚れきったオンプレミスやJAIL絡み)を経験していないことが明らかであって、事前準備が多く必要である。
  • まずは、インベントリを揃えることから。 hostsファイルに兎に角書き連ねること。
  • ターゲットに ssh 公開鍵を配布していく。
  • ~/.ssh/config において、 ProxyJump を使うゲートウェイを決められる管理サイトの記述をする。踏み台サーバ hogehoge → ProxyJump hogehoge である。
  • ~/.ssh/config で、
     Host *.subdom.dom.
    

となっているものは、全て ProxyJump 対象となるが、その際は踏み台サーバで、何でも良いから名前解決すること。 IPv4アドレスなんかで管理するのはやめなさい(to strnh)
IPv6で管理し始めているからもう /etc/hosts が汚いとか文句を言うな

  • FreeBSD-JAILでの 外部疎通を観るのに ping は使わない。 allow_rawsockets; が書かれていないことが多々あるから、次のワンライナーを使え。
    ansible -m raw -a "fetch http://www.google.co.jp/ -o - >/dev/null " -i hosts_not_exists_python all 2>&1 | grep FAIL
    
    これによって、名前解決+NAT設定の2つが整ってないものが見つかる。
  • 上記の ansible スクリプト処理で抽出できるホスト名が、今後の作業グループに入っているのを避ける。
  • ansible -m ping を通すために raw モジュールで行う必要のある pkg install -f python が失敗するし、そういう処理は時間は収束に嫌に時間を食われてしまう。これらは個別に処理するか、サイト別にゴリゴリとワンライナーを
    書くのがよかろう。

Discussion