Повар на Ubuntu 19.10: сломанный рецепт - PullRequest
0 голосов
/ 29 октября 2019

Я попытался запустить рецепт шеф-повара в Ubuntu 19.10, который работает, как и ожидалось, в Ubuntu 18.04.3. В обеих версиях Ubuntu я установил chef 15.4.45-1, используя пакет, предоставленный на этом веб-сайте .

execute 'Git LFS: Install user configuration' do
  command 'git lfs install'

  user 'myusername'

  not_if 'git config --global filter.lfs.required | grep "true"', :user => 'myusername'
end

Я использую эту команду для запуска клиента chef: sudo chef-client -z -o "recipe[my-cookbook::my-recipe]"

Вывод:

  * execute[Git LFS: Install user configuration] action run

    ================================================================================
    Error executing action `run` on resource 'execute[Git LFS: Install user configuration]'
    ================================================================================

    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '2'
    ---- Begin output of git lfs install ----
    STDOUT: WARNING: Error running /usr/lib/git-core/git 'config' '--global' '--replace-all' 'filter.lfs.required' 'true': 'warning: unable to access '/root/.gitconfig': Permission denied
    warning: unable to access '/root/.config/git/config': Permission denied
    error: could not lock config file /root/.gitconfig: Permission denied' 'exit status 255'
    Run `git lfs install --force` to reset git config.
    STDERR: 
    ---- End output of git lfs install ----
    Ran git lfs install returned 2

Очевидно, что шеф-повар выполнил защиту not_if от имени пользователя root, а не предоставленного пользователя myusername.

Я что-то упустил?

1 Ответ

1 голос
/ 29 октября 2019

Шеф выполнил предложение not_if как ваше myusername. Однако при этом переменная окружения $HOME не была обновлена, чтобы указывать на HOME этого пользователя, но оставалась как /root.

. Таким образом, git попытался получить доступ к файлам в HOME root, что не удалось из-за myusername не имеет доступа к файлам там.

Чтобы исправить это, вы можете передать явную переменную среды HOME:

execute 'Git LFS: Install user configuration' do
  command 'git lfs install'

  user 'myusername'

  not_if 'git config --global filter.lfs.required | grep "true"', :user => 'myusername', :environment => { 'HOME' => '/home/myusername' }
end

См. https://docs.chef.io/resource_common.html#arguments для получения подробной информации о допустимых аргументах. .

...