首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过chef recipe编辑文件内容?

如何通过chef recipe编辑文件内容?
EN

Stack Overflow用户
提问于 2014-11-18 10:28:52
回答 1查看 3.4K关注 0票数 0

我已经通过厨师食谱创建了一个文件。代码如下。

代码语言:javascript
复制
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文件内容如下:

代码语言:javascript
复制
TESTING 
Hello World 
Hello Winnie 
Hello Everyone 
Hello Boy

我想编辑Hello Boy to Hello Girl,使用代码编辑上面的命令,我应该使用什么命令,我需要做什么?我不想直接从helloworld.txt更改内容。

请在下面发表评论以显示您的解决方案。谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2014-11-18 12:03:17

你已经问了一长串关于厨师的非常基本的问题。我强烈建议您通读一些教程和在线培训材料,而不是要求有效地为您完成工作。

也就是说,您需要的是两个资源。首先是用于创建所需目录的目录资源:

代码语言:javascript
复制
directory "/etc/#{node['jboss']['user']}" do
  user node['jboss']['user']
  mode '755'
end

这将创建所需的目录,并确保所有者和模式与所请求的相匹配。这比使用mkdir更安全,因为它并不是在所有情况下都是收敛的(不会纠正所有者/模式被更改的情况)。

在此之后,您需要创建该文件。Chef中有4个主要选项,分别是filecookbook_filetemplateremote_file。所有这四个都是相关的,并且共享相同的核心选项(usergroupmode),但从不同的位置获取文件内容。

file用于编写由您的配方代码生成的内容。这对于写出空文件(默认设置)或配方生成的JSON/Yaml数据非常方便。

cookbook_file从食谱的files/部分逐字复制文件内容。这对于二进制文件非常有用,比如您不想修改的许可证密钥,只需按原样传输到目标系统即可。

template类似于cookbook_file,但是在写出内容之前通过Erb模板语言运行内容。这允许基于节点属性或搜索查询等内容的动态内容。

remote_file从提供的URL下载文件内容,而不是从Chef Server获取文件内容。

在这种情况下,看起来template可能就是您想要的:

代码语言:javascript
复制
template "/etc/#{node['jboss']['user']}/helloworld.txt" do
  user node['jboss']['user']
  mode '644'
  source 'helloworld.txt.erb'
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26985580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档