我已經編寫了一個自定義資源sshd_allow_groups
,它是動作更改了一些節點的屬性,並且這些屬性用於創建/etc/sshd_config
的默認配方(託管自定義資源)的模板。但是,由於自定義資源通常是從其他食譜中調用的,因此我無法保證在對屬性進行更改後將調用模板資源,從而產生需要2個廚師運行來獲取希望的變化。CHEF:將資源設置爲在調用另一個(自定義)資源時結束運行一次
我正在尋找一種方法來觸發模板資源後資源被調用,並在最後運行(以防萬一資源被調用多次)。 notifies
不起作用,因爲模板的操作不是:nothing
,也不應該是,因爲如果對於某個不需要資源的節點,模板仍然需要寫入。
我的自定義資源:
resource_name :sshd_allow_groups
property :group, String, name_property: true
default_action :append
action :append do
currently = node['tom-ssh']['allow_groups']
if currently
if !currently.include?(group)
node.normal['tom-ssh']['allow_groups'] = currently | [group]
end
else
node.normal['tom-ssh']['allow_groups'] = [group]
end
end
action :remove do
currently = node['tom-ssh']['allow_groups']
if currently && currently.include?(group)
node.normal['tom-ssh']['allow_groups'] = currently - [group]
end
end
另一個配方應該說是這樣的:
sshd_allow_groups "bob" do
action :append
end
只是通知從您的自定義資源調用延遲,它將最終呈現模板兩次,但仍然在最後得到正確的文件。也就是說,除非您確切知道自己在做什麼,否則不要使用正常水平,否則當您希望從組中刪除某人時會發生意外。總而言之,這聽起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem),你要求修復一個無效的解決方案你真正的問題。 – Tensibai
'通知'不起作用(我最終認爲我需要使用它來修復:http://stackoverflow.com/questions/21176576/how-to-i-get-a-chef-custom-lwrp-到實現 - 通知 - 和不-IF)。我真正想要發生的事情不是完全需要「通知」,所以資源本身會照顧(更乾的代碼)。爲什麼你認爲這是一個XY問題?你認爲我的X是什麼? –
據我所知,你希望管理sshd_config文件。你在自定義資源和其他地方更新屬性和模板之間進行分割,如果目標是緩解屬性更新,然後去找一個輔助庫,它將在編譯時可用於每一本烹飪書,修復你的編譯vs收斂實際問題,其中屬性計算得太晚。 – Tensibai