tl;dr
itamae で作ったユーザーを削除する機会があった. 当然, itamae で作ったユーザーだから, itamae レシピ上で削除しておけばプロビジョニングの過程でサーバー上から削除されるものとばっかり思っていたけど...
削除はサポートしていなかった
... def pre_action case @current_action when :create attributes.exist = true end ...
上記のように, itamae の user リソースのアクション定義に create
以外は実装されていなかった.
他のリソースを見てみると... 例えば, file リソースだと,
... def pre_action current.exist = run_specinfra(:check_file_is_file, attributes.path) case @current_action when :create attributes.exist = true when :delete attributes.exist = false when :edit attributes.exist = true ...
delete
アクションが実装されている.
きっと, なにか経緯があったりするのかなーと思ったりしつつ, ユーザーは手動で削除しようってことになった.
ということで
ユーザー自体は userdel
で手動で削除したあとで itamae のレシピから削除したユーザーのエントリを削除する対応をとった.
Chef とか Ansible ってどうだっけ
Chef だと
user リソースには :remove
アクションが用意されていた. ふむふむ.
Ansible だと
Chef 同様に remove
パラメータが用意されたいた. ふむふむ.
ということで
必要であれば, 自分で実装してプルリクエストを送れば良いということで自己解決 (プルリクエストを送るとは言っていない). でも, なぜ, remove
または delete
が実装されていないのか聞いてみたい気もした.