簡體   English   中英

從Chef LWRP更新節點標簽

[英]Update node tags from Chef LWRP

對於給定的用例,我需要通過自定義LWRP更新節點的標簽。 我嘗試了兩種方法:

  • 使用“標簽” /“取消標簽”。 產生錯誤:

     No resource or method named `tag' for ... 
  • 使用node[:tags].concat(<new_tags_array>) 此方法有效,但標簽不會持久存在,因此我無法將其用於搜索。

我在這里缺少什么嗎?

謝謝

編輯:實際上,問題是:甚至有可能從提供者那里更新節點屬性嗎?

EDIT2:因此,這正確設置了標簽:

 tags = node[:tags]
 tags.concat(new_tags)
 node.override[:tags] = tags

但是,這些標簽會在每次廚師客戶端運行中重置,因此,如果在添加新標簽之前(第二次廚師客戶端運行中)檢查是否存在任何這些新標簽,則不會獲得任何標簽。

我發現了問題所在。

綜上所述:最初的問題是我無法在LWRP的提供程序中使用Chef的標記/取消標記方法(可能有這樣做的方法,但我沒有找到任何方法),因此我選擇了修改“標記”節點上的'屬性,其中包含所有標簽。

對於我來說,在廚師客戶運行之間保持標簽不變也很重要。

實現此目的的方法是將屬性類型設置為normal ,根據廚師文檔永遠不會重置該屬性類型:

在廚師客戶端運行開始時,將重置所有默認,覆蓋和自動屬性。 廚師客戶端使用廚師在客戶端運行開始時Ohai收集的數據以及在食譜,角色和環境中定義的屬性來重建它們。 普通屬性永遠不會重置。 然后根據屬性優先級將所有屬性合並並應用於節點。 Chef-Client運行結束時,所有默認,覆蓋和自動屬性都將消失,僅保留正常屬性的集合,這些屬性將持續到下一次Chef-Client運行。

這將使它:

    tags = node[:tags]
    tags.concat(new_tags)
    node.normal[:tags] = tags

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM