我已经通过厨师食谱创建了一个文件。代码如下。
execute "helloworld.txt" do
command "mkdir /etc/#{node['jboss']['user']}"
not_if { ::File.exists?("/etc/#{node['jboss']['user']}")}
end
file "/etc/jboss-as/helloworld.txt" do
owner 'user'
group 'user'
mode 0755
action :create_if_missing
end
template "/etc/jboss-as/helloworld.txt" do
source "helloworld.txt.erb"
end我的helloworld.txt文件内容如下:
TESTING
Hello World
Hello Winnie
Hello Everyone
Hello Boy我想编辑Hello Boy to Hello Girl,使用代码编辑上面的命令,我应该使用什么命令,我需要做什么?我不想直接从helloworld.txt更改内容。
请在下面发表评论以显示您的解决方案。谢谢你。
发布于 2014-11-18 12:03:17
你已经问了一长串关于厨师的非常基本的问题。我强烈建议您通读一些教程和在线培训材料,而不是要求有效地为您完成工作。
也就是说,您需要的是两个资源。首先是用于创建所需目录的目录资源:
directory "/etc/#{node['jboss']['user']}" do
user node['jboss']['user']
mode '755'
end这将创建所需的目录,并确保所有者和模式与所请求的相匹配。这比使用mkdir更安全,因为它并不是在所有情况下都是收敛的(不会纠正所有者/模式被更改的情况)。
在此之后,您需要创建该文件。Chef中有4个主要选项,分别是file、cookbook_file、template和remote_file。所有这四个都是相关的,并且共享相同的核心选项(user、group、mode),但从不同的位置获取文件内容。
file用于编写由您的配方代码生成的内容。这对于写出空文件(默认设置)或配方生成的JSON/Yaml数据非常方便。
cookbook_file从食谱的files/部分逐字复制文件内容。这对于二进制文件非常有用,比如您不想修改的许可证密钥,只需按原样传输到目标系统即可。
template类似于cookbook_file,但是在写出内容之前通过Erb模板语言运行内容。这允许基于节点属性或搜索查询等内容的动态内容。
remote_file从提供的URL下载文件内容,而不是从Chef Server获取文件内容。
在这种情况下,看起来template可能就是您想要的:
template "/etc/#{node['jboss']['user']}/helloworld.txt" do
user node['jboss']['user']
mode '644'
source 'helloworld.txt.erb'
endhttps://stackoverflow.com/questions/26985580
复制相似问题