更改Chef Recipe中的目录

时间:2017-01-06 21:36:15

标签: chef chef-recipe cookbook rhel7

这是我第一次尝试写一本厨师食谱。我正在尝试编写一个能够自动安装git,创建一个新目录(git_repo/),更改到该目录,初始化为git存储库,然后在运行chef后连接到远程git存储库的配方-client在我的节点上。我得到它来安装git并制作目录,但我不确定如何在配方中写入将目录更改为git_repo。我的代码是

package 'git' do
  action :install 
end 

directory '/home/git_repo' do   
  mode 0755   
  owner 'root'   
  group 'root'   
  action :create 
end

execute 'change' do
  command "sudo cd git_repo" 
end

除了执行此特定操作之外,是否还有更好的资源类型?如果是这样,有人可以详细说明吗?

1 个答案:

答案 0 :(得分:4)

execute资源作为属性cwd

  

cwd:运行命令的当前工作目录。

要从git_repo/目录中运行命令作为工作目录,请使用以下声明:

execute 'init' do
  command "git init"
  cwd "/home/git_repo"
end

由于这很可能在第二次厨师运行时失败(因为git init不会成功),您应该使用creates属性guard此资源:

  

creates:当该文件已存在时,阻止命令创建文件。

execute 'init' do
  command "git init"
  cwd "/home/git_repo"
  creates "/home/git_repo/.git"
end

总的来说,我不确定,如果你真的想初始化一个空的存储库。如果您只想克隆存储库,请使用git资源。