我正在使用文件资源并将文件内容指定为内容属性。但是,内容很大,我无法直接在文件属性中声明内容。巨大内容的厨师“文件”资源
file "/var/django/.ssh/id_rsa" do
content "huge content"
owner "django"
group "django"
mode 00600
end
请建议是否有更好的方法来声明内容(当内容很大时)。
我正在使用文件资源并将文件内容指定为内容属性。但是,内容很大,我无法直接在文件属性中声明内容。巨大内容的厨师“文件”资源
file "/var/django/.ssh/id_rsa" do
content "huge content"
owner "django"
group "django"
mode 00600
end
请建议是否有更好的方法来声明内容(当内容很大时)。
虽然,您提到您不需要单独的文件,但创建私有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-私人”]属性的关键,还是有它在你的角色设置为一个节点的属性值的数据包/食谱。
将内容放入食谱中files/
的文件中,并使用cookbook_file
资源。
其实,我不想使用cookbook_file,因为那样我需要包含一个单独的文件。我希望一切都只是字符串的一部分。 – meallhour
你不能要求更好的方法,然后说你想完全按照你所要求的方式去做。 – coderanger
在文件资源上声明'content'通常只适用于当你的食谱在某处动态生成内容时。如果它是静态的,你应该使用'cookbook_file'并按照@coderanger的建议存储文件。 –