在厨师食谱中更改目录

Joa*_*dro 2 cookbook chef-infra chef-recipe rhel7

这是我第一次写厨师食谱。我正在尝试编写一个配方,该配方将自动安装git,创建新目录(git_repo/),更改为该目录,初始化为git存储库,然后在节点上运行Chef-client后连接到远程git存储库。我安装了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
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ing 6

execute资源的属性cwd

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

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

execute 'init' do
  command "git init"
  cwd "/home/git_repo"
end
Run Code Online (Sandbox Code Playgroud)

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

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

execute 'init' do
  command "git init"
  cwd "/home/git_repo"
  creates "/home/git_repo/.git"
end
Run Code Online (Sandbox Code Playgroud)

作为一般说明,我不确定是否真的要初始化一个空的存储库。如果只想克隆存储库,请使用git资源。