%20%C2%AB...%20%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%2C%20%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D0%BC%D1%8B%D0%BC%20%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B5%D0%BC%C2%BB..png)
Я использую puppet/Vcsrepo для распространения и обновления программного обеспечения на нескольких серверах Linux с сервера Bitbucket(cloud). Это работало нормально в течение многих лет, но около 6 месяцев назад Puppet начал жаловаться на каждый репозиторий Error: Path /usr/local/tools/... exists and is not the desired repository.
при каждом запуске. Я думаю, что проблема могла начаться, когда мы перешли с локальной версии Bitbucket на облачную версию.
Если я удаляю путь и запускаю puppet, он заменяет каталог, а затем снова блеет при следующем запуске. Я в итоге удалял репозитории всякий раз, когда мне нужно было их обновить.
Код puppet был упрощен до:
define deploy(Array $names) {
$names.each |$repo| {
vcsrepo { "/usr/local/tools/$repo":
ensure => present,
provider => git,
user => 'tools',
source => "https://[email protected]/uoa/$repo.git",
}
}
}
.....
$names_list = [
'common-library',
'common-tools'
]
...::deploy {"base-tools":
names => $names_list,
}
Есть идеи, в чем проблема или как ее диагностировать?
решение1
Да, патч CVE для gitсломанныйваша существующая конфигурация. Это было выпущено на Debian Buster в последние несколько дней, вызвав поломку там на системе puppet (5.5.10-4). Похоже, нет патча для vcsrepo 3.2.1, последней версии с поддержкой Puppet 5. Я не уверен, почему мои машины Bullseye, похоже, не затронуты.
Если вы можете обновиться до Puppet 6, то текущая версия vcsrepo справится с этой задачей.
Если нет, то в качестве обходного пути вы можете сделать следующее:
один раз:
concat { '/etc/gitconfig' :
owner => 'root',
group => 'root',
mode => '0644',
}
и затем в вашем определении внутри каждого цикла:
concat::fragment { "gitconfig_$repo" :
target => '/etc/gitconfig',
content => "[safe]\n\tdirectory = /usr/local/tools/$repo\n\n",
before => Vcsrepo["/usr/local/tools/$repo"],
}