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는 prehook
및 posthook
라는 두 개의 하위 폴더를 정의하도록 향상되었습니다. 두 폴더 모두 Git 리포지토리 리소스 루트 경로에 있으며 각각 prehook 및 posthook Ansible Automation Platform 작업을 포함합니다.
Git 서브스크립션이 생성되면 모든 prehook 및 posthook AnsibleJob
리소스가 구문 분석되어 메모리에 오브젝트로 저장됩니다. 애플리케이션 서브스크립션 컨트롤러는 prehook 및 posthook AnsibleJob
인스턴스를 생성할 시기를 결정합니다.
서브스크립션 사용자 지정 리소스를 생성할 때 Git 분기 및 Git 경로는 Git 리포지토리 루트 위치를 가리킵니다. Git 루트 위치에서 두 개의 하위 폴더 prehook
및 posthook
에는 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 작업의 prehook
및 posthook
디렉터리가 포함됩니다.
필수 액세스: 클러스터 관리자
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여야 합니다.
-
INVENTORY
및EXTRA VARIABLES
둘 다에 대해 템플릿에서PROMPT ON
Cryostat를 선택합니다. 자세한 내용은 작업 템플릿을 참조하십시오.
1.5.2.2. Ansible Automation Platform Resource Operator 설치
- OpenShift Container Platform 클러스터 콘솔에 로그인합니다.
- 콘솔 탐색에서 OperatorHub 를 클릭합니다.
-
Ansible Automation Platform Resource Operator 를 검색하고 설치합니다. 참고: prehook 및 posthook
AnsibleJobs
를 제출하려면 OpenShift Container Platform 버전에서 사용 가능한 버전으로 Red Hat Ansible Automation Platform Resource Operator를 설치합니다.
그런 다음 콘솔의 인증 정보 페이지에서 인증 정보를 생성할 수 있습니다. 인증 정보 추가 를 클릭하거나 탐색의 페이지에 액세스합니다. 인증 정보 정보는 Ansible Automation Platform의 인증 정보 생성 을 참조하십시오.
1.5.3. Ansible Automation Platform 구성
Ansible Automation Platform 작업을 사용하면 작업을 자동화하고 Slack 및 PagerDuty 서비스와 같은 외부 서비스와 통합할 수 있습니다. Git 리포지토리 리소스 루트 경로에는 애플리케이션 배포, 애플리케이션 업데이트 또는 클러스터에서 애플리케이션 제거의 일부로 실행되는 Ansible Automation Platform 작업의 prehook
및 posthook
디렉터리가 포함됩니다.
필수 액세스: 클러스터 관리자
다음 작업을 사용하여 Ansible Automation Platform 구성을 구성할 수 있습니다.
1.5.3.1. Ansible Automation Platform 시크릿 설정
동일한 서브스크립션 네임스페이스에 Ansible Automation Platform 시크릿 사용자 정의 리소스를 생성해야 합니다. Ansible Automation Platform 시크릿은 동일한 서브스크립션 네임스페이스로 제한됩니다.
Ansible Automation Platform 시크릿 이름 섹션을 작성하여 콘솔에서 시크릿을
생성합니다. 터미널을 사용하여 보안을 생성하려면 샘플yaml
파일을 편집하고 적용합니다.참고:
네임스페이스
는 서브스크립션 네임스페이스와 동일합니다.stringData:token
및host
는 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
다음 명령을 실행하여 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
인스턴스를 지속적으로 조정 및 다시 시작합니다.
-
pre
AnsibleJob
이 완료된 후 기본 서브스크립션을 다시 실행합니다. - 기본 서브스크립션에 사양 변경 사항이 있는 경우 서브스크립션을 재배포합니다. 재배포 절차에 맞게 기본 서브스크립션 상태를 업데이트해야 합니다.
hub 클러스터 서브스크립션 상태를
nil
로 재설정합니다. 서브스크립션은 대상 클러스터에서 서브스크립션 배포와 함께 새로 고쳐집니다.대상 클러스터에서 배포가 완료되면 대상 클러스터의 서브스크립션 상태가 "서브스크립션
" 또는 "
실패"
로 업데이트되고 허브 클러스터 서브스크립션 상태와 동기화됩니다.-
기본 서브스크립션이 완료되면 새
AnsibleJob
인스턴스를 다시 시작합니다. 서브스크립션이 업데이트되었는지 확인합니다. 다음 출력을 참조하십시오.
-
subscription.status ==
"subscribed"
-
subscription.status == 모든 대상 클러스터가
"서브스크립션됨"
-
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 워크플로에 대한 자세한 내용은 워크플로우를 참조하십시오.