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)
除了执行此特定操作外,还有更好的资源类型吗?如果是这样,有人可以详细说明吗?
该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资源。