1.5. Ansible Automation Platform 통합 및 도입


Red Hat Advanced Cluster Management는 Red Hat Ansible Automation Platform과 통합되어 Git 서브스크립션 애플리케이션 관리를 위한 prehook 및 posthook AnsibleJob 인스턴스를 생성할 수 있습니다. 구성 요소 및 Ansible Automation Platform 구성 방법에 대해 알아봅니다.

필수 액세스: 클러스터 관리자

1.5.1. 통합 및 구성 요소

Ansible Automation Platform 작업을 Git 서브스크립션에 통합할 수 있습니다. 예를 들어 데이터베이스 프런트 엔드 및 백엔드 애플리케이션의 경우 Ansible Automation Platform 작업에서 Ansible Automation Platform을 사용하여 데이터베이스를 인스턴스화해야 합니다. 애플리케이션은 Git 서브스크립션을 통해 설치됩니다. 서브스크립션을 사용하여 프런트 엔드 및 백엔드 애플리케이션을 배포하기 전에 데이터베이스가 인스턴스화됩니다.

애플리케이션 서브스크립션 Operator는 prehookposthook 라는 두 개의 하위 폴더를 정의하도록 향상되었습니다. 두 폴더 모두 Git 리포지토리 리소스 루트 경로에 있으며 각각 prehook 및 posthook Ansible Automation Platform 작업을 포함합니다.

Git 서브스크립션이 생성되면 모든 prehook 및 posthook AnsibleJob 리소스가 구문 분석되어 메모리에 오브젝트로 저장됩니다. 애플리케이션 서브스크립션 컨트롤러는 prehook 및 posthook AnsibleJob 인스턴스를 생성할 시기를 결정합니다.

서브스크립션 사용자 지정 리소스를 생성할 때 Git 분기 및 Git 경로는 Git 리포지토리 루트 위치를 가리킵니다. Git 루트 위치에서 두 개의 하위 폴더 prehookposthook 에는 Kind:AnsibleJob 리소스가 하나 이상 포함되어야 합니다.

1.5.1.1. prehook

애플리케이션 서브스크립션 컨트롤러는 prehook AnsibleJob 오브젝트로 prehook 폴더의 모든 kind:AnsibleJob CR을 검색한 다음 새 prehook AnsibleJob 인스턴스를 생성합니다. 새 인스턴스 이름은 prehook AnsibleJob 오브젝트 이름과 임의의 접미사 문자열입니다.

다음 예제 인스턴스 이름: database-sync-1-2913063 을 참조하십시오.

애플리케이션 서브스크립션 컨트롤러는 1분 루프에 조정 요청을 다시 대기열에 넣습니다. 여기서 prehook AnsibleJob 상태를 확인합니다.AnsibleJobResult. prehook 상태가 성공하면 애플리케이션 서브스크립션이 기본 서브스크립션을 계속 배포합니다.

1.5.1.2. posthook

애플리케이션 서브스크립션 상태가 업데이트되면 서브스크립션 상태가 서브스크립션 상태인 모든 대상 클러스터에 가입하거나 전파되면 애플리케이션 서브스크립션 컨트롤러는 posthook AnsibleJob 오브젝트로 posthook 폴더의 모든 AnsibleJob 유형의 사용자 정의 리소스를 검색합니다. 그런 다음 새 posthook AnsibleJob 인스턴스를 생성합니다. 새 인스턴스 이름은 posthook AnsibleJob 오브젝트 이름과 임의의 접미사 문자열입니다.

다음 예제 인스턴스 이름: service-ticket-1-2913849 를 참조하십시오.

Ansible Automation Platform을 활성화하려면 다음 항목을 참조하십시오.

1.5.2. Ansible Automation Platform 설정

Ansible Automation Platform 작업을 사용하면 작업을 자동화하고 Slack 및 PagerDuty 서비스와 같은 외부 서비스와 통합할 수 있습니다. Git 리포지토리 리소스 루트 경로에는 애플리케이션 배포, 애플리케이션 업데이트 또는 클러스터에서 애플리케이션 제거의 일부로 실행되는 Ansible Automation Platform 작업의 prehookposthook 디렉터리가 포함됩니다.

필수 액세스: 클러스터 관리자

1.5.2.1. 사전 요구 사항

  • 지원되는 OpenShift Container Platform 버전을 설치합니다.
  • Ansible Automation Platform을 설치합니다. 지원되는 최신 버전을 설치하려면 Red Hat Ansible Automation Platform 설명서를 참조하십시오.
  • Ansible Automation Platform Resource Operator를 설치하여 Ansible Automation Platform 작업을 Git 서브스크립션 라이프사이클에 연결합니다. 모범 사례: Ansible Automation Platform 작업 템플릿은 idempotent여야 합니다.
  • INVENTORYEXTRA VARIABLES 둘 다에 대해 템플릿에서 PROMPT ON Cryostat를 선택합니다. 자세한 내용은 작업 템플릿을 참조하십시오.

1.5.2.2. Ansible Automation Platform Resource Operator 설치

  1. OpenShift Container Platform 클러스터 콘솔에 로그인합니다.
  2. 콘솔 탐색에서 OperatorHub 를 클릭합니다.
  3. Ansible Automation Platform Resource Operator 를 검색하고 설치합니다. 참고: prehook 및 posthook AnsibleJobs 를 제출하려면 다음 OpenShift Container Platform 버전에서 사용 가능한 해당 버전으로 Red Hat Ansible Automation Platform Resource Operator를 설치합니다.

    • OpenShift Container Platform 4.8 필요 (AAP) Resource Operator early-access, stable-2.1, stable-2.2
    • OpenShift Container Platform 4.9 needs (AAP) Resource Operator early-access, stable-2.1, stable-2.2
    • OpenShift Container Platform 4.10 이상 필요 (AAP) Resource Operator stable-2.1, stable-2.2

그런 다음 콘솔의 인증 정보 페이지에서 인증 정보를 생성할 수 있습니다. 인증 정보 추가 를 클릭하거나 탐색의 페이지에 액세스합니다. 인증 정보 정보는 Ansible Automation Platform의 인증 정보 생성 을 참조하십시오.

1.5.3. Ansible Automation Platform 구성

Ansible Automation Platform 작업을 사용하면 작업을 자동화하고 Slack 및 PagerDuty 서비스와 같은 외부 서비스와 통합할 수 있습니다. Git 리포지토리 리소스 루트 경로에는 애플리케이션 배포, 애플리케이션 업데이트 또는 클러스터에서 애플리케이션 제거의 일부로 실행되는 Ansible Automation Platform 작업의 prehookposthook 디렉터리가 포함됩니다.

필수 액세스: 클러스터 관리자

다음 작업을 사용하여 Ansible Automation Platform 구성을 구성할 수 있습니다.

1.5.3.1. Ansible Automation Platform 시크릿 설정

동일한 서브스크립션 네임스페이스에 Ansible Automation Platform 시크릿 사용자 정의 리소스를 생성해야 합니다. Ansible Automation Platform 시크릿은 동일한 서브스크립션 네임스페이스로 제한됩니다.

  1. Ansible Automation Platform 시크릿 이름 섹션을 작성하여 콘솔에서 시크릿을 생성합니다. 터미널을 사용하여 보안을 생성하려면 샘플 yaml 파일을 편집하고 적용합니다.

    참고: 네임스페이스 는 서브스크립션 네임스페이스와 동일합니다. stringData:tokenhost 는 Ansible Automation Platform에서 가져온 것입니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: toweraccess
      namespace: same-as-subscription
    type: Opaque
    stringData:
      token: ansible-tower-api-token
      host: https://ansible-tower-host-url
  2. 다음 명령을 실행하여 YAML 파일을 추가합니다.

    oc apply -f

앱 서브스크립션 컨트롤러에서 prehook 및 posthook Ansible 작업을 생성할 때 subscription spec.hooksecretref 의 시크릿을 사용할 수 있는 경우 AnsibleJob 사용자 정의 리소스 spec.tower_auth_secret 으로 전송되고 AnsibleJob 은 Ansible Automation Platform에 액세스할 수 있습니다.

1.5.3.2. 보안 조정 설정

prehook 및 posthook AnsibleJob 이 포함된 기본 서브스크립션의 경우 모든 prehook 및 posthook AnsibleJob 또는 기본 서브스크립션이 Git 리포지토리에서 업데이트된 후 기본 서브스크립션을 조정해야 합니다.

prehook AnsibleJob 및 기본 서브스크립션은 새 pre AnsibleJob 인스턴스를 지속적으로 조정 및 다시 시작합니다.

  1. pre AnsibleJob 이 완료된 후 기본 서브스크립션을 다시 실행합니다.
  2. 기본 서브스크립션에 사양 변경 사항이 있는 경우 서브스크립션을 재배포합니다. 재배포 절차에 맞게 기본 서브스크립션 상태를 업데이트해야 합니다.
  3. hub 클러스터 서브스크립션 상태를 nil 로 재설정합니다. 서브스크립션은 대상 클러스터에서 서브스크립션 배포와 함께 새로 고쳐집니다.

    대상 클러스터에서 배포가 완료되면 대상 클러스터의 서브스크립션 상태가 "서브스크립션 " 또는 " 실패" 로 업데이트되고 허브 클러스터 서브스크립션 상태와 동기화됩니다.

  4. 기본 서브스크립션이 완료되면 새AnsibleJob 인스턴스를 다시 시작합니다.
  5. 서브스크립션이 업데이트되었는지 확인합니다. 다음 출력을 참조하십시오.

    • subscription.status == "subscribed"
    • subscription.status == 모든 대상 클러스터가 "서브스크립션됨"

AnsibleJob 사용자 정의 리소스가 생성되면 대상 Ansible Automation Platform과 통신하여 Ansible Automation Platform 작업을 시작하기 위해 Kubernetes 작업 사용자 정의 리소스가 생성됩니다. 작업이 완료되면 작업의 최종 상태가 AnsibleJob status.AnsibleJob Result 로 반환됩니다.

참고:

AnsibleJob status.conditions 는 Kubernetes 작업 결과 생성을 저장하기 위해 Ansible Automation Platform 작업 Operator에 의해 예약되어 있습니다. status.conditions 는 실제 Ansible Automation Platform 작업 상태를 반영하지 않습니다.

서브스크립션 컨트롤러는 AnsibleJob.status.conditions 대신 AnsibleJob.status.AnsibleJob.Result 에서 Ansible Automation Platform 작업 상태를 확인합니다.

이전에 prehook 및 posthook AnsibleJob 워크플로우에서 언급했듯이 기본 서브스크립션이 Git 리포지토리에서 업데이트되면 새 prehook 및 posthook AnsibleJob 인스턴스가 생성됩니다. 결과적으로 하나의 기본 서브스크립션이 여러 AnsibleJob 인스턴스에 연결할 수 있습니다.

4개의 필드는 subscription.status.ansiblejobs 에 정의되어 있습니다.

  • lastPrehookJobs: 가장 최근 prehook Ansible 작업
  • prehookJobsHistory: All the prehook Ansible jobs history
  • lastPosthookJobs: 가장 최근 posthook Ansible 작업
  • posthookJobsHistory: 모든 posthook Ansible 작업 내역

1.5.3.3. Ansible Automation Platform 샘플 YAML 파일 사용

Git prehook 및 posthook 폴더에서 AnsibleJob YAML 파일의 다음 샘플을 참조하십시오.

apiVersion: tower.ansible.com/v1alpha1
kind: AnsibleJob
metadata:
  name: demo-job-001
  namespace: default
spec:
  tower_auth_secret: toweraccess
  job_template_name: Demo Job Template
  extra_vars:
    cost: 6.88
    ghosts: ["inky","pinky","clyde","sue"]
    is_enable: false
    other_variable: foo
    pacman: mrs
    size: 8
    targets_list:
    - aaa
    - bbb
    - ccc
    version: 1.23.45
  job_tags: "provision,install,configuration"
  skip_tags: "configuration,restart"

1.5.3.4. 워크플로우 시작

AnsibleJob 사용자 정의 리소스를 사용하여 Ansible Automation Platform 워크플로를 시작하려면 다음 예에 표시되는 job_template_name 필드를 workflow_template_name 으로 바꿉니다.

1.5.3.5. Ansible Automation Platform 샘플 YAML 워크플로우 사용

Git prehook 및 Git posthook 폴더에서 워크플로 AnsibleJob YAML 파일의 다음 샘플을 참조하십시오.

apiVersion: tower.ansible.com/v1alpha1
kind: AnsibleJob
metadata:
  name: demo-job-001
  namespace: default
spec:
  tower_auth_secret: toweraccess
  workflow_template_name: Demo Workflow Template
  extra_vars:
    cost: 6.88
    ghosts: ["inky","pinky","clyde","sue"]
    is_enable: false
    other_variable: foo
    pacman: mrs
    size: 8
    targets_list:
    - aaa
    - bbb
    - ccc
    version: 1.23.45

Ansible 워크플로에 대한 자세한 내용은 워크플로우를 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.