tl;dr
itamae で作ったユーザーを削除する機会があった. 当然, itamae で作ったユーザーだから, itamae レシピ上で削除しておけばプロビジョニングの過程でサーバー上から削除されるものとばっかり思っていたけど...
削除はサポートしていなかった
github.com
...
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 だと
docs.chef.io
user リソースには :remove
アクションが用意されていた. ふむふむ.
Ansible だと
docs.ansible.com
Chef 同様に remove
パラメータが用意されたいた. ふむふむ.
ということで
必要であれば, 自分で実装してプルリクエストを送れば良いということで自己解決 (プルリクエストを送るとは言っていない). でも, なぜ, remove
または delete
が実装されていないのか聞いてみたい気もした.