🌧️

ansible 研究 2025/01/03

2025/01/03に公開

letsencrypt で取得している certを調べる

  • ansible を導入する以前からの letsencrypt 関連を漸進的にAnsible管理へ移行しようと考える。そうなると、「0から letsencrypt アカウントを作るところからスタート」の モジュールを使うことが難しい

  • Ansibleで全てが完結できれば良いのだが、ターゲットOSがRHELでもないと~自分が居なくなっても~^H^H^H基本的にサポートがないので、いつでも撤退できるリスクヘッジを考えた運用にせざる得ない。 → 純なAnsible利用ではなく、多少「冪等性」が失われても実用性に優るスクリプトを突っ込む他ない。

  • 今回のお題は「スクリプトを突っ込んで動くか見る」である。

  • 例によって、コンセプトのみメモ書きが基本。些末にすぎる。

copy モジュールでターゲットにスクリプトを持ち込む

#!/bin/sh
cd /usr/local/etc/letsencrypt/live 
ls -1 | grep -v README | awk '{print "openssl verify -CAfile " $1"/chain.pem "$1"/cert.pem  "}' | sh  -x

* ⬆ ターゲットOSがFreeBSDであると仮定しているので、インベントリも freebsdのみに限る(というか、それ以外のOSを扱ってはいないが)

  • ansible.builtin.copy は、 option を入れないと設定は常に「安全側に倒れている」ので、
    • 実行属性:なし
    • owner: login に使った owner = (sshアクセスする ほとんどのシステムで)root ではない
  • 設定さえすれば実行できるが、何も設定しないと「ただのテキストファイル」で Permission Errorになる。
  • スクリプトを持ち込むリモートでの「砂場」は絶対パスが良い。これもおそらくは安全を企図する。
  • 相対パスでテストした事例をどこかで読んだ。 てくなべ:今回もお世話になった。→
    https://tekunabe.hatenablog.jp/entry/2022/06/23/194400

スクリプト実行

  • shell (モジュール?実行文?)で持ち込んだ「リモートにおける絶対パス」を指定する。
  • 実行結果は result に入れるだけ。

出力を賞翫する。

  • ansible.builtin.debug を使う。
  • そろそろ debug じゃない方法があるのかを調べておこう。

Discussion