сделать командную строку git красочной, используя puppet - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь сделать командную строку git красочной, используя puppet и получаю сообщение об ошибке.Чего мне не хватает?

exec { 'make-git-color':
  command => '/usr/bin/git config --global color.ui auto',
  logoutput => 'on_failure',
  user      => 'vagrant',
  timeout   => 1200,
  require   => Package['git']
}

Ошибка:

 /Exec[make-git-color]/returns: fatal: $HOME not set
Error: '/usr/bin/git config --global color.ui auto' returned 128 instead of one of [0]

Команда, работающая напрямую, работает нормально./usr/bin/git config --global color.ui auto

Но мне нужно сделать это через марионетку.

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Сообщение об ошибке показывает, что git жалуется на то, что переменная окружения HOME не установлена. Другие ответы описывают, как вы можете предоставить значение для этой переменной, но это не обязательно правильный подход к этой конкретной проблеме.

Учтите, что тот факт, что git заботится о HOME, говорит о том, что он пытается установить конфигурацию на уровне пользователя. Если это действительно то, что вы хотите, то хорошо, но делать это через Puppet кажется немного излишним против . просто запускаю команду напрямую. С другой стороны, если с помощью «--global» вы решили установить свойство на уровне для всей системы , то вас ждет сюрприз. git config --global устанавливает "глобальную" конфигурацию в смысле воздействия на все репозитории конкретного пользователя (которые не переопределяют его). Общесистемные свойства выбираются с помощью опции --system:

exec { 'make-git-color':
  command => '/usr/bin/git config --system color.ui auto',
  logoutput => 'on_failure',
  user      => 'vagrant',
  timeout   => 1200,
  require   => Package['git'],
  unless    => 'git config --list --system | grep -q color.ui=auto',
}

В этом случае вам также следует рассмотреть вопрос о целесообразности запуска команды от имени пользователя 'vagrant', так как неясно, имеет ли этот пользователь соответствующие полномочия для изменения общесистемной конфигурации.

Вам также следует подумать, нужен ли вам такой длительный таймаут. Я не совсем понимаю обстоятельства, при которых вы ожидаете, что потребуется достаточно много времени, чтобы обрести разумную уверенность в том, что команда повисла.

0 голосов
/ 13 сентября 2018

Я реализовал обходной путь, используя файл.

file { '/home/vagrant/.gitconfig':
    content => "[color]\n        ui = auto",
    owner   => 'vagrant',
    group   => 'vagrant',
    require => Package['git'],
  }

но ответ, который дал Алекс выше, может быть правильным.собираюсь попробовать это сейчас :)

0 голосов
/ 11 сентября 2018

Как говорится в сообщении об ошибке, $ HOME не установлен. Вам нужно изменить свой код на что-то вроде этого, чтобы установить отсутствующую переменную среды:

exec { 'make-git-color':
  command     => '/usr/bin/git config --global color.ui auto',
  logoutput   => 'on_failure',
  user        => 'vagrant',
  environment => 'HOME=/home/vagrant',
  require     => Package['git']
}

Это будет работать (я проверял это). Документы для передачи переменных среды в exec: здесь .

Обратите внимание, что я также удалил тайм-аут, который не требовался.

Если вам нужно также обеспечить идемпотентность, в соответствии с комментариями ниже измените его на:

exec { 'make-git-color':
  command     => 'git config --global color.ui auto',
  unless      => 'git config --list --global | grep -q color.ui=auto',
  path        => '/usr/bin',
  logoutput   => 'on_failure',
  user        => 'vagrant',
  environment => 'HOME=/home/vagrant',
  require     => Package['git']
}
...