Cloud Assembly는 Puppet Enterprise 구성 관리와의 통합을 지원합니다.

Cloud Assembly에 외부 시스템으로 Puppet Enterprise를 추가하면 기본적으로 모든 프로젝트에서 Puppet Enterprise를 사용할 수 있는데 이를 특정 프로젝트로 제한할 수 있습니다.

Puppet Enterprise를 통합을 추가하려면 마스터의 Puppet 마스터 이름과 마스터의 호스트 이름 또는 IP 주소가 있어야 합니다.

오류 또는 정보 용도로 Puppet 로그를 확인해야 하는 경우, 다음 위치에서 해당 로그를 찾을 수 있습니다.

설명 로그 위치
관련 이벤트 생성 및 설치에 대한 로그

배포된 시스템 `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`에 로그가 있습니다.

전체 로그는 log.txt 파일을 참조하십시오. 세부 Puppet 에이전트 로그에 대한 자세한 내용은 https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging을 참조하십시오.
Puppet 삭제 및 실행 관련 작업에 대한 로그 PE, `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`에 로그가 있습니다. 전체 로그는 log.txt 파일을 참조하십시오.

프로시저

  1. 인프라 > 연결 > 통합을 선택하고 통합 추가를 클릭합니다.
  2. Puppet을 선택합니다.
  3. Puppet 구성 페이지에 필요한 정보를 입력합니다.
    Puppet 통합이 제대로 작동하려면 제공된 자격 증명이 SSH 및 API 계정 모두에 대해 유효해야 합니다. 또한 지정된 OS 및 애플리케이션 사용자 계정의 사용자 이름과 암호가 동일해야 합니다.
  4. 클라우드 프록시가 필요한 경우 새 클라우드 프록시를 클릭하고 필요한 정보를 입력합니다. 일반적으로 클라우드 프록시는 vSphere를 사용 중인 경우에만 필요합니다. Cloud Assembly의 vCenter Server에 클라우드 프록시 추가 항목을 참조하십시오.
  5. 검증을 클릭하여 통합을 확인합니다.
  6. 추가를 클릭합니다.

결과

Puppet을 클라우드 템플릿에서 사용할 수 있습니다.

다음에 수행할 작업

Puppet 구성 요소를 원하는 클라우드 템플릿에 추가합니다.

  1. Cloud Assembly의 클라우드 템플릿에서 클라우드 템플릿 메뉴의 [컨텐츠 관리] 머리글 아래에 있는 Puppet을 선택하고 Puppet 구성 요소를 캔버스로 끌어다 놓습니다.
  2. 오른쪽 창에서 Puppet 속성을 입력합니다.
    속성 설명
    마스터 이 클라우드 템플릿에 사용되는 Puppet 기본 시스템의 이름을 입력합니다.
    환경 Puppet 기본 시스템의 환경을 선택합니다.
    역할 이 클라우드 템플릿에 사용할 Puppet 역할을 선택합니다.
    에이전트 실행 간격 Puppet 에이전트가 이 클라우드 템플릿과 관련하여 배포된 가상 시스템에 적용할 구성 세부 정보를 Puppet 기본 시스템에서 폴링하는 주기입니다.
  3. Puppet 구성 속성에 대한 YAML 코드를 보려면 오른쪽 창에서 [코드] 탭을 클릭합니다.

클라우드 템플릿에 Puppet 구성 요소를 추가하는 경우 YAML 파일에 installMaster 속성을 추가하여 컴파일 마스터라고도 하는 Puppet 설치 마스터를 가리킬 수 있습니다. 이 속성의 값은 Puppet 컴파일 마스터의 IP 주소 또는 호스트 이름일 수 있습니다. 이 속성을 사용하면 배포된 Puppet 가상 시스템의 향상된 기능에 액세스할 수 있으며 추가 2일차 작업도 지원됩니다.

  Puppet_Agent:
    type: Cloud.Puppet
    properties:
      account: PEIntegrationAccount
      environment: production
      role: 'role::linux_webserver'
      host: '${CentOS-Puppet.*}'
      username: root
      password: password123!
      installMaster: my-pe-compile-master.example.com
      agentConfiguration:
        certName: '${CentOS-Puppet.address}'
      osType: linux
      count: 1
참고: 여기에 정의된 사용자는 루트이지만 sudoers 목록에 포함된 모든 사용자로 클라우드 템플릿을 구성할 수 있습니다.

경우에 따라 기본적으로 vRealize Automation Cloud은 일부 시스템 관련 정보를 팩트로 Puppet 가상 시스템에 전달합니다. Windows 시스템에서는 사용자 지정 팩트가 지원되지 않습니다. Linux 시스템은 기본적으로 일부 정보가 전달되며 사용자 지정 속성을 사용하여 사용자가 추가 정보를 전달할 수 있습니다.

Linux의 Puppet 시스템에 전달되는 항목에는 몇 가지 제한이 있습니다. 호스트 리소스 및 Puppet 에이전트의 사용자 지정 속성은 Puppet 가상 시스템에 전달됩니다. 네트워크 리소스의 사용자 지정 속성은 가상 시스템에 전달되지 않습니다. 전달되는 항목에는 단순 속성, 부울 속성은 물론 사용자 지정 이름 유형과 어레이가 있는 중첩된 맵과 같은 복잡한 유형이 포함됩니다.

다음 예는 호스트 리소스에서 다양한 사용자 지정 리소스를 호출할 수 있는 방법을 보여줍니다.

resources:
  Puppet-Host:
    type: Cloud.AWS.EC2.Instance
    properties:
      customer_specified_property_on_ec2_resource: "property"
      customer_specified_property_on_network_resource_that_should_also_be_a_fact_and_is_boolean: true
      CustomerNameStuff: "zone A"
      try_map:
      key: value
      keytwo: value
      nested_array:
        - one
        - two
        - true
      try_array:
        - one
        - two
        -three:
           inner_key: value

Puppet 지우기 명령으로 인해 오류가 발생하면 대부분의 경우 vRealize Automation Cloud은 노드에 대한 지우기 오류를 무시하고 노드 지우기를 진행합니다. 특정 노드에 대한 인증서를 찾을 수 없는 경우에도 vRealize Automation Cloud은 삭제를 진행합니다. vRealize Automation Cloud에서 어떤 이유로든 노드 삭제를 진행할 수 없으면 [배포] 페이지 [작업] 메뉴에서 [삭제]를 클릭하여 노드 삭제를 진행할 수 있는 대화 상자를 열 수 있습니다. 클라우드 템플릿에서 Puppet 통합을 제거한 다음 이 템플릿을 배포에 적용하면 유사한 워크플로가 실행됩니다. 이 워크플로는 위에 설명된 대로 처리되는 노드 지우기 작업을 트리거합니다.

Puppet Enterprise와 통합하려면 공용 IP 주소가 필요합니다. Puppet Enterprise 시스템에 대해 구성된 공용 IP 주소가 없으면 첫 번째 NIC의 IP 주소가 사용됩니다.

vSphere 시스템에서 실행되는 Puppet 프로비저닝된 시스템의 NIC에 IP 주소가 여러 개 있는 경우 클라우드 템플릿에서 primaryAddress YAML 속성을 사용하여 연결에 사용할 IP 주소를 지정할 수 있습니다. primaryAddress 속성이 NIC에 할당되면 이 NIC의 IP 주소가 Puppet에서 사용됩니다. 하나의 NIC만 기본으로 지정할 수 있습니다. primaryAddress 속성이 사용되는 방법의 예는 다음 YAML 코드 조각을 참조하십시오.

BaseVM:
  type: Cloud.vSphere.Machine
  properties:
   image: photon
   count: 2
   customizationSpec: Linux
   cpuCount: 1
   totalMemoryMB: 1024
   networks:
    - network: '${resource.dev.id}'
     deviceIndex: 0
     primaryAddress: true
     assignment: static
    - network: '${resource.prod.id}'
     deviceIndex: 1
     assignment: static

가상 시스템 NIC에 대해 primaryAddress 속성이 설정되지 않은 경우 클라우드 템플릿 논리는 기본적으로 IP 주소 선택에 대한 현재 동작으로 설정됩니다.