2015-12-02 45 views
0

我正在使用文件資源並將文件內容指定爲內容屬性。但是,內容很大,我無法直接在文件屬性中聲明內容。巨大內容的廚師「文件」資源

file "/var/django/.ssh/id_rsa" do 
    content "huge content" 
    owner "django" 
    group "django" 
    mode 00600 
end 

請建議是否有更好的方法來聲明內容(當內容很大時)。

+0

在文件資源上聲明'content'通常只適用於當你的食譜在某處動態生成內容時。如果它是靜態的,你應該使用'cookbook_file'並按照@coderanger的建議存儲文件。 –

回答

0

雖然,您提到您不需要單獨的文件,但創建私有SSH密鑰的正確方法是使用加密的數據包。管理加密數據包的最簡單方法是通過廚師保險庫。您可以在這裏閱讀更多關於如何使用Chef vault進行設置:http://jtimberman.housepub.org/blog/2013/09/10/managing-secrets-with-chef-vault/

vault_ssh = ChefVault::Item.load("secrets", "vaultuser-ssh-private") 

directory "/home/vaultuser/.ssh" do 
    owner "vaultuser" 
    group "vaultuser" 
    mode 0700 
end 

file "/home/vaultuser/.ssh/id_rsa" do 
    content vault_ssh["vaultuser-ssh-private"] 
    owner "vaultuser" 
    group "vaultuser" 
    mode 0600 
end 

如果你想跳過你可以只設置vault_ssh [「vaultuser-SSH-私人」]屬性的關鍵,還是有它在你的角色設置爲一個節點的屬性值的數據包/食譜。

1

將內容放入食譜中files/的文件中,並使用cookbook_file資源。

+0

其實,我不想使用cookbook_file,因爲那樣我需要包含一個單獨的文件。我希望一切都只是字符串的一部分。 – meallhour

+2

你不能要求更好的方法,然後說你想完全按照你所要求的方式去做。 – coderanger