Смена каталога в Chef Recipe

Это моя первая попытка написать кулинарную книгу для шеф-повара. Я пытаюсь написать рецепт, который автоматически установит git, создаст новый каталог (git_repo/), перейдет в этот каталог, инициализируется как репозиторий git, а затем подключится к удаленному репозиторию git после запуска chef-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

Есть ли лучший тип ресурса, который можно использовать для этого конкретного действия, помимо выполнения? Если да, то может ли кто-нибудь уточнить это?


person Joao Pedro    schedule 06.01.2017    source источник
comment
К вашему сведению, нет необходимости использовать sudo. Все, что делает chef-client, делается с привилегиями суперпользователя, если не указано иное.   -  person StephenKing    schedule 07.01.2017


Ответы (1)


Ресурс execute как свойство cwd:

cwd: текущий рабочий каталог, из которого выполняется команда.

Чтобы запустить команду из каталога git_repo/ в качестве рабочего каталога, используйте следующее объявление:

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

Поскольку это, скорее всего, не удастся при втором запуске повара (потому что git init не удастся), вам следует guard этот ресурс, используя свойство creates:

creates: Запретить команде создать файл, если этот файл уже существует.

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

В общем, я не уверен, действительно ли вы хотите инициализировать пустой репозиторий. Если вы просто хотите клонировать репозиторий, используйте ресурс git.

person StephenKing    schedule 06.01.2017
comment
Спасибо за ответ! Я учту то, что ты сказал. - person Joao Pedro; 07.01.2017