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

Red Hat Satellite 6.12

Satellite에서 Ansible 통합을 사용하여 호스트 시스템 구성

Red Hat Satellite Documentation Team

초록

이 가이드에서는 Red Hat Satellite를 Ansible과 통합하는 방법과 Satellite에서 Ansible 역할 및 플레이북을 사용하여 원격 실행을 수행하고 반복적인 작업을 자동화하는 방법을 설명합니다.

Red Hat 문서에 피드백 제공

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

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

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

1장. Satellite에서 Ansible 시작하기

이 가이드를 사용하여 원격 실행 시 Ansible을 사용하도록 Satellite를 구성합니다.

1.1. 지원되는 Ansible 버전

Satellite는 Satellite Server의 기본 운영 체제에서 제공하는 Ansible 또는 원격 실행을 위해 Capsule을 사용합니다. 따라서 지원되는 Ansible 버전은 기본 OS 구성에 따라 다릅니다.

1.2. Ansible 역할을 실행하도록 Satellite 구성

Satellite에서는 일상적인 작업 자동화에 도움이 되도록 Ansible 역할을 가져올 수 있습니다. Ansible은 Satellite 서버에서 기본적으로 활성화되어 있습니다.

Ansible 경로

Satellite는 /etc/ansible/ansible.cfg 의 구성에 따라 경로에서 Ansible 역할 및 변수를 가져옵니다. 그런 다음 Satellite는 /etc/foreman-proxy/ansible.cfg 의 구성에 따라 경로에서 가져온 역할을 실행합니다. 두 경우 모두 Satellite는 roles_pathcollections_paths 지시문의 경로를 읽습니다. 이 두 개의 cfg 파일을 동기화 상태로 유지합니다. 그러지 않으면 실행할 수 없는 역할을 가져오거나 실행할 수 있는 역할이 표시되지 않을 수 있습니다.

구성 파일에 경로가 지정되지 않은 경우 다음 기본 경로가 사용됩니다.

  • /etc/ansible/roles
  • /usr/share/ansible/roles
  • /etc/ansible/collections
  • /usr/share/ansible/collections

절차

  1. Satellite Server에서 Ansible 경로 및 역할을 사용하려는 모든 Capsule Server를 구성합니다.
  2. Satellite Server의 Ansible 경로 및 역할을 사용하려는 모든 Capsule Server의 디렉터리에 역할을 추가합니다. 사용자 지정 또는 타사 Ansible 역할을 사용하려면 Satellite Server와 Capsule Server 간에 역할을 동기화하도록 외부 버전 제어 시스템을 구성해야 합니다.
  3. 호스트에서 Ansible 역할을 실행하는 데 사용할 모든 Capsule Server에서 Ansible 플러그인을 활성화합니다.

    # satellite-installer --scenario capsule \
    --enable-foreman-proxy-plugin-ansible
  4. SSH 키를 배포하여 SSH를 사용하여 Capsule이 호스트에 연결할 수 있도록 합니다. 자세한 내용은 호스트 관리에서 원격 실행을 위한 SSH 키 배포를 참조하십시오. Satellite는 원격 실행 작업을 실행하는 방식과 동일하게 Ansible 역할을 실행합니다.
  5. Ansible 역할을 Satellite로 가져옵니다.
  6. 2장. Ansible 역할을 사용하여 클라이언트에서 반복 작업 자동화 로 이동합니다.

1.3. Satellite와 Ansible 통합 활성화

다음 절차를 수행하여 Satellite 서버에서 Ansible 플러그인을 활성화합니다.

절차

  • Satellite 서버에서 Ansible 플러그인을 활성화합니다.

    # satellite-installer \
    --enable-foreman-plugin-ansible \
    --enable-foreman-proxy-plugin-ansible

1.4. Ansible 역할 및 변수 가져오기

Ansible 역할 및 변수를 Satellite Server 또는 Ansible이 활성화된 Capsule의 Ansible 경로에서 가져올 수 있습니다.

일부 역할은 다른 역할보다 가져오는 데 시간이 더 오래 걸립니다.

사전 요구 사항

  • 가져오는 역할과 변수가 역할을 사용하려는 위치의 모든 Capsules의 Ansible 경로에 있는지 확인합니다.

절차

  1. Satellite 웹 UI에서 Configure > Roles 로 이동합니다.
  2. Import 를 클릭하여 가져올 Capsule을 선택합니다.
  3. 가져올 역할을 선택합니다.
  4. Submit 을 클릭합니다.

1.5. Satellite에서 Ansible 변수 덮어쓰기

Satellite에서 Ansible 역할을 실행하는 경우 Satellite를 사용하여 해당 역할의 Ansible 변수를 재정의할 수 있습니다.

다음 절차에서는 호스트 및 호스트 그룹을 나타냅니다. 자세한 내용은 호스트 관리를 참조하십시오.

변수 덮어쓰기의 우선순위

Ansible 역할을 사용하여 효과적인 사용자가 아닌 사용자로 작업을 실행하는 경우 Ansible 변수를 재정의하기 위한 엄격한 우선 순위가 있습니다. 재정의된 변수가 올바른 우선 순위를 따르도록 하려면 변수 우선 순위: 변수를 어디에 넣어야 합니까?

사전 요구 사항

절차

  1. Satellite 웹 UI에서 Configure > Variables 로 이동합니다.
  2. Satellite를 사용하여 재정의하고 관리할 Ansible 변수를 선택합니다.
  3. 기본 >- < 영역에서 Override 확인란을 선택합니다.
  4. Parameter Type 필드에서 string 또는 boolean 과 같은 유효성 검사를 위한 값 유형을 선택합니다. types arrayhash 에는 변수 일치 시 처리할 수 있는 추가 옵션이 있습니다. 자세한 내용은 아래 특성 순서 영역의 우선순위 참조하십시오.
  5. Default Value 필드에 변수에 일치하는 항목이 없는 경우 사용할 기본값을 입력합니다.
  6. 선택 사항: Satellite 웹 UI에서 변수의 값을 일반 텍스트로 표시하지 않으려면 Hidden Value 확인란을 선택하여 변수의 콘텐츠를 별표로 표시합니다. 이는 암호 또는 시크릿 토큰과 같은 민감한 값에 유용합니다.
  7. 선택 사항: 선택적 입력 유효성 검사기 영역을 확장하고 변수의 관련 값을 확인하는 데 사용할 조건을 지정합니다.

    • 이 변수를 채우도록 사용자를 강제 적용하려면 Required 를 선택합니다.
    • Validator Type 필드에서 값의 유효성을 검사하는 방법을 선택합니다.

      • list - 허용되는 값의 CloudEvent에 대해 값의 유효성이 검사됩니다.
      • regex - 정규식 패턴에 대해 값의 유효성을 검사합니다.
  8. 선택 사항: 속성 순서 영역에 있는 우선순위는 호스트 속성별 호스트와 재정의하는 우선 순위의 순서를 지정합니다. 우선순위가 높은 경우 우선순위가 높습니다. 첫 번째 시합이 이겼다.

    쉼표를 AND 작업으로 사용하여 여러 특성을 단일 일치 요소로 결합할 수 있습니다. 예를 들어, 호스트 그룹의 일치 키인 환경에서는 hostgroup = "web servers"environment = production 과 같은 일치자를 예상합니다.

    매개변수 유형 배열 또는 해시 를 사용하는 경우 다음을 추가로 설정할 수 있습니다.

    • merge Overrides - 전체 배열 또는 해시를 교체하는 대신 array/hashes의 멤버입니다. 해시에 동일한 키가 포함된 경우 호스트 값으로 값을 덮어씁니다.
    • merge Default - 배열 또는 해시에 기본값을 추가합니다.
    • 중복 방지 - 배열 또는 해시의 값이 고유하도록 합니다. Avoid Duplicates - Ensures that the values in the array or hash are unique.
  9. 선택 사항: 일치자 지정 영역을 확장하고 변수가 재정의되는 호스트를 선택하기 위한 기준을 지정합니다.
  10. 재정의 설정을 저장하려면 Submit 을 클릭합니다.

Ansible 변수를 사용하려면 변수를 호스트 또는 호스트 그룹에 매개 변수로 추가하거나 변수를 글로벌 매개 변수로 추가합니다.

호스트에 변수 추가

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동하여 사용하려는 호스트를 선택합니다.
  2. Ansible 탭을 클릭하고 변수 영역에서 연필 아이콘을 클릭하여 변수 값을 편집합니다.
  3. 눈금 아이콘을 클릭하여 변경된 변수의 값 또는 교차 아이콘을 수락하여 변경 사항을 취소합니다.

호스트 그룹에 변수 추가

  1. Satellite 웹 UI에서 Configure > Host Groups 로 이동하여 사용할 호스트 그룹을 선택합니다.
  2. Parameters 탭을 클릭하고 Host Group Parameters 영역에서 매개 변수 추가를 클릭합니다.
  3. 이름 필드에 Ansible 변수 이름을 추가합니다.
  4. 유형 목록에서 검증을 위해 변수 유형을 선택합니다.
  5. 필드에 변수 값을 입력합니다.

전역 매개변수로 변수 추가

  1. Satellite 웹 UI에서 Configure > Global Parameters 로 이동하여 Create Parameter 를 클릭합니다.
  2. 이름 필드에 Ansible 변수 이름을 추가합니다.
  3. 유형 목록에서 검증을 위해 변수 유형을 선택합니다.
  4. 필드에 변수 값을 입력합니다.
  5. 선택 사항: 일반 텍스트에 Ansible 변수를 표시하지 않으려면 숨겨진 값 확인란을 선택하여 Satellite 웹 UI에 변수의 내용을 별표로 표시합니다.

1.6. Red Hat Enterprise Linux System Roles 추가

Red Hat Enterprise Linux System Roles는 Red Hat Enterprise Linux 서버를 원격으로 관리하는 구성 인터페이스입니다. Red Hat Enterprise Linux 시스템 역할을 사용하여 Satellite에 Ansible 역할을 추가할 수 있습니다. Satellite에서 Ansible 역할을 사용하면 구성을 더 빠르고 쉽게 만들 수 있습니다.

일부 Red Hat Enterprise Linux 시스템 역할에 대한 지원 수준은 기술 프리뷰일 수 있습니다. 지원 수준 및 Red Hat Enterprise Linux 시스템 역할에 대한 일반적인 정보는 Red Hat Enterprise Linux 시스템 역할을 참조하십시오.

Extras 채널에 가입하기 전에 Red Hat Enterprise Linux Extras 제품 라이프 사이클 문서를 참조하십시오.

절차

  1. 다음 리포지토리가 활성화되었는지 확인합니다.

    • Red Hat Enterprise Linux 8에서 Appstream 리포지토리가 활성화되어 있는지 확인합니다.

      # subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms

      아키텍처에 지정된 Appstream 리포지토리를 활성화해야 합니다. 자세한 내용은 RHEL 8 리포지토리를 참조하십시오.

    • Red Hat Enterprise Linux 7에서 Extras 리포지토리가 활성화되어 있는지 확인합니다.

      # subscription-manager repos --enable=rhel-7-server-extras-rpms
  2. rhel-system-roles 패키지를 설치합니다.

    # satellite-maintain packages install rhel-system-roles

    rhel-system-roles 패키지는 /usr/share/ansible/roles/. 가져오기 전에 파일을 보고 수정할 수 있습니다.

  3. Satellite 웹 UI에서 Configure > Roles 로 이동하여 가져오려는 역할이 포함된 Capsule을 클릭합니다.
  4. Ansible 역할 목록에서 가져올 역할의 확인란을 선택한 다음 업데이트를 클릭합니다.

이제 호스트 또는 호스트 그룹에 Ansible 역할을 할당할 수 있습니다. 자세한 내용은 2.1절. “기존 호스트에 Ansible 역할 할당”의 내용을 참조하십시오.

Ansible 작업 템플릿에 추가하여 이러한 역할에 포함된 모듈을 Ansible 플레이북에 추가할 수도 있습니다. 작업 템플릿에 hosts:all 행을 포함해야 합니다. 자세한 내용은 RHEL (Red Hat Enterprise Linux) 시스템 역할 을 참조하십시오.

1.7. Ansible 컬렉션 동기화

Satellite에서는 Private Automation Hub, console.redhat.com 및 기타 Satellite 인스턴스에서 Ansible 컬렉션을 동기화할 수 있습니다. Ansible Collections는 동기화 후 Satellite 웹 UI 메뉴에 새 리포지토리 유형으로 Satellite에 표시됩니다.

절차

  1. Satellite 웹 UI에서 콘텐츠 > 제품으로 이동합니다.
  2. 필요한 제품 이름을 선택합니다.
  3. 제품 창에서 리포지토리를 생성할 제품의 이름을 선택합니다.
  4. Repositories (리포지토리) 탭을 클릭한 다음 New Repository (새 리포지토리)를 클릭합니다.
  5. 이름 필드에 리포지토리의 이름을 입력합니다.

    Label 필드는 이름에 따라 자동으로 채워집니다.

  6. 유형 목록에서 ansible 컬렉션을 선택합니다.
  7. 업스트림 URL 필드에 업스트림 collections 리포지토리의 URL을 입력합니다.

    URL은 모든 Ansible Galaxy 엔드포인트가 될 수 있습니다. 예: https://console.redhat.com/api/automation-hub/.

  8. 선택 사항: Requirements.yml 필드에서 끝점에서 동기화할 컬렉션 목록과 해당 버전을 지정할 수 있습니다.

    컬렉션 목록을 지정하지 않으면 끝점의 모든 항목이 동기화됩니다.

    ---
    collections:
    - name: my_namespace.my_collection
      version: 1.2.3

    자세한 내용은 Galaxy User Guide 에서 요구 사항 파일을 사용하여 여러 컬렉션 설치를 참조하십시오.

  9. 인증.

    1. Private Automation Hub 에서 Satellite를 동기화하려면 Auth Token 필드에 토큰을 입력합니다.

      자세한 내용은 Connect to Hub 에서 Private Automation Hub 연결을 참조하십시오.

    2. console.redhat.com 에서 Satellite를 동기화하려면 Auth 토큰 필드에 토큰 을 입력하고 Auth URL 필드에 SSO URL을 입력합니다.

      자세한 내용은 자동화 허브 시작하기를 참조하십시오.

    3. Satellite에서 Satellite를 동기화하려면 두 인증 필드를 모두 비워 둡니다.
  10. 저장을 클릭합니다.
  11. Ansible Collections 리포지토리로 이동합니다.
  12. Select Action 메뉴에서 Sync Now 를 선택합니다.

2장. Ansible 역할을 사용하여 클라이언트에서 반복 작업 자동화

2.1. 기존 호스트에 Ansible 역할 할당

Satellite 클라이언트의 원격 관리를 위해 Ansible 역할을 사용할 수 있습니다.

사전 요구 사항

  • Ansible 역할을 구성하고 가져왔는지 확인합니다.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. 호스트를 선택하고 편집 을 클릭합니다.
  3. Ansible Roles (Ansible 역할) 탭의 Available Ansible Roles (사용 가능한 Ansible 역할) 목록에서 추가할 역할을 선택합니다.
  4. + 아이콘을 클릭하여 호스트에 역할을 추가합니다. 두 개 이상의 역할을 추가할 수 있습니다.
  5. Submit 을 클릭합니다.

호스트에 Ansible 역할을 할당한 후 Ansible을 사용하여 원격 실행을 수행할 수 있습니다. 자세한 내용은 3.13절. “원격 실행을 위한 SSH 키 배포”의 내용을 참조하십시오.

매개변수 변수 덮어쓰기

Parameters 탭에서 매개 변수 추가 를 클릭하여 런타임에 작업 템플릿에 전달할 매개변수 변수를 추가합니다. 여기에는 호스트와 연결할 모든 Ansible 플레이북 매개변수 및 호스트 매개변수가 포함됩니다. Ansible 작업 템플릿으로 매개변수 변수를 사용하려면 호스트 매개 변수를 추가해야 합니다.

2.2. 호스트에서 Ansible 역할 제거

다음 절차에 따라 호스트에서 Ansible 역할을 제거합니다.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. 호스트를 선택하고 편집 을 클릭합니다.
  3. Ansible Roles 탭을 선택합니다.
  4. Assigned Ansible Roles (할당된 Ansible 역할) 영역에서 - 아이콘을 클릭하여 호스트에서 역할을 제거합니다. 더 많은 역할을 제거하려면 반복합니다.
  5. Submit 을 클릭합니다.

2.3. Ansible 역할 순서 변경

다음 절차에 따라 호스트에 적용되는 Ansible 역할 순서를 변경합니다.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. 호스트를 선택합니다.
  3. Ansible Roles 탭을 선택합니다.
  4. Assigned Ansible Roles (할당된 Ansible 역할) 영역에서 역할을 끌어 원하는 위치로 끌어서 역할의 순서를 변경할 수 있습니다.
  5. Submit 을 클릭하여 Ansible 역할 순서를 저장합니다.

2.4. 호스트에서 Ansible 역할 실행

Satellite 웹 UI를 통해 호스트에서 Ansible 역할을 실행할 수 있습니다.

사전 요구 사항

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동합니다.
  2. 실행할 Ansible 역할이 포함된 호스트의 확인란을 선택합니다.
  3. Select Action (작업 선택) 목록에서 모든 Ansible 역할 실행을 선택합니다.

Ansible 역할 실행 페이지에서 Ansible 작업의 상태를 볼 수 있습니다. 작업을 다시 실행하려면 Rerun 버튼을 클릭합니다.

2.5. 호스트 그룹에 Ansible 역할 할당

Satellite 클라이언트의 원격 관리를 위해 Ansible 역할을 사용할 수 있습니다.

사전 요구 사항

절차

  1. Satellite 웹 UI에서 Configure > Host Groups 로 이동합니다.
  2. Ansible 역할을 할당할 호스트 그룹 이름을 클릭합니다.
  3. Ansible Roles (Ansible 역할) 탭의 Available Ansible Roles (사용 가능한 Ansible 역할) 목록에서 추가할 역할을 선택합니다.
  4. + 아이콘을 클릭하여 호스트 그룹에 역할을 추가합니다. 두 개 이상의 역할을 추가할 수 있습니다.
  5. Submit 을 클릭합니다.

2.6. 호스트 그룹에서 Ansible 역할 실행

Satellite 웹 UI를 통해 호스트 그룹에서 Ansible 역할을 실행할 수 있습니다.

사전 요구 사항

절차

  1. Satellite 웹 UI에서 Configure > Host Groups 로 이동합니다.
  2. 호스트 그룹의 Actions (작업) 열의 목록에서 Run all Ansible roles 를 선택합니다.

Ansible 역할 실행 페이지에서 Ansible 작업의 상태를 볼 수 있습니다. 작업을 다시 실행하려면 Rerun 버튼을 클릭합니다.

2.7. 확인 모드에서 Ansible 역할 실행

Satellite 웹 UI를 통해 확인 모드에서 Ansible 역할을 실행할 수 있습니다.

사전 요구 사항

절차

  1. Satellite 웹 UI에서 호스트 &gt ; 모든 호스트로 이동합니다.
  2. 확인 모드를 활성화할 호스트에 대해 Edit (편집)를 클릭합니다.
  3. Parameters 탭에서 호스트에 부울 유형이 true 로 설정된 ansible_roles_check_mode 라는 매개 변수가 있는지 확인합니다.
  4. Submit 을 클릭합니다.

3장. 원격 작업 구성 및 설정

이 섹션을 사용하여 원격 호스트에서 작업을 실행하도록 Satellite를 구성하는 방법을 가이드로 사용합니다.

원격 호스트에 적용하려는 모든 명령을 작업 템플릿으로 정의해야 합니다. 작업 템플릿을 정의한 후에는 여러 번 실행할 수 있습니다.

3.1. 호스트에서 작업 실행 정보

쉘 스크립트 또는 Ansible 작업 및 플레이북을 사용하여 Capsule에서 호스트에서 작업을 원격으로 실행할 수 있습니다. 이를 원격 실행이라고 합니다.

생성하는 사용자 지정 Ansible 역할 또는 다운로드한 역할의 경우 Capsule 기본 운영 체제에 역할이 포함된 패키지를 설치해야 합니다. Ansible 역할을 사용하려면 먼저 설치된 Capsule에서 역할을 Satellite로 가져와야 합니다.

통신은 Capsule Server를 통해 이루어집니다. 즉 Satellite Server에서 대상 호스트에 대한 직접 액세스가 필요하지 않으며 여러 호스트를 관리하기 위해 확장할 수 있습니다. 자세한 내용은 3.4절. “원격 실행을 위한 전송 모드”의 내용을 참조하십시오.

Satellite는 ERB 구문 작업 템플릿을 사용합니다. 자세한 내용은 호스트 관리에 대한 템플릿 참조 를 참조하십시오.

쉘 스크립트 및 Ansible에 대한 여러 작업 템플릿은 기본적으로 포함되어 있습니다. 자세한 내용은 호스트 관리에서 작업 템플릿 설정을 참조하십시오.

참고

모든 Capsule Server 기본 운영 체제는 Satellite Server의 내부 Capsule 클라이언트이므로 이 섹션은 Capsule을 포함하여 Satellite Server에 연결된 모든 유형의 호스트에 적용됩니다.

한 번에 여러 호스트에서 작업을 실행할 수 있으며 명령의 변수를 사용하여 실행하는 작업을 보다 세밀하게 제어할 수 있습니다. 호스트 팩트 및 매개변수를 사용하여 변수 값을 채울 수 있습니다.

또한 명령을 실행할 때 템플릿의 사용자 지정 값을 지정할 수 있습니다.

자세한 내용은 호스트 관리에서 원격 작업 실행을 참조하십시오.

3.2. 원격 실행 워크플로

호스트에서 원격 작업을 실행할 때 모든 호스트에 대해 Satellite는 다음 작업을 수행하여 사용할 원격 실행 Capsule을 찾습니다.

Satellite는 Ansible 기능이 활성화된 Capsule만 검색합니다.

  1. Satellite는 Remote execution 확인란이 선택된 호스트의 인터페이스를 찾습니다.
  2. Satellite는 이러한 인터페이스의 서브넷을 찾습니다.
  3. Satellite는 이러한 서브넷에 할당된 원격 실행 Capsule을 찾습니다.
  4. 이 Capsule 세트에서 Satellite는 실행 중인 작업의 수가 가장 적은 Capsule을 선택합니다. 이렇게 하면 Satellite가 작업 부하가 원격 실행 Capsule 간에 균형을 유지합니다.

원격 실행을 위해 Capsule을 통해 등록된 Prefer 를 활성화한 경우, Satellite는 호스트가 등록된 Capsule을 사용하여 REX 작업을 실행합니다.

기본적으로 원격 실행을 위해 Capsule을 통해 등록된 PreferNo 로 설정됩니다. 이를 활성화하려면 Satellite 웹 UI에서 Administer > Settings 로 이동하고 Content 탭에서 원격 실행을 위해 Capsule을 통해 Prefer registered설정합니다. 이렇게 하면 Satellite가 등록된 Capsule에 의해 호스트에서 REX 작업을 수행할 수 있습니다.

이 단계에서 Satellite에서 원격 실행 Capsule을 찾지 못하고 Any Capsule 설정으로 폴백 이 활성화된 경우 Satellite는 다른 Capsule 세트를 추가하여 원격 실행 Capsule을 선택합니다. Satellite는 호스트에 할당된 다음 Capsule 유형에서 가장 가볍게 로드된 Capsule을 선택합니다.

  • 호스트의 서브넷에 할당된 DHCP, DNS 및 TFTP Capsule
  • 호스트 도메인에 할당된 DNS Capsule
  • 호스트 영역에 할당된 realm Capsule
  • Puppet 서버 Capsule
  • Puppet CA Capsule
  • OpenSCAP Capsule

이 단계에서 Satellite에서 원격 실행 Capsule을 찾지 못하고 Enable Global Capsule 설정이 활성화된 경우 Satellite는 호스트 조직 및 위치의 모든 Capsule 세트에서 가장 가볍게 로드된 원격 실행 Capsule을 선택하여 원격 작업을 실행합니다.

3.3. 원격 실행 권한

대상 호스트를 포함하여 인프라 내에서 어떤 작업을 실행할 수 있는 역할을 제어할 수 있습니다. 원격 실행 기능은 다음 두 가지 기본 제공 역할을 제공합니다.

  • 원격 실행 관리자: 모든 원격 실행 기능 및 기능에 액세스할 수 있습니다.
  • 원격 실행 사용자: 작업만 실행할 수 있습니다.

원격 실행 사용자 역할을 복제하고 세분화 증가를 위해 해당 필터를 사용자 지정할 수 있습니다. 사용자 지정 역할에 대한 view_job_templates 권한을 사용하여 필터를 조정하는 경우 일치하는 작업 템플릿을 기반으로 작업만 보고 트리거할 수 있습니다. view_hostsview_smart_proxies 권한을 사용하여 역할에 표시되는 호스트 또는 Capsule을 제한할 수 있습니다.

execute_template_invocation 권한은 작업이 시작되기 직전에 확인되는 특수 권한입니다. 이 권한은 특정 호스트에서 실행할 수 있는 작업 템플릿을 정의합니다. 이렇게 하면 권한을 지정할 때 더 세분화할 수 있습니다.

execute_jobs_on_infrastructure_hosts 권한을 사용하여 Red Hat Satellite에 호스트로 등록된 Red Hat Satellite 및 Capsule에서 원격 실행 작업을 실행할 수 있습니다. 표준 관리자사이트 관리자 역할에는 기본적으로 이 권한이 있습니다. Manager 또는 Site Manager 역할을 사용하거나 execute_jobs_on_infrastructure_hosts 권한과 함께 사용자 지정 역할을 사용하는 경우 등록된 Red Hat Satellite 및 Capsule 호스트에 대해 원격 작업을 실행할 수 있습니다.

역할 및 권한 작업에 대한 자세한 내용은 Red Hat Satellite 관리에서 역할 생성 및 관리를 참조하십시오.

다음 예제에서는 execute_template_invocation 권한에 대한 필터를 보여줍니다.

name = Reboot and host.name = staging.example.com
name = Reboot and host.name ~ *.staging.example.com
name = "Restart service" and host_group.name = webservers

이 예제의 첫 번째 행을 사용하여 선택한 호스트에 Reboot 템플릿을 적용합니다. 두 번째 줄을 사용하여 .staging.example.com 으로 끝나는 이름으로 호스트 풀을 정의합니다. 세 번째 줄을 사용하여 템플릿을 호스트 그룹과 바인딩합니다.

참고

이러한 역할을 가진 사용자에게 할당된 권한은 시간이 지남에 따라 변경될 수 있습니다. 나중에 이미 일부 작업을 실행하도록 예약하고 권한이 변경되면 작업이 실행되기 직전에 권한이 확인되므로 실행 오류가 발생할 수 있습니다.

3.4. 원격 실행을 위한 전송 모드

원격 작업 실행에 두 가지 전송 모드를 사용하도록 Satellite를 구성할 수 있습니다.

ssh 모드의 Capsule에서 원격 실행은 SSH 서비스를 사용하여 작업 세부 정보를 전송합니다. 이는 기본 전송 모드입니다. 대상 호스트에서 SSH 서비스를 활성화하고 활성화해야 합니다. 원격 실행 Capsule은 대상 호스트의 SSH 포트에 액세스할 수 있어야 합니다. 다른 설정이 없는 경우 표준 SSH 포트는 22입니다.

pull-mqtt 모드의 Capsule에서 원격 실행은 AMQP(Message Queueing Telemetry Transport)를 사용하여 Satellite Server에서 수신하는 작업을 게시합니다. 호스트는 yggdrasil 풀 클라이언트를 사용하여 작업 알림을 위해 Capsule의 MQTT 브로커를 구독합니다. 호스트가 알림을 수신하면 HTTPS를 통해 Capsule에서 작업 세부 정보를 가져오고 작업을 실행한 다음 결과를 Capsule에 다시 보고합니다.

pull-mqtt 모드를 사용하려면 Capsule Server에서 활성화하고 대상 호스트에서 가져오기 클라이언트를 구성해야 합니다.

추가 리소스

3.5. Pull Client를 사용하도록 호스트 구성

pull-mqtt 모드를 사용하도록 구성된 Capsule의 경우 호스트는 원격 실행 풀 클라이언트를 사용하여 원격 작업을 구독할 수 있습니다. 관리 대상 호스트에는 Capsule Server에 대한 SSH 연결이 필요하지 않습니다.

사전 요구 사항

  • 호스트를 Satellite에 등록했습니다.
  • 호스트의 Capsule은 pull-mqtt 모드를 사용하도록 구성되어 있습니다. 자세한 내용은 Capsule Server 설치에서 Pull Client에 대한 원격 실행 구성을 참조하십시오.
  • Red Hat Satellite Client 6 리포지토리는 Satellite Server에서 활성화 및 동기화되어 호스트에서 활성화됩니다.
  • 호스트는 포트 1883 을 사용하여 MQTT를 통해 Capsule과 통신할 수 있습니다.
  • 호스트는 HTTPS를 통해 Capsule과 통신할 수 있습니다.
참고

katello-pull-transport-migrate 패키지는 사용자가 Katello Agent에서 풀 클라이언트를 사용하여 원격 실행으로 마이그레이션하는 데 도움이 되도록 생성되었습니다. 그러나 호스트에 Katello Agent를 설치하는 것은 필수 사항은 아닙니다. Katello Agent가 설치되어 있는지 여부에 관계없이 katello-pull-transport-migrate 를 사용할 수 있습니다.

절차

  1. 호스트에 katello-pull-transport-migrate 패키지를 설치합니다.

    • Red Hat Enterprise Linux 8 및 Red Hat Enterprise Linux 9 호스트에서 다음을 수행합니다.

      # dnf install katello-pull-transport-migrate
    • Red Hat Enterprise Linux 7 호스트에서 다음을 수행합니다.

      # yum install katello-pull-transport-migrate

    패키지는 foreman_ygg_workeryggdrasil 을 종속 항목으로 설치하고 호스트에서 풀 모드를 활성화합니다. 호스트의 subscription-manager 구성 및 소비자 인증서는 호스트에서 yggdrasil 클라이언트를 구성하는 데 사용되며 풀 모드 클라이언트 작업자가 시작됩니다.

  2. 선택 사항: 풀 클라이언트가 실행 중이고 구성되었는지 확인하려면 yggdrasild 서비스의 상태를 확인합니다.

    # systemctl status yggdrasild
  3. 선택 사항: 패키지를 설치한 후 호스트에서 katello-agent 를 제거할 수 있습니다.

    주의

    호스트가 Red Hat Virtualization 버전 4.4 이상에 설치된 경우 제거된 종속성이 호스트가 손상되어 katello-agent 패키지를 제거하지 마십시오.

3.6. 작업 템플릿 생성

이 절차를 사용하여 작업 템플릿을 생성합니다. Satellite 웹 UI 대신 CLI를 사용하려면 CLI 절차 를 참조하십시오.

절차

  1. Satellite 웹 UI에서 호스트 > 작업 템플릿으로 이동합니다.
  2. New Job Template 을 클릭합니다.
  3. 템플릿 탭을 클릭하고 이름 필드에 작업 템플릿의 고유한 이름을 입력합니다.
  4. 모든 조직 및 위치에 템플릿을 사용할 수 있도록 하려면 기본값 을 선택합니다.
  5. 템플릿 편집기에서 템플릿을 직접 생성하거나 가져오기 를 클릭하여 텍스트 파일에서 업로드합니다.
  6. 선택 사항: 감사 주석 필드에서 변경 사항에 대한 정보를 추가합니다.
  7. Job 탭을 클릭하고 Job category 필드에 고유한 카테고리를 입력하거나 관리의 Default Job Template Categories 에 나열된 기본 카테고리에서 선택합니다.
  8. 선택 사항: 설명 형식 필드에 설명 템플릿을 입력합니다. 예: Install package %{package_name}. 템플릿에서 %{template_name}%{job_category} 를 사용할 수도 있습니다.
  9. Provider Type (프로바이더 유형) 목록에서 쉘 스크립트에 대한 SSHAnsible 작업 또는 플레이북에 대해 Ansible을 선택합니다.
  10. 선택 사항: Timeout to kill 필드에 시간 초과 값을 입력하여 작업이 완료되지 않으면 종료합니다.
  11. 선택 사항: 입력 추가 를 클릭하여 입력 매개 변수를 정의합니다. 매개 변수는 작업을 실행할 때 요청되며 템플릿에 정의할 필요가 없습니다. 자세한 내용은 도움말 탭을 참조하십시오.
  12. 선택 사항: 이 작업의 다른 템플릿을 포함하려면 Foreign 입력 세트를 클릭합니다.
  13. 선택 사항: 효과적인 사용자 영역에서 명령이 기본 remote_execution_effective_user 설정을 사용할 수 없는 경우 사용자를 구성합니다.
  14. 선택 사항: 이 템플릿이 다른 템플릿에 포함된 스니펫인 경우 유형 탭을 클릭하고 Snippet 을 선택합니다.
  15. 위치 탭을 클릭하고 템플릿을 사용할 위치를 추가합니다.
  16. Organizations 탭을 클릭하고 템플릿을 사용할 조직을 추가합니다.
  17. 제출을 클릭하여 변경 사항을 저장합니다.

템플릿 구문에 다른 템플릿을 포함하여 작업 템플릿을 확장하고 사용자 지정할 수 있습니다. 자세한 내용은 템플릿 reference작업 템플릿 예제 및 호스트 관리의 확장을 참조하십시오.

CLI 절차

  • template-definition 파일을 사용하여 작업 템플릿을 생성하려면 다음 명령을 입력합니다.

    # hammer job-template create \
    --file "Path_to_My_Template_File" \
    --job-category "My_Category_Name" \
    --name "My_Template_Name" \
    --provider-type SSH

3.7. 이름으로 Ansible 플레이북 가져오기

Capsule에 설치된 컬렉션에서 이름으로 Ansible 플레이북을 Satellite로 가져올 수 있습니다.

사전 요구 사항

  • Satellite에서 Ansible 플러그인이 활성화됨

절차

  1. 다음 API 요청을 사용하여 사용 가능한 Ansible 플레이북을 가져옵니다.

    # curl -X GET 'Content-Type: application/json' https://satellite.example.com/ansible/api/v2/ansible_playbooks/fetch?proxy_id=My_capsule_ID
  2. 가져올 Ansible 플레이북을 선택하고 해당 이름을 기록하십시오.
  3. 해당 이름을 사용하여 Ansible 플레이북을 가져옵니다.

    # curl -X PUT 'Content-Type: application/json' -d '{ "playbook_names": ["My_Playbook_Name"] }' https://satellite.example.com/ansible/api/v2/ansible_playbooks/sync?proxy_id=My_capsule_ID

    가져오기가 완료되면 Satellite 웹 UI에서 알림을 받습니다.

3.8. 사용 가능한 모든 Ansible 플레이북 가져오기

Capsule에 설치된 컬렉션에서 사용 가능한 모든 Ansible 플레이북을 Satellite로 가져올 수 있습니다.

사전 요구 사항

  • Satellite에서 Ansible 플러그인이 활성화됨

절차

  • 다음 API 요청을 사용하여 Ansible 플레이북을 가져옵니다.

    # curl -X PUT 'Content-Type: application/json' https://satellite.example.com/ansible/api/v2/ansible_playbooks/sync?proxy_id=My-capsule-ID

    가져오기가 완료되면 Satellite 웹 UI에서 알림을 받습니다.

3.9. Satellite에서 모든 Capsule 원격 실행 설정에 대한 폴백 구성

모든 Capsule 설정으로 폴백을 활성화하여 호스트에 할당된 Capsule 목록에서 원격 실행 Capsule을 검색하도록 Satellite를 구성할 수 있습니다. 이 기능은 서브넷이 구성되지 않은 호스트에서 원격 작업을 실행하거나 원격 실행 기능이 활성화되어 있지 않은 Capsule에 호스트 서브넷이 할당된 경우 유용할 수 있습니다.

Any Capsule 설정으로 폴백 이 활성화되면 Satellite는 다른 Capsule 세트를 추가하여 원격 실행 Capsule을 선택합니다. Satellite는 또한 호스트에 할당된 모든 Capsule 세트에서 가장 가벼하게 로드된 Capsule을 선택합니다(예:).

  • 호스트의 서브넷에 할당된 DHCP, DNS 및 TFTP Capsule
  • 호스트 도메인에 할당된 DNS Capsule
  • 호스트 영역에 할당된 realm Capsule
  • Puppet 서버 Capsule
  • Puppet CA Capsule
  • OpenSCAP Capsule

절차

  1. Satellite 웹 UI에서 Administer > Settings 로 이동합니다.
  2. 원격 실행을 클릭합니다.
  3. 모든 Capsule 설정으로 폴백을 구성합니다.

CLI 절차

  • Satellite에 hammer settings set 명령을 입력하여 Fallback을 Any Capsule 설정으로 구성합니다. 값을 true 로 설정하려면 다음 명령을 입력합니다.

    # hammer settings set \
    --name=remote_execution_fallback_proxy \
    --value=true

3.10. Satellite에서 글로벌 Capsule 원격 실행 설정 구성

기본적으로 Satellite는 Capsule이 호스트 서브넷에 할당되었는지 여부에 관계없이 호스트 및 위치에서 원격 실행 Capsule을 검색합니다. 검색을 호스트 서브넷에 할당된 Capsule로 제한하려면 Enable Global Capsule 설정을 비활성화할 수 있습니다.

Enable Global Capsule 설정이 활성화된 경우 Satellite는 다른 Capsule 세트를 추가하여 원격 실행 Capsule을 선택합니다. 또한 Satellite는 호스트 조직 및 원격 작업을 실행할 위치의 모든 Capsule 세트에서 가장 가벼워 로드된 원격 실행 Capsule을 선택합니다.

절차

  1. Satellite 웹 UI에서 Administer > Settings 로 이동합니다.
  2. 원격 실행을 클릭합니다.
  3. Enable Global Capsule 설정을 구성합니다.

CLI 절차

  • Satellite에서 hammer settings set 명령을 입력하여 Enable Global Capsule 설정을 구성합니다. 값을 true 로 설정하려면 다음 명령을 입력합니다.

    # hammer settings set \
    --name=remote_execution_global_proxy \
    --value=true

3.11. 호스트에서 원격 작업을 실행하도록 대체 디렉터리를 사용하도록 Satellite 구성

Ansible은 $HOME/.ansible/tmp 디렉터리에 필요한 자체 파일을 저장합니다. 여기서 $HOME 은 원격 사용자의 홈 디렉터리입니다. 필요한 경우 다른 디렉터리를 설정하는 옵션이 있습니다.

절차

  1. 새 디렉터리를 만듭니다.

    # mkdir /My_Remote_Working_Directory
  2. 기본 var 디렉터리에서 SELinux 컨텍스트를 복사합니다.

    # chcon --reference=/var /My_Remote_Working_Directory
  3. 시스템을 구성합니다.

    # satellite-installer \
    --foreman-proxy-plugin-ansible-working-dir /My_Remote_Working_Directory

3.12. 권한 상승 방법 변경

기본적으로 푸시 기반 원격 실행에서는 sudo 를 사용하여 SSH 사용자에서 호스트에서 스크립트를 실행하는 유효한 사용자로 전환합니다. 경우에 따라 su 또는 dzdo 와 같은 다른 방법을 사용해야 할 수도 있습니다. Satellite 설정에서 대체 방법을 전역적으로 구성할 수 있습니다.

사전 요구 사항

  • 사용자 계정에는 view_settingsedit_settings 권한을 부여하는 역할이 할당됩니다.
  • Ansible 작업에 dzdo 를 사용하려면 필요한 dzdo become 플러그인이 포함된 community.general Ansible 컬렉션이 설치되어 있는지 확인합니다. 자세한 내용은 Ansible 문서 의 컬렉션 설치를 참조하십시오.

절차

  1. Administer > Settings 로 이동합니다.
  2. 원격 실행 탭을 선택합니다.
  3. Effective User Method 설정 값을 클릭합니다.
  4. 새 값을 선택합니다.
  5. Submit 을 클릭합니다.

3.13. 원격 실행을 위한 SSH 키 배포

ssh 모드의 Capsule의 경우 SSH를 사용하여 원격 실행 연결이 인증됩니다. Capsule의 공개 SSH 키는 관리하려는 연결된 호스트에 배포해야 합니다.

SSH 서비스가 활성화되어 호스트에서 실행 중인지 확인합니다. 포트 22에 액세스할 수 있도록 네트워크 또는 호스트 기반 방화벽을 구성합니다.

다음 방법 중 하나를 사용하여 Capsule에서 대상 호스트에 공용 SSH 키를 배포합니다.

Satellite는 원격 실행 기능에 대한 SSH 키를 기본적으로 Satellite에서 프로비저닝한 호스트에 배포합니다.

호스트가 Amazon Web Services에서 실행중인 경우 암호 인증을 활성화합니다. 자세한 내용은 새 사용자 계정을 참조하십시오.

3.14. 원격 실행을 위한 SSH 키 배포 수동으로

SSH 키를 수동으로 배포하려면 다음 단계를 완료합니다.

절차

  • Capsule에서 대상 호스트로 SSH public 키를 복사합니다.

    # ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@client.example.com

    관리하려는 각 대상 호스트에 대해 이 단계를 반복합니다.

검증

  • 키가 대상 호스트에 성공적으로 복사되었는지 확인하려면 Capsule에 다음 명령을 입력합니다.

    # ssh -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy root@client.example.com

3.15. Satellite API를 사용하여 원격 실행을 위한 SSH 키 가져오기

Satellite API를 사용하여 Capsule에서 공개 키를 다운로드하려면 각 대상 호스트에서 이 절차를 완료합니다.

절차

  1. 대상 호스트에서 SSH 키를 저장할 ~/.ssh 디렉터리를 생성합니다.

    # mkdir ~/.ssh
  2. Capsule에서 SSH 키를 다운로드합니다.

    # curl https://capsule.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keys
  3. ~/.ssh 디렉터리에 대한 권한을 구성합니다.

    # chmod 700 ~/.ssh
  4. authorized_keys 파일에 대한 권한을 구성합니다.

    # chmod 600 ~/.ssh/authorized_keys

3.16. 프로비저닝 중 SSH 키를 배포하도록 Kickstart 템플릿 구성

사용자 지정 Kickstart 템플릿에 remote_execution_ssh_keys 스니펫을 추가하여 프로비저닝 중에 호스트에 SSH 키를 배포할 수 있습니다. Satellite에서 제공하는 Kickstart 템플릿에는 기본적으로 이 스니펫이 포함됩니다. Satellite는 원격 실행을 위해 프로비저닝 중에 시스템에 SSH 키를 복사합니다.

절차

  • 새로 프로비저닝된 호스트에 공개 키를 포함하려면 사용하는 Kickstart 템플릿에 다음 스니펫을 추가합니다.

    <%= snippet 'remote_execution_ssh_keys' %>

3.17. Kerberos 티켓 부여 티켓 구성

다음 절차에 따라 키 탭을 사용하여 티켓을 부여하는 Kerberos 티켓을 가져오도록 Satellite를 구성합니다. keytab을 설정하지 않으면 티켓을 수동으로 검색해야 합니다.

절차

  1. foreman-proxy 사용자의 ID를 찾습니다.

    # id -u foreman-proxy
  2. 새 파일에 권한 600 이 있도록 CloudEvent 값을 수정합니다.

    # umask 077
  3. keytab의 디렉터리를 생성합니다.

    # mkdir -p "/var/kerberos/krb5/user/My_User_ID"
  4. 키 탭을 생성하거나 기존 키탭을 디렉터리에 복사합니다.

    # cp My_Client.keytab /var/kerberos/krb5/user/My_User_ID/client.keytab
  5. 디렉터리 소유자를 foreman-proxy 사용자로 변경합니다.

    # chown -R foreman-proxy:foreman-proxy "/var/kerberos/krb5/user/My_User_ID"
  6. keytab 파일이 읽기 전용인지 확인합니다.

    # chmod -wx "/var/kerberos/krb5/user/My_User_ID/client.keytab"
  7. SELinux 컨텍스트를 복원하십시오.

    # restorecon -RvF /var/kerberos/krb5

3.18. 원격 실행을 위한 Kerberos 인증 구성

Kerberos 인증을 사용하여 Satellite 호스트에서 원격 실행을 위한 SSH 연결을 설정할 수 있습니다.

사전 요구 사항

  • Kerberos 서버에 Satellite Server 등록
  • Kerberos 서버에 Satellite 대상 호스트 등록
  • 원격 실행을 위해 Kerberos 사용자 계정 구성 및 초기화
  • Satellite의 foreman-proxy 사용자에게 유효한 Kerberos 티켓이 있는지 확인합니다.

절차

  1. 원격 실행을 위해 Kerberos 인증을 설치 및 활성화하려면 다음 명령을 입력합니다.

    # satellite-installer --scenario satellite \
    --foreman-proxy-plugin-remote-execution-script-ssh-kerberos-auth true
  2. 원격 실행을 위해 기본 사용자를 편집하려면 Satellite 웹 UI에서 Administer > Settings 로 이동하여 원격 실행 탭을 클릭합니다. SSH 사용자 행에서 두 번째 열을 편집하고 Kerberos 계정의 사용자 이름을 추가합니다.
  3. remote_execution_ effective_user 로 이동하여 두 번째 열을 편집하여 Kerberos 계정의 사용자 이름을 추가합니다.

검증

  • Kerberos 인증을 사용할 준비가 되었는지 확인하려면 호스트에서 원격 작업을 실행합니다. 자세한 내용은 Red Hat Satellite의 Ansible 통합을 사용하여 구성 관리에서 원격 작업 실행을 참조하십시오.

3.19. 작업 템플릿 설정

Satellite는 작업 실행에 사용할 수 있는 기본 작업 템플릿을 제공합니다. 작업 템플릿 목록을 보려면 호스트 > 작업 템플릿으로 이동합니다. 변경하지 않고 템플릿을 사용하려면 호스트 관리에서 원격 작업 실행을 진행합니다.

기본 템플릿을 기반으로 사용하여 고유한 템플릿을 개발할 수 있습니다. 기본 작업 템플릿은 편집할 수 있도록 잠겼습니다. 템플릿을 복제하고 복제본을 편집합니다.

절차

  1. 템플릿을 복제하려면 Actions 열에서 Clone 을 선택합니다.
  2. 복제본의 고유 이름을 입력하고 Submit 을 클릭하여 변경 사항을 저장합니다.

작업 템플릿은ERB(ERB) 구문을 사용합니다. 템플릿 작성에 대한 자세한 내용은 호스트 관리템플릿 reference 를 참조하십시오.

Ansible 고려 사항

Ansible 작업 템플릿을 생성하려면 다음 절차를 사용하고 ERB 구문 대신 YAML 구문을 사용합니다. --- 로 템플릿을 시작합니다. Ansible 플레이북 YAML 파일을 작업 템플릿 본문에 포함할 수 있습니다. ERB 구문을 추가하여 YAML Ansible 템플릿을 사용자 지정할 수도 있습니다. Satellite에서 Ansible 플레이북을 가져올 수도 있습니다. 자세한 내용은 호스트 관리에서 리포지토리 템플릿 동기화 참조하십시오.

매개변수 변수

런타임에 작업 템플릿은 호스트에 대해 정의한 매개변수 변수를 허용할 수 있습니다. 호스트의 편집 페이지의 Parameters 탭에 표시되는 매개변수만 작업 템플릿에 대한 입력 매개변수로 사용할 수 있습니다. Ansible 작업 템플릿이 런타임에 매개 변수 변수를 허용하지 않도록 하려면 Satellite 웹 UI에서 Administer > Settings 로 이동하여 Ansible 탭을 클릭합니다. 최상위 수준의 Ansible 변수 행에서 Value 매개변수를 No 로 변경합니다.

3.20. 원격 작업 실행

하나 이상의 호스트에 대해 작업 템플릿을 기반으로 하는 작업을 실행할 수 있습니다.

Satellite 웹 UI 대신 CLI를 사용하려면 CLI 절차 를 참조하십시오.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동하여 원격 작업을 실행할 대상 호스트를 선택합니다. 검색 필드를 사용하여 호스트 목록을 필터링할 수 있습니다.
  2. Select Action (작업 선택) 목록에서 Schedule a Job (작업 예약)을 선택합니다.
  3. Job invocation 페이지에서 기본 작업 설정을 정의합니다.
  4. Job category (작업 카테고리)와 사용할 Job template 을 선택합니다.
  5. 선택 사항: Bookmark 목록에서 저장된 검색 문자열을 선택하여 대상 호스트를 지정합니다.
  6. 선택 사항: 검색 쿼리를 입력하여 대상 호스트를 제한합니다. Resolves to line은 쿼리의 영향을 받는 호스트 수를 표시합니다. 새로 고침 버튼을 사용하여 쿼리를 변경한 후 숫자를 다시 계산합니다. 프리뷰 아이콘은 대상 호스트가 나열됩니다.
  7. 나머지 설정은 선택한 작업 템플릿에 따라 다릅니다. 템플릿에 사용자 지정 매개변수를 추가하는 방법에 대한 자세한 내용은 작업 템플릿 생성을 참조하십시오.
  8. 선택 사항: 작업의 고급 설정을 구성하려면 고급 필드 표시를 클릭합니다. 고급 설정 중 일부는 작업 템플릿에 따라 달라지며 다음 설정은 일반적입니다.

    • effective 사용자는 기본적으로 작업을 실행할 사용자를 정의합니다. 기본적으로 SSH 사용자입니다.
    • 동시성 수준은 한 번에 실행되는 최대 작업 수를 정의하므로 다수의 호스트에서 작업을 실행하는 경우 시스템 리소스 과부하를 방지할 수 있습니다.
    • 종료 시간 초과는 작업이 아직 완료되지 않은 경우 종료되어야 하는 시간 간격(초)을 정의합니다. 예를 들어 이전 작업을 완료하는 데 시간이 너무 오래 걸리는 경우, 예를 들어 정의된 간격 중에 시작할 수 없는 작업이 취소됩니다.
    • 유형의 쿼리 는 검색 쿼리가 평가될 때를 정의합니다. 이는 예약된 작업에 대한 쿼리를 최신 상태로 유지하는 데 도움이 됩니다.
    • 실행 순서에 따라 호스트에서 작업이 실행되는 순서에 따라 알파벳 또는 무작위로 지정됩니다.

      동시성 수준 및 종료 설정을 통해 작업 실행을 인프라 하드웨어 및 요구 사항에 맞게 조정할 수 있습니다.

  9. 작업을 즉시 실행하려면 일정이 Execute now 로 설정되어 있는지 확인합니다. 일회성 향후 작업을 정의하거나 반복 작업을 설정할 수도 있습니다. 반복 작업의 경우 시작 및 종료 날짜, 실행 수 및 빈도를 정의할 수 있습니다. cron 구문을 사용하여 반복을 정의할 수도 있습니다. cron에 대한 자세한 내용은 cron 을 사용하여 Linux 시스템 작업 자동화 를 참조하십시오.
  10. Submit 을 클릭합니다. 동일한 페이지의 최근 작업 섹션에서 작업 상태를 볼 수 있습니다.

CLI 절차

  1. Satellite에서 다음 명령을 입력합니다.

    # hammer settings set \
    --name=remote_execution_global_proxy \
    --value=false
  2. 사용할 작업 템플릿의 ID를 찾습니다.

    # hammer job-template list
  3. 템플릿에 필요한 매개변수를 보려면 템플릿 세부 정보를 표시합니다.

    # hammer job-template info --id My_Template_ID
  4. 사용자 지정 매개변수를 사용하여 원격 작업을 실행합니다.

    # hammer job-invocation create \
    --inputs My_Key_1="My_Value_1",My_Key_2="My_Value_2",... \
    --job-template "My_Template_Name" \
    --search-query "My_Search_Query"

    My_Search_Query 를 호스트를 정의하는 필터 표현식으로 교체합니다(예: "name ~ My_Pattern". hammer로 원격 명령을 실행하는 방법에 대한 자세한 내용은 hammer job-template --helphammer job-invocation --help 를 입력합니다.

3.21. 호스트에 대한 반복 Ansible 작업 예약

반복 작업을 예약하여 호스트에서 Ansible 역할을 실행할 수 있습니다.

사전 요구 사항

  • view_foreman_tasks,view_job_invocations, view_recurring_logics 권한이 있는지 확인합니다.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동하여 원격 작업을 실행할 대상 호스트를 선택합니다.
  2. Ansible 탭에서 작업을 선택합니다.
  3. 반복 작업 일정을 클릭합니다.
  4. Create New Recurring Ansible Run 창에서 처음 실행되는 반복 빈도, 시작 시간 및 날짜를 정의합니다.
  5. Submit 을 클릭합니다.
  6. 선택 사항: 호스트 개요 또는 Ansible > 작업으로 이동하여 예약된 Ansible 작업을 봅니다.

3.22. 호스트 그룹의 반복 Ansible 작업 예약

반복 작업을 예약하여 호스트 그룹에서 Ansible 역할을 실행할 수 있습니다.

절차

  1. Satellite 웹 UI에서 Configure > Host groups 로 이동합니다.
  2. Actions 열에서 Ansible 역할 실행을 예약하려는 호스트 그룹에 대한 Configure Ansible Job 을 선택합니다.
  3. 반복 작업 일정을 클릭합니다.
  4. Create New Recurring Ansible Run 창에서 처음 실행되는 반복 빈도, 시작 시간 및 날짜를 정의합니다.
  5. Submit 을 클릭합니다.

3.23. 작업 모니터링

실행 중 작업 진행 상황을 모니터링할 수 있습니다. 이는 필요할 수 있는 모든 문제 해결에 도움이 될 수 있습니다.

Ansible 작업은 호스트 100개로 이루어진 일괄 처리에서 실행되므로 특정 호스트에서 실행 중인 작업을 취소할 수 없습니다. 작업은 Ansible 플레이북이 배치의 모든 호스트에서 실행된 후에만 완료됩니다.

절차

  1. Satellite 웹 UI에서 Monitor > Jobs로 이동합니다. 이 페이지는 Execute now 설정으로 작업을 트리거한 경우 자동으로 표시됩니다. 예약된 작업을 모니터링하려면 Monitor > Jobs 로 이동하여 검사할 작업 실행을 선택합니다.
  2. 작업 페이지에서 호스트 탭을 클릭합니다. 그러면 작업이 실행 중인 호스트 목록이 표시됩니다.
  3. Host 열에서 검사할 호스트의 이름을 클릭합니다. 그러면 작업 실행을 실시간으로 모니터링할 수 있는 명령 페이지의 세부 정보가 표시됩니다.
  4. 언제든지 Back to Job 을 클릭하여 Job Details 페이지로 돌아갑니다.

CLI 절차

  1. 작업 ID를 찾습니다.

    # hammer job-invocation list
  2. 작업 출력을 모니터링합니다.

    # hammer job-invocation output \
    --host "My_Host_Name" \
    --id My_Job_ID
  3. 선택 사항: 작업을 취소하려면 다음 명령을 입력합니다.

    # hammer job-invocation cancel \
    --id My_Job_ID

4장. Red Hat Satellite 및 Ansible Automation Controller 통합

Red Hat Satellite 및 Ansible Automation Controller를 통합하여 Satellite 서버를 Ansible Automation Controller의 동적 인벤토리 소스로 사용할 수 있습니다. Ansible Automation Controller는 Red Hat Ansible Automation Platform의 구성 요소입니다.

프로비저닝 콜백 기능을 사용하여 호스트 또는 Ansible Automation Controller에서 Satellite에서 관리하는 호스트에서 플레이북을 실행할 수도 있습니다. Satellite Server에서 새 호스트를 프로비저닝할 때 프로비저닝 콜백 기능을 사용하여 Ansible Automation Controller에서 플레이북 실행을 트리거할 수 있습니다. 플레이북은 프로비저닝 프로세스 후 호스트를 구성합니다.

4.1. 동적 인벤토리 항목으로 Ansible Automation Controller에 Satellite Server 추가

Ansible Automation Controller에 Satellite Server를 동적 인벤토리 항목으로 추가하려면 Ansible Automation Controller에서 Satellite Server 사용자에 대한 인증 정보를 생성하고, Ansible Automation Controller 사용자를 인증 정보에 추가한 다음 인벤토리 소스를 구성해야 합니다.

사전 요구 사항

  • 예를 들어 Satellite 배포가 수만 개의 호스트를 관리하는 경우 관리자가 아닌 사용자를 사용하면 권한 부여 검사 중에 발생되는 시간 때문에 성능에 부정적인 영향을 미칠 수 있습니다. 대규모 배포의 경우 admin 사용자를 사용하는 것이 좋습니다.
  • 관리자가 아닌 사용자의 경우 Ansible Tower Inventory gRPC 역할을 Satellite Server 사용자에게 할당해야 합니다. 사용자, 역할 및 권한 필터 관리에 대한 자세한 내용은 Red Hat Satellite 관리에서 역할 생성 및 관리를 참조하십시오.
  • 동일한 네트워크 또는 서브넷에서 Satellite Server 및 Ansible Automation Controller를 호스팅해야 합니다.

절차

  1. Ansible Automation Controller 웹 UI에서 Satellite에 대한 인증 정보를 생성합니다. 인증 정보 생성에 대한 자세한 내용은 자동화 컨트롤러 사용자 가이드에서 새 인증 정보 및 Red Hat Satellite 인증 정보 추가 를 참조하십시오.

    표 4.1. Satellite 인증 정보

    인증 정보 유형:Red Hat Satellite 6

    Satellite URL:

    https://satellite.example.com

    사용자 이름:

    통합 역할이 있는 Satellite 사용자의 사용자 이름입니다.

    암호:

    Satellite 사용자의 암호입니다.

  2. Ansible Automation Controller 사용자를 새 인증 정보에 추가합니다. 인증 정보에 사용자를 추가하는 방법에 대한 자세한 내용은 자동화 컨트롤러 사용자 가이드의 인증 정보 시작하기 를 참조하십시오.
  3. 새 인벤토리를 추가합니다. 자세한 내용은 자동화 컨트롤러 사용자 가이드에서 새 인벤토리 추가 를 참조하십시오.
  4. 새 인벤토리에서 다음 인벤토리 소스 옵션을 지정하여 Satellite 서버를 인벤토리 소스로 추가합니다. 자세한 내용은 자동화 컨트롤러 사용자 가이드의 소스 추가 를 참조하십시오.

    표 4.2. 인벤토리 소스 옵션

    소스Red Hat Satellite 6

    인증 정보

    Satellite Server에 대해 생성한 자격 증명입니다.

    overwrite

    선택 사항

    변수 덮어쓰기

    선택 사항

    시작 시 업데이트

    선택 사항

    캐시 시간 제한

    90

  5. 추가하는 소스를 동기화해야 합니다.

4.2. 호스트에 대한 프로비저닝 콜백 구성

Satellite에서 호스트를 생성할 때 Ansible Automation Controller를 사용하여 플레이북을 실행하여 새로 생성된 호스트를 구성할 수 있습니다. 이를 Ansible Automation Controller에서 프로비저닝 콜백 이라고 합니다.

프로비저닝 콜백 기능은 Ansible Automation Controller에서 프로비저닝 프로세스의 일부로 실행되는 플레이북을 트리거합니다. 플레이북은 프로비저닝 프로세스 후 호스트를 구성합니다.

프로비저닝 콜백에 대한 자세한 내용은 자동화 컨트롤러 사용자 가이드 의 콜백 프로비저닝 을 참조하십시오.

Satellite Server에서 Kickstart 기본값 및 Kickstart Default Finish 템플릿에는 다음 세 가지 스니펫이 포함됩니다.

  1. ansible_provisioning_callback
  2. ansible_tower_callback_script
  3. ansible_tower_callback_service

호스트 또는 호스트 그룹에 매개변수를 추가하여 이러한 스니펫에서 새로 생성된 호스트에서 Ansible 플레이북을 실행하는 데 사용할 수 있는 자격 증명을 제공할 수 있습니다.

사전 요구 사항

프로비저닝 콜백을 구성하려면 먼저 Satellite를 Ansible Automation Controller에서 동적 인벤토리로 추가해야 합니다. 자세한 내용은 Satellite 및 Ansible Automation Controller 통합 에서 참조하십시오.

Ansible Automation Controller 웹 UI에서 다음 작업을 완료해야 합니다.

  1. 새 호스트에 대한 시스템 자격 증명을 생성합니다. Satellite에서 생성하는 호스트에 할당하려는 자격 증명에 동일한 암호를 입력해야 합니다. 자세한 내용은 자동화 컨트롤러 사용자 가이드에서 새 인증 정보 추가 를 참조하십시오.
  2. 프로젝트를 생성합니다. 자세한 내용은 Ansible Automation Controller 사용자 가이드의 프로젝트를 참조하십시오.
  3. 프로젝트에 작업 템플릿을 추가합니다. 자세한 내용은 자동화 컨트롤러 사용자 가이드의 작업 템플릿을 참조하십시오.
  4. 작업 템플릿에서 프로비저닝 콜백을 활성화하고, 호스트 구성 키를 생성하고, 작업 템플릿의 template_ID 를 기록해야 합니다. 작업 템플릿에 대한 자세한 내용은 자동화 컨트롤러 사용자 가이드의 작업 템플릿을 참조하십시오.

절차

  1. Satellite 웹 UI에서 Configure > Host Group 으로 이동합니다.
  2. 호스트 그룹을 생성하거나 기존 호스트 그룹을 편집합니다.
  3. Host Group 창에서 Parameters 탭을 클릭합니다.
  4. 매개 변수 추가를 클릭합니다.
  5. 각 새 매개변수에 대해 다음 정보를 입력합니다.

    표 4.3. 호스트 매개변수

    이름현재의설명

    ansible_tower_provisioning

    true

    프로비저닝 콜백을 활성화합니다.

    ansible_tower_fqdn

    controller.example.com

    Ansible Automation Controller의 FQDN(정규화된 도메인 이름)입니다. Satellite에 의해 추가되므로 https 를 추가하지 마십시오.

    ansible_job_template_id

    template_ID

    템플릿의 URL에서 찾을 수 있는 프로비저닝 템플릿의 ID: /templates/job_template/5.

    ansible_host_config_key

    config_KEY

    작업 템플릿이 Ansible Automation Controller에서 생성하는 호스트 구성 키입니다.

  6. Submit 을 클릭합니다.
  7. 호스트 그룹을 사용하여 호스트를 생성합니다.
  8. 새 호스트에서 다음 명령을 입력하여 ansible-callback 서비스를 시작합니다.

    # systemctl start ansible-callback
  9. 새 호스트에서 다음 명령을 입력하여 ansible-callback 서비스의 상태를 출력합니다.

    # systemctl status ansible-callback

    명령에서 다음 출력을 반환하는 경우 프로비저닝 콜백이 올바르게 구성됩니다.

    SAT_host systemd[1]: Started Provisioning callback to Ansible Automation Controller...

수동 프로비저닝 콜백

  • 프로비저닝 콜백 URL 및 호스트의 호스트 구성 키를 사용하여 Ansible Automation Controller를 호출할 수 있습니다.

    # curl -k -s --data curl --insecure --data host_config_key=my_config_key \
    https://controller.example.com/api/v2/job_templates/8/callback/

    프로비저닝 콜백 URL을 입력할 때 https 를 사용하는지 확인합니다.

이렇게 하면 호스트에 대해 템플릿에 지정된 플레이북이 실행됩니다.

5장. 작업 템플릿 예 및 확장

이 섹션을 참조로 사용하여 요구 사항에 맞게 작업 템플릿을 수정, 사용자 정의 및 확장할 수 있습니다.

5.1. 작업 템플릿 사용자 정의

작업 템플릿을 생성할 때 템플릿 편집기 필드에 기존 템플릿을 포함할 수 있습니다. 이렇게 하면 템플릿을 결합하거나 일반 템플릿에서 더 구체적인 템플릿을 만들 수 있습니다.

다음 템플릿은 기본 템플릿을 결합하여 클라이언트에서 nginx 서비스를 설치하고 시작합니다.

<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'nginx' %>
<%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'nginx' %>

위의 템플릿은 렌더링된 템플릿의 매개변수 값을 직접 지정합니다. 또한 input() 메서드를 사용하여 사용자가 작업 실행 시 렌더링된 템플릿에 대한 입력을 정의할 수 있습니다. 예를 들어 다음 구문을 사용할 수 있습니다.

<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>

위의 템플릿을 사용하여 렌더링된 템플릿에서 매개변수 정의를 가져와야 합니다. 이렇게 하려면 작업 탭으로 이동하여 Add Foreign Input Set 을 클릭하고 대상 템플릿 목록에서 렌더링된 템플릿을 선택합니다. 모든 매개변수를 가져오거나 쉼표로 구분된 목록을 지정할 수 있습니다.

5.2. 기본 작업 템플릿 카테고리

작업 템플릿 카테고리설명

패키지

패키지 관련 작업을 수행하기 위한 템플릿입니다. 설치, 업데이트 및 제거 작업은 기본적으로 포함됩니다.

Puppet

Puppet 실행을 위한 템플릿은 대상 호스트에서 실행됩니다.

power

전원 관련 작업을 수행하기 위한 템플릿입니다. 재시작 및 종료 작업은 기본적으로 포함됩니다.

명령

원격 호스트에서 사용자 지정 명령을 실행하는 템플릿입니다.

서비스

서비스 관련 작업을 수행하기 위한 템플릿입니다. start, stop, restart 및 status 작업이 기본적으로 포함됩니다.

Katello

콘텐츠 관련 작업을 수행하기 위한 템플릿입니다. 이러한 템플릿은 주로 Satellite 웹 UI의 여러 부분(예: 콘텐츠 호스트의 일괄 작업 UI)에서 사용되지만 에라타 설치와 같은 작업을 별도로 수행할 수 있습니다.

5.3. restorecon 템플릿 예

이 예제에서는 대상 호스트의 선택한 디렉터리에 있는 모든 파일에 대한 기본 SELinux 컨텍스트를 복원하는 Run Command - restorecon 이라는 템플릿을 생성하는 방법을 보여줍니다.

절차

  1. Satellite 웹 UI에서 호스트 > 작업 템플릿으로 이동합니다. New Job Template 을 클릭합니다.
  2. Name 필드에 Run Command - restorecon 을 입력합니다. 모든 조직에서 템플릿을 사용할 수 있도록 하려면 기본값 을 선택합니다. 템플릿 편집기에 다음 텍스트를 추가합니다.

    restorecon -RvF <%= input("directory") %>

    & lt;%= input("directory") % > 문자열은 작업을 호출하는 동안 사용자 정의 디렉터리로 교체됩니다.

  3. Job 탭에서 Job categoryCommands 로 설정합니다.
  4. Add Input (입력 추가)을 클릭하여 작업 사용자 지정을 허용합니다. Name 필드에 directory 를 입력합니다. 입력 이름은 템플릿 편집기에 지정된 값과 일치해야 합니다.
  5. user specified 매개 변수 없이 명령을 실행할 수 없도록 Required 를 클릭합니다.
  6. 입력 유형 목록에서 사용자 입력을 선택합니다. 작업 호출 중에 표시할 설명을 입력합니다(예: restorecon의 대상 디렉터리 ).
  7. Submit 을 클릭합니다. 자세한 내용은 호스트 관리의 여러 호스트에서 restorecon 템플릿 실행을 참조하십시오.

5.4. restorecon 템플릿 렌더링

이 예에서는 Run 명령에서 파생된 템플릿 - restorecon 템플릿으로 작성된 템플릿을 생성하는 방법을 보여줍니다. https://access.redhat.com/documentation/en-us/red_hat_satellite/6.12/html-single/managing_hosts/index#Example_restorecon_Template_managing-hosts 이 템플릿은 작업 실행에 대한 사용자 입력이 필요하지 않으며 대상 호스트의 /home/ 디렉터리에 있는 모든 파일의 SELinux 컨텍스트를 복원합니다.

작업 템플릿 설정에 설명된 대로 새 템플릿을 생성하고 템플릿 편집기에서 다음 문자열을 지정합니다.

<%= render_template("Run Command - restorecon", :directory => "/home") %>

5.5. 여러 호스트에서 restorecon 템플릿 실행

이 예제에서는 여러 호스트에서 예제 restorecon 템플릿에 생성된 템플릿을 기반으로 작업을 실행하는 방법을 보여줍니다. 작업은 /home/ 디렉터리에 있는 모든 파일에 SELinux 컨텍스트를 복원합니다.

절차

  1. Satellite 웹 UI에서 호스트 > 모든 호스트로 이동하여 대상 호스트 를 선택합니다. Select Action (작업 선택) 목록에서 Schedule Remote Job (원격 작업 예약)을 선택합니다.
  2. Job invocation 페이지에서 Commands 작업 카테고리와 Run Command - restorecon 작업 템플릿을 선택합니다.
  3. 디렉터리 필드에 /home 을 입력합니다.
  4. ScheduleExecute now 로 설정합니다.
  5. Submit 을 클릭합니다. 작업 실행 상태를 모니터링할 수 있는 Job invocation 페이지로 이동합니다.

5.6. 템플릿에 전원 작업 포함

이 예에서는 재부팅과 같은 전원 작업 수행을 위한 작업 템플릿을 설정하는 방법을 보여줍니다. 이 절차에서는 재부팅 시 연결 해제 예외를 오류로 해석하지 않으므로 원격 작업이 제대로 실행됩니다.

작업 템플릿 설정에 설명된 대로 새 템플릿을 생성하고 템플릿 편집기에서 다음 문자열을 지정합니다.

<%= render_template("Power Action - SSH Default", :action => "restart") %>

법적 공지

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.