%20%EA%B4%80%EB%A0%A8%20%EB%AC%B8%EC%A0%9C%20%22....%20%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80%EB%A7%8C%20%EC%9B%90%ED%95%98%EB%8A%94%20%EC%A0%80%EC%9E%A5%EC%86%8C%EA%B0%80%20%EC%95%84%EB%8B%99%EB%8B%88%EB%8B%A4.%22.png)
나는 puppet/Vcsrepo를 사용하여 Bitbucket(클라우드) 서버에서 여러 Linux 서버에 소프트웨어를 배포하고 업데이트합니다. 이것은 몇 년 동안 잘 작동했지만 약 6개월 전에 Puppet이 모든 저장소에 대해 불평하기 시작했습니다.Error: Path /usr/local/tools/... exists and is not the desired repository.
실행될 때마다 모든 저장소에 대해 불평하기 시작했습니다. Bitbucket의 Prem 버전에서 클라우드 버전으로 전환했을 때 문제가 시작된 것 같습니다.
경로를 삭제하고 puppet을 실행하면 디렉터리가 교체되고 다음 실행 시 다시 barfs가 실행됩니다. 업데이트가 필요할 때마다 저장소를 삭제했습니다.
꼭두각시 코드는 다음과 같이 단순화되었습니다.
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
예, git용 CVE 패치입니다.파산기존 구성. 이것은 지난 며칠 동안 Debian Buster에 릴리스되어 System Puppet(5.5.10-4)에서 손상을 일으켰습니다. Puppet 5를 지원하는 최신 버전인 vcsrepo 3.2.1에 사용할 수 있는 패치가 없는 것 같습니다. 내 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"],
}