Red Hat Satellite에서 Puppet 통합을 사용하여 구성 관리

Red Hat Satellite 6.11

Puppet 통합을 사용하여 호스트 구성을 관리하고 호스트 시스템 상태를 Satellite에 보고

Red Hat Satellite Documentation Team

초록

이 가이드에서는 Satellite와 Puppet 통합을 활성화하고, 호스트의 Puppet 에이전트를 구성하고, Puppet 모듈을 가져오는 방법, Puppet 모듈을 사용하여 Red Hat Satellite 인프라에서 관리되는 호스트에 구성을 적용하는 방법을 설명합니다.

Red Hat 문서에 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선할 수 있는지 알려 주십시오.

Bugzilla에서 티켓을 제출하여 피드백을 제출할 수 있습니다.

  1. Bugzilla 웹 사이트로 이동합니다.
  2. 구성 요소 필드에서 문서를 사용합니다.
  3. 설명 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  4. 버그 제출을 클릭합니다.

1장. Puppet을 사용하여 구성 관리 소개

Puppet을 사용하여 호스트 구성을 관리하고 자동화할 수 있습니다. Puppet은 선언적 언어를 사용하여 원하는 관리 호스트 상태를 설명합니다.

Puppet은 여러 호스트를 동시에 관리할 수 있으므로 생산성을 높입니다. 동시에 Puppet을 사용하면 호스트 상태를 쉽게 확인하고 수정할 수 있으므로 구성 작업이 감소합니다.

추가 리소스

1.1. Puppet과 Satellite 통합 방법

Puppet은 server-agent 아키텍처를 사용합니다. Puppet 서버는 구성 정의를 저장하는 중앙 구성 요소입니다. Satellite Server 또는 Capsule은 일반적으로 Puppet 서버와 Satellite를 사용하여 이러한 Puppet 서버의 ENC(외부 노드 분류기) 역할을 하여 배포됩니다. 관리 호스트는 Puppet 서버와 통신하는 Puppet 에이전트를 실행합니다.

Puppet 에이전트는 호스트에 대한 팩트 를 수집하고 각 실행 시 Puppet 서버에 보고합니다. 호스트에서 puppet 팩트를 실행하여 Puppet 팩트 를 JSON 형식으로 표시할 수 있습니다.

Puppet 서버는 나중에 사용할 수 있도록 팩트 를 Satellite 및 Satellite에 전달합니다. 사실 및 기타 정의를 기반으로 Satellite는 Puppet 서버에 ENC 응답을 구성합니다. Puppet 서버는 ENC 응답을 기반으로 카탈로그 를 컴파일하고 카탈로그 를 Puppet 에이전트로 보냅니다.

Puppet 에이전트는 호스트에서 시스템 상태를 평가합니다. Puppet 에이전트에서 드리프트 라고 하는 차이점을 발견하면 카탈로그에 정의된 원하는 상태와 실제 상태 사이에서 호스트 상태를 수정합니다. 그런 다음 Puppet 에이전트는 수정 결과를 Puppet 서버에 다시 보고하여 Satellite에 보고합니다.

Puppet 모듈

원하는 호스트 상태는 카탈로그에 정의됩니다. 카탈로그 는 호스트에 할당된 하나 이상의 Puppet 모듈로 구성된 Puppet 매니페스트에서 컴파일됩니다. Puppet 모듈은 클래스, 매니페스트, 리소스, 파일 및 템플릿의 컬렉션입니다. Puppet 모듈은 호스트 구성 정의의 구성 요소로 작동합니다.

스마트 클래스 매개변수

모듈에서 매개변수 사용을 지원하는 경우 Smart Class 매개변수를 사용하여 Puppet 모듈의 매개변수를 재정의할 수 있습니다. Satellite의 매개 변수를 호스트 매개 변수 또는 Ansible 변수와 유사한 키-값 쌍으로 정의할 수 있습니다.

Puppet 환경

여러 Puppet 환경을 생성하여 구성 정의 버전을 제어하거나 정의 변형을 관리하고, 프로덕션에 배포하기 전에 정의를 테스트할 수도 있습니다.

높은 수준의 통합 단계

Puppet Satellite와 Satellite 통합에는 다음과 같은 고급 단계가 포함됩니다.

  1. Puppet 통합을 활성화합니다.
  2. Puppet 에이전트 패키지를 Satellite로 가져옵니다. Puppet 에이전트 패키지는 Red Hat 리포지토리를 활성화하고 활성화 키 및 콘텐츠 뷰를 사용하여 Satellite를 사용하여 다른 컨텐츠 와 마찬가지로 관리할 수 있습니다.
  3. 프로비저닝 중 호스트에 Puppet 에이전트를 설치, 등록, 수동으로 또는 원격 작업 실행을 통해 설치합니다.

다음 절차에서는 Puppet 모듈을 사용하여 ntp 서비스를 설치, 구성, 관리하는 방법을 간략하게 설명합니다.

1.2. 지원되는 Puppet 버전 및 시스템 요구 사항

Puppet 통합을 시작하기 전에 지원되는 Puppet 버전 및 시스템 요구 사항을 검토하십시오.

지원되는 Puppet 버전

Satellite는 다음 Puppet 버전을 지원합니다.

  • Puppet 7
시스템 요구 사항
Puppet을 Satellite와 통합하기 전에 시스템 요구 사항을 충족해야 합니다. 자세한 내용은 오픈 소스 Puppet 설명서에서 Puppet 7의 시스템 요구 사항을 참조하십시오.

1.3. Satellite와 Puppet 통합 활성화

기본적으로 Satellite에는 Puppet 통합이 구성되어 있지 않습니다. 상황에 적합한 경우 통합을 활성화해야 합니다. 즉, Satellite Server 또는 Capsule에 Puppet 서버를 관리하고 배포하도록 Satellite를 구성할 수 있습니다. 또한 Puppet 서버를 외부에서 Satellite에 배포하고 이를 Satellite와 통합하여 ENC(외부 노드 분류)를 보고, 팩트 및 외부 노드 분류를 수행할 수 있습니다.

절차

  1. Puppet 통합을 활성화하고 Satellite 서버에 Puppet 서버를 설치합니다.

    # satellite-installer --enable-foreman-plugin-puppet \
    --enable-foreman-cli-puppet \
    --foreman-proxy-puppet true \
    --foreman-proxy-puppetca true \
    --foreman-proxy-content-puppet true \
    --enable-puppet \
    --puppet-server true \
    --puppet-server-foreman-ssl-ca /etc/pki/katello/puppet/puppet_client_ca.crt \
    --puppet-server-foreman-ssl-cert /etc/pki/katello/puppet/puppet_client.crt \
    --puppet-server-foreman-ssl-key /etc/pki/katello/puppet/puppet_client.key
  2. Capsule에서 Puppet 통합을 사용하려면 Puppet 통합을 활성화하고 Capsule에 Puppet 서버를 설치합니다.

    # satellite-installer --foreman-proxy-puppet true \
    --foreman-proxy-puppetca true \
    --foreman-proxy-content-puppet true \
    --enable-puppet \
    --puppet-server true \
    --puppet-server-foreman-ssl-ca /etc/pki/katello/puppet/puppet_client_ca.crt \
    --puppet-server-foreman-ssl-cert /etc/pki/katello/puppet/puppet_client.crt \
    --puppet-server-foreman-ssl-key /etc/pki/katello/puppet/puppet_client.key \
    --puppet-server-foreman-url "https://satellite.example.com"

    --puppet-server-foreman-url 인수 값으로 Satellite 서버의 URL을 입력합니다.

1.4. 호스트 프로비저닝 중 Puppet 에이전트 설치

호스트 프로비저닝 프로세스 중에 Puppet 에이전트를 설치합니다.

절차

  1. 호스트 > 프로비저닝 템플릿으로 이동합니다.
  2. 호스트 프로비저닝 방법에 따라 프로비저닝 템플릿을 선택합니다. 자세한 내용은 프로비저닝 가이드의 프로비저닝 템플릿 유형을 참조하십시오.
  3. puppet_setup 스니펫이 다음과 같이 포함되어 있는지 확인합니다.

    <%= snippet 'puppet_setup' %>
  4. 단일 호스트 또는 호스트 그룹에 대해 호스트 매개변수를 사용하여 Puppet을 활성화합니다.

    Puppet 7에 대해 enable-puppet7 이라는 호스트 매개변수를 true 로 설정된 부울 유형으로 추가합니다.

  5. 선택 사항: yum.puppet.com 에서 직접 Puppet 에이전트를 설치하려면 부울 유형으로 부울 형식으로 enable-puppetlabs-puppet7-repo 라는 호스트 매개 변수를 추가합니다. 활성화 키를 사용하여 호스트에 Puppet 에이전트를 제공하지 않는 경우에만 이 기능을 사용합니다.

1.5. 수동으로 호스트에 Puppet 에이전트 설치 및 구성

호스트에 Puppet 에이전트를 수동으로 설치하고 구성합니다.

사전 요구 사항

  • 호스트에는 Puppet 환경이 할당되어 있어야 합니다.
  • Satellite 클라이언트 6 리포지토리를 활성화 및 Satellite Server에 동기화하고 호스트에서 활성화해야 합니다. 자세한 내용은 콘텐츠 관리에서 콘텐츠 가져오기를 참조하십시오.

절차

  1. root 사용자로 호스트에 로그인합니다.
  2. Puppet 에이전트 패키지를 설치합니다.

    • Red Hat Enterprise Linux 8 이상을 실행하는 호스트에서 다음을 수행합니다.

      # dnf install puppet-agent
    • Red Hat Enterprise Linux 7 이하를 실행하는 호스트에서 다음을 수행합니다.

      # yum install puppet-agent
  3. 다음 스크립트를 사용하여 현재 쉘의 PATH 에 Puppet 에이전트를 추가합니다.

    . /etc/profile.d/puppet-agent.sh
  4. Puppet 에이전트를 구성합니다. environment 매개변수를 호스트가 속한 Puppet 환경의 이름으로 설정합니다.

    # puppet config set server satellite.example.com --section agent
    # puppet config set environment My_Puppet_Environment --section agent
  5. Puppet 에이전트 서비스를 시작합니다.

    # puppet resource service puppet ensure=running enable=true
  6. 호스트에 대한 인증서를 생성합니다.

    # puppet ssl bootstrap
  7. Satellite 웹 UI에서 Infrastructure > Capsules 로 이동합니다.
  8. 필수 Capsule Server에 대한 Actions (작업) 열의 목록에서 CloudEvent 를 선택합니다.
  9. 필요한 호스트 오른쪽에 있는 Sign 을 클릭하여 Puppet 에이전트의 SSL 인증서에 서명합니다.
  10. 호스트에서 Puppet 에이전트를 다시 실행합니다.

    # puppet ssl bootstrap

1.6. 구성 관리 수행

호스트에 Puppet 에이전트를 배포한 후 Puppet으로 구성 관리를 수행할 수 있습니다. 여기에는 다음과 같은 고급 단계가 포함됩니다.

  1. Puppet 서버에서 Puppet 모듈을 설치 및 업데이트합니다.
  2. Puppet 모듈에서 Satellite로 Puppet 클래스 및 환경 가져오기.
  3. 선택사항: Puppet 클래스에서 구성 그룹 생성.
  4. 다양한 수준에서 스마트 클래스 매개 변수의 덮어쓰기 구성.
  5. 호스트 그룹 또는 개별 호스트에 Puppet 클래스 또는 구성 그룹을 할당합니다.
  6. 호스트에서 Puppet 에이전트 실행 및 Puppet 서버의 구성 적용 실행 간격 구성.
  7. Satellite 웹 UI의 보고서를 사용하여 구성 관리 모니터링. 자세한 내용은 Monitoring Resources in Administering Red Hat Satellite 를 참조하십시오.
  8. 이메일 알림 구성. 자세한 내용은 Red Hat Satellite 관리에서 이메일 알림 구성을 참조하십시오.

Puppet 클래스 또는 구성 그룹을 할당한 후 Satellite는 구성된 간격으로 구성 관리를 자동으로 실행하여 관리 호스트에 Puppet 구성을 적용하거나 필요에 따라 Puppet once 실행 기능을 사용하여 수동으로 시작할 수 있습니다. 자세한 내용은 9.1절. “SSH를 사용하여 Puppet 한 번 실행”의 내용을 참조하십시오.

1.7. Satellite를 통한 Puppet 통합 비활성화

Satellite에서 Puppet 사용을 중단하려면 다음 절차를 따르십시오.

--remove-all-data 인수가 없는 명령은 Satellite 데이터베이스의 모든 Puppet 관련 데이터를 제거합니다. --remove-all-data 인수를 사용하면 명령에서 Puppet 환경을 포함한 Puppet 서버 데이터 파일을 추가로 제거합니다.

주의

--remove-all-data 인수를 사용하여 Puppet을 비활성화하면 나중에 Puppet을 다시 활성화할 수 없습니다. 이는 알려진 문제입니다. 버그 2087067 을 참조하십시오.

사전 요구 사항

  • Puppet은 Satellite에서 활성화됩니다.

절차

  1. Capsule에서 Puppet 서버를 사용한 경우 모든 Capsule에서 Puppet 서버를 비활성화합니다.

    # satellite-maintain plugin purge-puppet --remove-all-data
  2. Satellite 서버에서 Puppet 서버를 비활성화합니다.

    # satellite-maintain plugin purge-puppet --remove-all-data

2장. Puppet 모듈 관리

2.1. Satellite 서버에 Puppet 모듈 설치

Puppet Forge에서 사전 빌드된 Puppet 모듈을 설치할 수 있습니다. Puppet Forge는 커뮤니티에서 기여한 Puppet 모듈을 제공하는 리포지토리입니다. 지원으로 플래그가 지정된 Puppet 모듈은 공식적으로 Puppet Inc에서 테스트하고 있습니다.

이 예제에서는 관리 호스트에 ntp 모듈을 추가하는 방법을 보여줍니다.

절차

  1. forge.puppet.com 으로 이동하여 ntp 를 검색합니다. 첫 번째 모듈 중 하나는 puppetlabs/ntp 입니다.
  2. SSH를 사용하여 Satellite 서버에 연결하고 Puppet 모듈을 설치합니다.

    # puppet module install puppetlabs-ntp -i /etc/puppetlabs/code/environments/production/modules

    -i 매개변수를 사용하여 경로와 Puppet 환경을 지정합니다(예: production ).

    설치가 완료되면 출력은 다음과 같습니다.

    Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
    Notice: Created target directory /etc/puppetlabs/code/environments/production/modules
    Notice: Downloading from https://forgeapi.puppet.com ...
    Notice: Installing -- do not interrupt ...
    /etc/puppetlabs/code/environments/production/modules
    |-| puppetlabs-ntp (v8.3.0)
      |-- puppetlabs-stdlib (v4.25.1) [/etc/puppetlabs/code/environments/production/modules]

Puppet 모듈을 설치하는 다른 방법은 위에서 언급한 대로 Puppet 모듈이 포함된 폴더를 모듈 경로에 복사하는 것입니다. 해당 종속성을 수동으로 해결하십시오.

2.2. Puppet 모듈 업데이트

puppet 명령을 사용하여 기존 Puppet 모듈을 업데이트할 수 있습니다.

절차

  1. SSH를 사용하여 Puppet 서버에 연결하고 Puppet 모듈이 있는 위치를 확인합니다.

    # puppet config print modulepath

    다음과 같이 출력이 반환됩니다.

    /etc/puppetlabs/code/environments/production/modules:/etc/puppetlabs/code/environments/common:/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules:/usr/share/puppet/modules
  2. 위에 표시된 대로 모듈이 경로에 있는 경우 다음 명령은 모듈을 업데이트합니다.

    # puppet module upgrade module name

3장. Puppet 클래스 및 환경을 Satellite로 가져오기

클래스를 관리 호스트에 할당하기 전에 설치된 Puppet 모듈에서 Satellite Server 또는 연결된 Capsule Server로 Puppet 클래스 및 환경을 가져옵니다.

사전 요구 사항

  • 모든 조직 및 컨텍스트로 모든 위치를 선택해야 합니다. 그렇지 않으면 가져오기에 실패할 수 있습니다.

절차

  1. Satellite 웹 UI에서 Configure > Classes 또는 Configure > Environments로 이동합니다.
  2. 오른쪽 상단 모서리에서 가져오기 버튼을 클릭하고 모듈을 가져올 Capsule을 선택합니다. 일반적으로 Satellite Server 또는 연결된 Capsule Server 중에서 선택할 수 있습니다.
  3. 왼쪽에서 확인란을 사용하여 가져올 Puppet 환경을 선택합니다.
  4. Update 버튼을 클릭하여 Puppet 환경 및 클래스를 Satellite로 가져옵니다.
  5. 가져오기에 다음과 같이 알림이 발생해야 합니다.

    Successfully updated environments and Puppet classes from the on-disk Puppet installation

4장. 사용자 지정 Puppet 환경 생성

Satellite에 Puppet 환경을 생성할 수 있습니다.

절차

  1. Satellite 웹 UI에서 Configure > Puppet Environments 로 이동합니다.
  2. Puppet 환경 생성을 클릭하여 Puppet 환경을 생성합니다.
  3. example_environment 와 같이 이름, 영숫자 및 밑줄을 입력합니다.
  4. 선택 사항: 위치 컨텍스트를 설정합니다.
  5. 선택 사항: 조직 컨텍스트를 설정합니다.
  6. Submit 을 클릭하여 Puppet 환경을 만듭니다.

Puppet 모듈을 Satellite로 가져오기 전에 환경이 이미 Puppet 서버의 /etc/puppetlabs/code/environments/example_environment 폴더로 있어야 하며 설치된 Puppet 모듈이 포함되어 있어야 합니다.

5장. Puppet 구성 그룹 생성

Puppet 구성 그룹은 기능을 결합하고 클릭 한 번에 관리 호스트에 할당할 수 있는 Puppet 클래스의 이름이 지정된 목록입니다. 이는 순수 Puppet의 프로필 개념과 동일합니다.

절차

  1. Satellite 웹 UI에서 Configure > Config Groups로 이동합니다.
  2. Create Config Group 버튼을 클릭합니다.
  3. 구성 그룹에 추가할 클래스를 선택합니다.

    1. Puppet 구성 그룹의 의미 있는 이름을 선택합니다.
    2. 선택한 Puppet 클래스를 포함된 클래스 필드에 추가합니다.
  4. Submit 을 클릭하여 변경 사항을 저장합니다.

6장. Puppet 스마트 클래스 매개변수 구성

6.1. Puppet 매개 변수 계층 구조

Puppet 매개변수는 계층적으로 구조화됩니다. 더 낮은 수준의 매개변수는 더 높은 수준의 매개변수를 재정의합니다.

  1. 전역 매개변수
  2. 조직 매개변수
  3. 위치 매개변수
  4. 호스트 그룹 매개변수
  5. 호스트 매개변수

예를 들어 호스트별 매개변수는 상위 수준에서 매개변수를 재정의하고 위치 매개 변수는 조직 또는 글로벌 수준의 매개변수만 재정의합니다. 이 기능은 위치 또는 조직을 사용하여 호스트를 그룹화할 때 특히 유용합니다.

6.2. 스마트 클래스 매개 변수 재정의

Puppet 클래스를 Satellite 서버로 가져온 후 구성할 수 있습니다. 이 예제에서는 기본 ntp 서버 목록을 덮어씁니다.

절차

  1. Satellite 웹 UI에서 Configure > Classes로 이동합니다.
  2. ntp Puppet 클래스를 선택하여 구성을 변경합니다.
  3. Smart Class Parameter 탭을 선택하고 서버를 검색합니다.
  4. Override 확인란이 선택되었는지 확인합니다.
  5. 매개 변수 유형 드롭다운 메뉴를 array 로 설정합니다.
  6. ntp 서버 목록을 기본값으로 삽입합니다.

    ["0.de.pool.ntp.org","1.de.pool.ntp.org","2.de.pool.ntp.org","3.de.pool.ntp.org"]

    배열을 설명하는 다른 방법은 yaml 구문입니다.

    - 0.de.pool.ntp.org
    - 1.de.pool.ntp.org
    - 2.de.pool.ntp.org
    - 3.de.pool.ntp.org
  7. 값을 추가한 후 Submit 버튼을 클릭합니다. 이렇게 하면 Puppet 모듈 ntp 의 기본 구성이 변경됩니다.

6.3. 조직에 대한 스마트 클래스 매개 변수 덮어쓰기

호스트 그룹을 사용하여 한 번에 여러 호스트의 Puppet 매개변수를 덮어쓸 수 있습니다. 다음 예제에서는 컨텍스트 기반 매개변수 설정을 설명하기 위해 조직 컨텍스트를 선택합니다.

조직- 수준 Puppet 매개 변수는 위치- 수준 Puppet 매개변수로 재정의됩니다.

절차

  1. Satellite 웹 UI에서 Configure > Classes로 이동합니다.
  2. 클래스 이름을 클릭하여 클래스를 선택합니다.
  3. Smart Class Parameter 탭에서 매개변수를 선택합니다.
  4. Order 목록을 사용하여 Puppet 매개변수의 계층을 정의합니다. 개별 호스트(fqdn)는 가장 많은 조직 컨텍스트(조직)를 가장 덜 관련성으로 표시합니다.
  5. 첫 번째 일치 항목을 찾은 후 추가로 일치하는 모든 매개변수를 추가하려면 ScanSetting Overrides 를 선택합니다.
  6. 더 구체적인 값이 정의되어 있어도 기본값을 포함하려는 경우 기본값을 확인합니다.
  7. 선택한 매개변수에 대한 고유 값 목록을 작성하려는 경우 Duplicates 를 선택합니다.
  8. matcher 필드에는 순서 목록의 속성 유형이 필요합니다.
  9. 일치자 추가 버튼을 사용하여 더 많은 일치자를 추가합니다.
  10. Submit 을 클릭하여 변경 사항을 저장합니다.

6.4. 위치에 대한 스마트 클래스 매개 변수 덮어쓰기

호스트 그룹을 사용하여 한 번에 여러 호스트의 Puppet 매개변수를 덮어쓸 수 있습니다. 다음 예제에서는 컨텍스트 기반 매개변수 설정을 설명하는 위치 컨텍스트를 선택합니다.

절차

  1. Satellite 웹 UI에서 Configure > Classes로 이동합니다.
  2. 클래스 이름을 클릭하여 클래스를 선택합니다.
  3. Smart Class Parameter 탭에서 매개변수를 선택합니다.
  4. Order 목록을 사용하여 Puppet 매개변수의 계층을 정의합니다. 개별 호스트(fqdn)는 가장 많이 및 위치 컨텍스트(위치)를 가장 관련성이 낮은 것으로 표시합니다.
  5. 첫 번째 일치 항목을 찾은 후 추가로 일치하는 모든 매개변수를 추가하려면 ScanSetting Overrides 를 선택합니다.
  6. 더 구체적인 값이 정의되어 있어도 기본값을 포함하려는 경우 기본값을 확인합니다.
  7. 선택한 매개변수에 대한 고유 값 목록을 작성하려는 경우 Duplicates 를 선택합니다.
  8. matcher 필드에는 순서 목록의 속성 유형이 필요합니다. 예를 들어 위치 컨텍스트로 페르 크를 선택하고 값을 프랑스어 ntp 서버로 설정할 수 있습니다.
  9. 일치자 추가 버튼을 사용하여 더 많은 일치자를 추가합니다.
  10. Submit 을 클릭하여 변경 사항을 저장합니다.

6.5. 개별 호스트에서 스마트 클래스 매개 변수 덮어쓰기

개별 호스트에서 매개변수를 재정의할 수 있습니다. 호스트가 여러 개 있고 단일 호스트만 변경하려는 경우에만 권장됩니다.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. 호스트 이름을 클릭하여 호스트를 선택합니다.
  3. 편집 을 클릭합니다.
  4. Host 탭에서 Puppet 환경을 선택합니다.
  5. Puppet ENC 탭을 선택합니다.
  6. 덮어쓰기 버튼을 클릭하여 Puppet 매개 변수를 편집합니다.
  7. Submit 을 클릭하여 변경 사항을 저장합니다.

7장. 호스트 그룹에 Puppet 클래스 할당

호스트 그룹을 사용하여 ntp Puppet 클래스를 한 번에 여러 호스트에 할당합니다. 이 호스트 그룹을 기반으로 배포하는 모든 호스트에는 이 Puppet 클래스가 설치됩니다.

절차

  1. Satellite 웹 UI에서 Configure > Host Groups 로 이동하여 호스트 그룹을 생성하거나 기존 그룹을 편집합니다.
  2. Host Group 탭에서 다음 매개변수를 설정합니다.

    1. 라이프사이클 환경은 호스트에서 특정 버전의 콘텐츠를 사용할 수 있는 단계를 설명합니다.
    2. 콘텐츠 뷰 는 제품으로 구성되며 콘텐츠 리포지토리의 버전 제어를 허용합니다.
    3. 환경을 사용하면 자체 전용 구성이 있는 호스트 그룹을 제공할 수 있습니다.
  3. Puppet ENC 탭으로 이동합니다.
  4. Puppet 클래스를 Puppet 구성 그룹이 구성된 경우 포함된 클래스 또는 포함된 구성 그룹에 추가합니다.
  5. Submit 을 클릭하여 변경 사항을 저장합니다.

8장. 개별 호스트에 Puppet 클래스 할당

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. ntp Puppet 클래스를 추가할 호스트의 편집 버튼을 클릭합니다.
  3. Puppet ENC 탭을 선택하고 ntp 클래스를 찾습니다.
  4. ntp 옆에 있는 + 기호를 클릭하여 포함된 클래스 목록에 ntp 하위 모듈을 추가합니다.
  5. 하단에서 Submit 버튼을 클릭하여 변경 사항을 저장합니다.

    작은 정보

    개별 호스트의 Puppet 클래스 탭이 비어 있으면 적절한 Puppet 환경에 할당되어 있는지 확인합니다.

  6. Puppet 구성을 확인합니다.

    1. 호스트 > 모든 호스트로 이동하여 호스트를 선택합니다.
    2. 상단 오버플로 메뉴에서 Legacy UI 를 선택합니다.
    3. 세부 정보에서 Puppet YAML 버튼을 클릭합니다. 이렇게 하면 다음과 유사한 출력이 생성됩니다.

      ---
      parameters:
        // shortened YAML output
      classes:
        ntp:
          servers: '["0.de.pool.ntp.org","1.de.pool.ntp.org","2.de.pool.ntp.org","3.de.pool.ntp.org"]'
      environment: production
      ...
  7. ntp 구성을 확인합니다.

    SSH를 사용하여 호스트에 연결하고 /etc/ntp.conf 의 내용을 확인합니다.

    이 예에서는 호스트가 CentOS 7 을 실행 중이라고 가정합니다. 다른 운영 체제는 ntp 구성 파일을 다른 경로에 저장할 수 있습니다.

    작은 정보

    다음 명령을 실행하여 호스트에서 Puppet 에이전트를 실행해야 할 수도 있습니다.

    # puppet agent -t
  8. 호스트에서 다음 명령을 실행하면 클럭 동기화에 사용되는 ntp 서버가 있는지 확인합니다.

    # cat /etc/ntp.conf

    다음과 유사한 출력이 반환됩니다.

    # ntp.conf: Managed by puppet.
    server 0.de.pool.ntp.org
    server 1.de.pool.ntp.org
    server 2.de.pool.ntp.org
    server 3.de.pool.ntp.org

이제 ntp 구성을 롤아웃하기 위해 호스트 또는 호스트 그룹에 추가할 수 있는 작동 중인 ntp 모듈이 있습니다.

9장. 관리 호스트에서 Puppet 구성 적용

Satellite의 구성을 요청 시 수동(한 번 실행)하거나 구성 가능한 간격으로 자동으로 시행할 수 있습니다.

9.1. SSH를 사용하여 Puppet 한 번 실행

관리 호스트에서 Puppet을 실행하도록 적절한 작업 템플릿을 Run Puppet once 기능에 할당합니다.

절차

  1. Satellite 웹 UI에서 Administer > Remote Execution Features 로 이동합니다.
  2. puppet_run_host 원격 실행 기능을 선택합니다.
  3. Run Puppet once - SSH Default 작업 템플릿을 할당합니다.

작업을 실행하고 카테고리 Puppet 및 template Run Puppet once - SSH Default를 선택하여 관리 호스트에서 Puppet 을 실행합니다. 또는 호스트 세부 정보 페이지의 Schedule Remote Job 드롭다운 메뉴에서 Run Puppet once 버튼을 클릭합니다.

9.2. 자동 적용 간격 이해

마지막 Puppet 보고서가 몇 분 내에 설정된 outofsync_intervalpuppet_interval 의 결합된 값보다 오래된 경우 Satellite에서는 호스트가 동기화되지 않는 것으로 간주합니다. 기본적으로 관리 호스트의 Puppet 에이전트는 30분마다 실행되고 puppet_interval 은 35분으로 설정되고 글로벌 outofsync_interval 은 30분으로 설정됩니다.

호스트가 동기화되지 않은 것으로 간주되는 유효 시간은 outofsync_intervalpuppet_interval 의 합계입니다. 예를 들어 글로벌 outofsync _interval 을 30으로 설정하고 puppet_interval 을 60으로 설정하면 호스트 상태가 동기화되지 않도록 변경한 후 총 90분으로 설정됩니다.

9.3. 호스트에서 Puppet 에이전트 실행 간격 설정

Puppet 에이전트가 실행되고 보고서를 Satellite로 전송하는 간격을 설정합니다.

절차

  1. SSH를 사용하여 관리 호스트에 연결합니다.
  2. Puppet 에이전트 실행 간격을 /etc/puppetlabs/puppet/puppet.conf 에 추가합니다(예: runinterval = 1h ).

9.4. Global Out-of-Sync Interval 설정

절차

  1. Satellite 웹 UI에서 Administer > Settings 로 이동합니다.
  2. 일반 탭에서 동기화 간격 부족을 편집합니다. 기간(분)을 설정합니다. 이후 호스트는 동기화되지 않는 것으로 간주됩니다.

    outofsync_interval 매개변수를 추가하여 호스트 그룹 또는 개별 호스트에서 이 간격을 재정의할 수도 있습니다.

9.5. Puppet Out-of-Sync 간격 설정

절차

  1. Satellite 웹 UI에서 Administer > Settings 로 이동하여 Config Management 탭을 클릭합니다.
  2. Puppet 간격 필드에서 값을 기간(분)으로 설정한 후 Puppet을 사용하여 보고하는 호스트가 동기화되지 않은 것으로 간주됩니다.

9.6. 호스트 그룹에 대한 동기화 부족 간격 덮어쓰기

절차

  1. Satellite 웹 UI에서 Configure > Host Groups 로 이동합니다.
  2. 호스트 그룹을 선택합니다.
  3. Parameters 탭에서 매개 변수 추가를 클릭합니다.
  4. Name 필드에 outofsync_interval 을 입력합니다.
  5. 유형 드롭다운 메뉴에서 정수 를 선택합니다.
  6. 필드에 새 간격을 분 단위로 입력합니다.
  7. Submit 버튼을 클릭합니다.

9.7. 개별 호스트에 대한 동기화 외부 간격 덮어쓰기

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. 선택한 호스트에 대해 Edit 를 클릭합니다.
  3. Parameters 탭에서 매개 변수 추가를 클릭합니다.
  4. Name 필드에 outofsync_interval 을 입력합니다.
  5. 유형 드롭다운 메뉴에서 정수 를 선택합니다.
  6. 필드에 새 간격을 분 단위로 입력합니다.
  7. Submit 버튼을 클릭합니다.

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.