厨师"档案"内容丰富的资源

时间:2015-12-02 22:13:07

标签: chef chef-recipe chef-solo

我正在使用文件资源并将内容属性指定为文件内容。但是,内容很大,我无法直接在文件属性中声明内容。

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

请建议是否有更好的方式来声明内容(当内容很大时)。

3 个答案:

答案 0 :(得分:1)

将内容放在食谱中files/下的文件中,并使用cookbook_file资源。

答案 1 :(得分: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-private”]属性的值设置为该键,或将其设置为您的角色/食谱中的节点属性。

答案 2 :(得分:0)

使用coderanger描述的cookbook_file资源可能是更正确的方法。

但是,如果您真的想在没有单独文件的情况下执行此操作,则可以将Heredoc与文件资源一起使用。

     *       [I'M A RECT 1]


[I'M A RECT 2]  
               [I'M A RECT 3]
[I'M A RECT 4]