这是我第一次尝试写一本厨师食谱。我正在尝试编写一个能够自动安装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
除了执行此特定操作之外,是否还有更好的资源类型?如果是这样,有人可以详细说明吗?
答案 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
资源。