%20%E2%80%9E%E2%80%A6%20existiert%20und%20ist%20nicht%20das%20gew%C3%BCnschte%20Repository.%E2%80%9C.png)
Ich verwende Puppet/Vcsrepo, um Software von einem Bitbucket-Server (Cloud) auf eine Reihe von Linux-Servern zu verteilen und zu aktualisieren. Das hat jahrelang gut funktioniert, aber vor etwa 6 Monaten begann Puppet, bei Error: Path /usr/local/tools/... exists and is not the desired repository.
jedem Lauf über jedes Repository zu klagen. Ich denke, das Problem könnte begonnen haben, als wir von einer lokalen Version von Bitbucket auf die Cloud-Version umgestiegen sind.
Wenn ich den Pfad lösche und Puppet ausführe, ersetzt es das Verzeichnis und stürzt beim nächsten Ausführen erneut ab. Ich habe die Repositorys jedes Mal gelöscht, wenn ich sie aktualisieren musste.
Der Puppet-Code wurde wie folgt vereinfacht:
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,
}
Irgendwelche Ideen, was das Problem ist oder wie es diagnostiziert werden kann?
Antwort1
Ja, ein CVE-Patch für GitPleiteIhre vorhandene Konfiguration. Dies wurde in den letzten Tagen auf Debian Buster veröffentlicht und verursachte dort Störungen auf dem System Puppet (5.5.10-4). Es scheint kein Patch für vcsrepo 3.2.1 verfügbar zu sein, die neueste Version mit Puppet 5-Unterstützung. Ich bin mir nicht sicher, warum meine Bullseye-Maschinen nicht betroffen zu sein scheinen.
Wenn Sie auf Puppet 6 aktualisieren können, übernimmt die aktuelle vcsrepo-Version dies.
Wenn nicht, können Sie das Problem folgendermaßen umgehen:
einmal:
concat { '/etc/gitconfig' :
owner => 'root',
group => 'root',
mode => '0644',
}
und dann in Ihrem Define innerhalb der each-Schleife:
concat::fragment { "gitconfig_$repo" :
target => '/etc/gitconfig',
content => "[safe]\n\tdirectory = /usr/local/tools/$repo\n\n",
before => Vcsrepo["/usr/local/tools/$repo"],
}