Puppet: Vcsrepo(git) 관련 문제 ".... 존재하지만 원하는 저장소가 아닙니다."

Puppet: Vcsrepo(git) 관련 문제 ".... 존재하지만 원하는 저장소가 아닙니다."

나는 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"],
      }

관련 정보