Puppet이 환경을 전환한 다음 다시 전환하는 이유는 무엇입니까?

Puppet이 환경을 전환한 다음 다시 전환하는 이유는 무엇입니까?

이는 Puppet 5.5.22 및 Foreman 1.22.0-develop과 함께 제공됩니다. 나는 이것이 오래된 Foreman and Puppet 설치라는 것을 알고 있지만 새 버전(곧 예정된 프로젝트)으로 교체할 때까지 이를 처리해야 합니다.

# puppet agent -tv
Notice: Local environment: 'production' doesn't match server specified node environment 'development', switching agent to 'development'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Notice: Local environment: 'development' doesn't match server specified environment 'test', restarting agent run with environment 'test'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for servername.example.com
Info: Applying configuration version '1694623566'
Notice: Applied catalog in 12.93 seconds

원래 로컬 환경 '프로덕션'은 /etc/puppet/puppet.conf에서 올 수 있거나 해당 파일에 환경이 지정되지 않은 경우 기본값이라는 것을 이해합니다. 이 경우 후자입니다(로컬로 환경이 지정되지 않음).

노드 환경 '개발'은 Foreman(이 Puppet 설치를 위한 ENC 또는 외부 노드 분류자)에서 이 호스트에 대해 설정되었으며 원하는 올바른 환경 할당입니다.

'테스트' 환경은 Foreman이 현재 모든 호스트에 대해 광범위하고 일반적으로 설정하고 있는 환경이며 Foreman UI를 통해 '개발'로 변경하기 전에 이 특정 호스트가 있었던 환경입니다. (즉, '테스트'는 실제로 우리의 프로덕션 환경이며, '프로덕션'이라는 환경은 현재 사용되지 않습니다.)

Foreman 문서를 참고해 보았지만 환경 할당이 작동하는 방식의 기초에 대해 아무것도 찾지 못했습니다. 문서는 문제 해결에 도움이 되지 않는 UI 둘러보기에 불과했습니다.


아마도 관련이 있을 것 같지만 여기에는 servername.example.com이 나타나는 또 다른 이상한 점이 있습니다.두 배Foreman의 UI에서.

이름 운영 체제 꼭두각시 환경 모델 호스트 그룹 마지막 보고서 행위
[물레] 서버 이름 데비안 [버전] 개발 [블레이드서버 이름] 호스트 그룹 이름 [공백] [편집 버튼]
[전원 아이콘, 회색] 서버 이름 데비안 [버전] 시험 표준 PC [버전 정보] [공백] 6분 전 [편집 버튼]

"편집" 버튼을 클릭하여 두 항목 중 하나에 대한 환경을 편집하려고 하면 "제출"을 클릭하면 마치 생성하려는 것처럼 "이름" 필드 옆에 "이미 사용되었습니다"라는 메시지가 빨간색으로 표시됩니다. 새로운 호스트 항목.

그러나 대신 목록 보기 왼쪽에 있는 확인란을 사용하여 호스트를 선택한 다음 맨 위로 이동하여 "작업 선택" -> "환경 변경"을 선택하면나타납니다일하다. 그러면 두 항목 모두 UI에 "개발"로 표시됩니다. 그러나 servername에서 실행되는 다음 Puppet은 이 게시물의 상단에 표시된 출력을 생성하고 Foreman UI를 새로 고친 후 "development"가 포함된 항목 하나와 "test"가 포함된 항목 하나가 다시 표시됩니다.

이 문제의 원인은 무엇입니까? 환경에 호스트를 할당하고 이를 고정하려면 어떻게 해야 합니까?

답변1

나는 이것을 해결했다.

Puppet 설정에는 여전히 어딘가에 Puppet 3 구성의 잔존물이 남아 있다는 점에서 특이한 점이 있습니다. 정확히 어디에 있는지는 확실하지 않지만 "테스트"로 되돌아가는 목록의 서버 항목에는 꼭두각시 마스터도 다음과 같이 표시되었습니다. 오래된 인형 서버. 해당 인형 서버는 더 이상 존재하지 않지만 새로운 포어맨 서버에도 해당 이름이 있습니다. 좀 복잡하고 두 개의 서로 다른 항목이 어디서 왔는지 완전히 이해하지 못하지만 다음과 같이 플래핑 환경 할당을 수정했습니다.

  1. Foreman UI에서 두 호스트 항목을 모두 삭제합니다(확인 메시지를 주의 깊게 읽고 이로 인해 호스트 또는 디스크가 삭제되지 않으며 의도한 두 호스트 항목만 확인에 나열되었는지 확인).
  2. Puppet 서버에서(즉, 명령줄에서 Foreman 서버에 로그인함) 다음을 실행합니다.puppet cert clean servername.example.com
  3. servername.example.com에서 디렉토리를 삭제합니다. /var/lib/puppet/ssl/(저는 find /var/lib/puppet/ssl/ -deletean도 rm -rf /var/lib/puppet/ssl/잘 작동하지만 사용했습니다.)
  4. servername.example.com에서 헤더 아래에 /etc/puppet/puppet.conf설정할 파일을 편집합니다 .environment = development[agent]
  5. 을 사용하여 servername.example.com에서 꼭두각시를 다시 실행합니다 puppet agent -tv.

이는 일치하지 않는 환경에 대한 경고 없이 개발 환경의 코드를 올바르게 적용했으며 이제 Foreman UI는 이 서버에 대해 단 하나의 항목만 표시하고 해당 환경을 development.

관련 정보