在 Chef Recipe 中更改目录
Changing directory within Chef Recipe
这是我第一次尝试写一本厨师食谱。我正在尝试编写一个自动安装 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
除了针对此特定操作执行之外,是否还有更好的资源类型可供使用?如果是这样,有人可以详细说明吗?
execute
资源作为 属性 cwd
:
cwd
: The current working directory from which a command is run.
为了 运行 来自 git_repo/
目录的命令作为工作目录,使用以下声明:
execute 'init' do
command "git init"
cwd "/home/git_repo"
end
因为这很可能在第二位厨师 运行 上失败(因为 git init
不会成功),您应该 guard 使用 creates
属性:
creates
: Prevent a command from creating a file when that file already exists.
execute 'init' do
command "git init"
cwd "/home/git_repo"
creates "/home/git_repo/.git"
end
一般来说,我不确定您是否真的要初始化一个空存储库。如果您只想克隆存储库,请使用 git
资源。
这是我第一次尝试写一本厨师食谱。我正在尝试编写一个自动安装 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
除了针对此特定操作执行之外,是否还有更好的资源类型可供使用?如果是这样,有人可以详细说明吗?
execute
资源作为 属性 cwd
:
cwd
: The current working directory from which a command is run.
为了 运行 来自 git_repo/
目录的命令作为工作目录,使用以下声明:
execute 'init' do
command "git init"
cwd "/home/git_repo"
end
因为这很可能在第二位厨师 运行 上失败(因为 git init
不会成功),您应该 guard 使用 creates
属性:
creates
: Prevent a command from creating a file when that file already exists.
execute 'init' do
command "git init"
cwd "/home/git_repo"
creates "/home/git_repo/.git"
end
一般来说,我不确定您是否真的要初始化一个空存储库。如果您只想克隆存储库,请使用 git
资源。