자동화 실행 사용
자동화 실행을 사용하여 자동화를 배포, 정의, 운영, 확장 및 위임
초록
머리말 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Ansible Automation Platform 자동화 컨트롤러에 관심을 가져 주셔서 감사합니다. 자동화 컨트롤러를 사용하면 Ansible 기반 환경에 제어, 지식 및 위임을 추가하여 팀이 복잡한 다중 계층 배포를 관리할 수 있습니다.
자동화 컨트롤러를 사용하면 자동화 컨트롤러에서 사용할 수 있는 모든 기능을 설명합니다. 플레이북, 변수 및 태그와 같은 개념을 포함하여 Ansible에 대해 어느 정도 익숙한 것으로 가정합니다. 이러한 Ansible 및 기타 Ansible 개념에 대한 자세한 내용은 Ansible 설명서 를 참조하십시오.
Red Hat 문서에 관한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
이 문서를 개선하기 위한 제안이 있거나 오류를 찾을 수 있는 경우 https://access.redhat.com 에서 기술 지원에 문의하여 요청을 열 수 있습니다.
1장. 자동화 컨트롤러 개요 링크 복사링크가 클립보드에 복사되었습니다!
조직 전체의 Ansible Automation Platform 사용자는 간단하고 강력하며 에이전트가 없는 기술 구현을 통해 자동화 콘텐츠를 공유, 감시 및 관리할 수 있습니다. IT 관리자는 개별 팀에 자동화 적용 방법에 대한 지침을 제공할 수 있습니다. 자동화 개발자는 복잡한 툴 및 프레임워크를 따르는 운영 오버헤드 없이 기존 지식을 사용하는 작업을 작성할 수 있습니다. 하이브리드 클라우드에서 에지에 이르기까지 포괄적인 자동화 솔루션을 배포할 수 있는 더 안전하고 안정적인 기반입니다.
Ansible Automation Platform에는 사용자가 엔터프라이즈 전반에 걸쳐 자동화를 정의, 운영, 확장 및 위임할 수 있는 자동화 컨트롤러가 포함되어 있습니다.
1.1. 실시간 플레이북 출력 및 생성 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러를 사용하면 플레이북이 실시간으로 실행되는 것을 볼 수 있으므로 각 호스트를 확인하는 것을 확인할 수 있습니다. 돌아가서 특정 작업 및 호스트에 대한 결과를 자세히 살펴보거나, 특정 플레이 또는 호스트를 검색하고 해당 결과만 보거나 수정해야 하는 오류를 찾을 수 있습니다.
1.2. "푸시 버튼" 자동화 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러를 사용하여 즐겨 찾는 프로젝트에 액세스하고 웹 인터페이스에서 실행을 다시 트리거합니다. 자동화 컨트롤러에서 입력 변수를 요청하고, 인증 정보를 입력하라는 메시지를 표시하고, 작업을 시작 및 모니터링하고, 결과 및 호스트 기록을 표시합니다.
1.3. 역할 기반 액세스 제어 및 감사 간소화 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러를 사용하면 다음을 수행할 수 있습니다.
- 역할 기반 액세스 제어 (RBAC)를 통해 다른 팀 또는 명시적 사용자에게 특정 작업을 수행할 수 있는 권한을 부여합니다. 예제 작업에는 파일 보기, 생성 또는 수정이 포함됩니다.
- 일부 프로젝트는 비공개로 유지하지만 일부 사용자는 인벤토리를 편집할 수 있고 다른 사용자는 점검(시험 실행) 또는 라이브 모드에서 특정 시스템에 대해 플레이북을 실행할 수 있습니다.
- 특정 사용자가 인증 정보를 노출하지 않고 사용하도록 설정합니다.
자동화 컨트롤러는 편집된 오브젝트 및 시작된 작업을 포함하여 작업 기록과 작업을 수행한 사용자를 기록합니다.
사용자 또는 팀에 작업 템플릿을 사용할 수 있는 권한을 부여하려면 작업 템플릿에 직접 권한을 할당할 수 있습니다. 인증 정보는 자동화 컨트롤러 RBAC 시스템의 전체 오브젝트이며 많은 사용자 또는 팀에 할당될 수 있습니다.
자동화 컨트롤러에는 감사자 유형이 포함됩니다. 시스템 수준 감사자는 시스템 자동화의 모든 측면을 볼 수 있지만 자동화를 실행하거나 변경할 수 있는 권한은 없습니다. 감사자는 REST API에서 자동화 정보를 스크랩하는 서비스 계정에 유용합니다.
추가 리소스
- 사용자 역할에 대한 자세한 내용은 역할 기반 액세스 제어를 사용하여 액세스 관리를 참조하십시오.
1.4. 클라우드 및 자동 스케일링 유연성 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에는 노드가 필요에 따라 구성을 요청할 수 있는 강력한 선택적 프로비저닝 콜백 기능이 포함되어 있습니다. 이는 클라우드 자동 확장 시나리오에 이상적인 솔루션이며 다음과 같은 기능을 포함합니다.
- Cobbler와 같은 프로비저닝 서버와 통합되고 관리 시스템을 예측할 수 없는 가동 시간을 처리할 수 있습니다.
- 원격 노드에 관리 소프트웨어를 설치할 필요가 없습니다.
-
콜백 솔루션은
curl또는wget을 호출하여 트리거할 수 있으며init스크립트, kickstart 또는 preseeds에 포함될 수 있습니다. - 인벤토리에 나열된 시스템만 구성을 요청할 수 있도록 액세스를 제어할 수 있습니다.
1.5. 이상적인 RESTful API 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러 REST API는 시스템 관리 애플리케이션에 이상적인 RESTful API로, 모든 리소스가 완전히 검색 가능하고 페이지가 매겨지고, 잘 모델링됩니다. 스타일 API 브라우저를 사용하면 http://<server name>/api/ 의 API 루트에서 모든 리소스 및 관계를 표시할 수 있습니다. 사용자 인터페이스에서 수행할 수 있는 모든 작업은 API에서 수행할 수 있습니다.
1.6. 백업 및 복원 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform은 시스템 또는 시스템을 백업 및 복원하여 필요에 따라 인스턴스를 쉽게 백업하고 복제할 수 있습니다.
1.7. Ansible Galaxy 통합 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Galaxy requirements.yml 파일을 프로젝트 디렉터리에 포함하면 자동화 컨트롤러에서 Galaxy, GitHub 또는 로컬 소스 제어에서 플레이북에 필요한 역할을 자동으로 가져옵니다. 자세한 내용은 Ansible Galaxy 지원을 참조하십시오.
1.8. OpenStack에 대한 인벤토리 지원 링크 복사링크가 클립보드에 복사되었습니다!
OpenStack에서 동적 인벤토리 지원을 사용할 수 있습니다. 이를 통해 OpenStack 클라우드에서 실행 중인 가상 머신 또는 이미지를 대상으로 지정할 수 있습니다.
자세한 내용은 OpenStack 인증 정보 유형을 참조하십시오.
1.9. 원격 명령 실행 링크 복사링크가 클립보드에 복사되었습니다!
원격 명령 실행을 사용하여 단일 사용자 추가, 단일 보안 취약점 업데이트 또는 실패한 서비스 재시작과 같은 간단한 작업을 수행합니다. 단일 Ansible 플레이로 설명할 수 있는 모든 작업은 인벤토리의 호스트 또는 호스트 그룹에서 실행할 수 있습니다. 시스템을 빠르고 쉽게 관리할 수 있습니다. RBAC 엔진 및 자세한 감사 로깅으로 인해 어떤 사용자가 특정 작업을 완료했는지 알 수 있습니다.
1.10. 시스템 추적 링크 복사링크가 클립보드에 복사되었습니다!
사실 캐싱 기능을 사용하여 사실을 수집할 수 있습니다. 자세한 내용은 팩트 캐싱 을 참조하십시오.
1.11. 통합된 알림 링크 복사링크가 클립보드에 복사되었습니다!
자동화 상태를 추적합니다.
다음 알림을 구성할 수 있습니다.
- 작업 템플릿, 프로젝트 또는 전체 조직에 대한 스택 가능한 알림
- 작업 시작, 작업 성공, 작업 실패, 작업 승인에 대한 다른 알림(워크플로우 노드용)
다음 알림 소스가 지원됩니다.
- 이메일
- Grafana
- IRC
- Mattermost
- PagerDuty
- Rocket.Chat
- Slack
- Twilio
- Webhook (다른 툴과의 통합을 위해 임의의 Webhook에 게시)
이전 알림 유형마다 알림 메시지를 사용자 지정할 수도 있습니다.
1.12. 통합 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 다음과 같은 통합을 지원합니다.
- Red Hat Satellite 6의 동적 인벤토리 소스.
자세한 내용은 Red Hat Satellite 6 을 참조하십시오.
- Red Hat Insights 통합을 통해 Insights 플레이북을 Ansible Automation Platform 프로젝트로 사용할 수 있습니다.
자세한 내용은 Red Hat Ansible Automation Platform Remediations용 Red Hat Insights 설정을 참조하십시오.
- 자동화 허브는 자동화 컨트롤러의 콘텐츠 공급자 역할을 하므로 자동화 컨트롤러 배포와 자동화 허브 배포가 서로 함께 실행되어야 합니다.
1.13. 사용자 정의 가상 환경 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 Ansible 환경 지원을 통해 다양한 Ansible 환경을 보유하고 다양한 팀 및 작업에 대한 사용자 지정 경로를 지정할 수 있습니다.
1.14. 인증 개선 사항 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 다음을 지원합니다.
- LDAP
- SAML
- 토큰 기반 인증
LDAP 및 SAML 지원을 통해 엔터프라이즈 계정 정보를 보다 유연한 방식으로 통합할 수 있습니다.
토큰 기반 인증을 사용하면 통합된 OAuth 2 토큰 지원을 통해 자동화 컨트롤러에서 타사 툴 및 서비스를 인증할 수 있습니다.
1.15. 클러스터 관리 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 그룹의 런타임 관리를 통해 스케일링을 구성할 수 있습니다.
1.16. 워크플로우 개선 사항 링크 복사링크가 클립보드에 복사되었습니다!
복잡한 프로비저닝, 배포 및 오케스트레이션 워크플로우를 모델링하기 위해 자동화 컨트롤러 확장 워크플로를 여러 가지 방법으로 사용할 수 있습니다.
- 인벤토리 덮어쓰기: 워크플로우 정의 시 또는 시작 시 워크플로우에서 인벤토리를 덮어쓸 수 있습니다. 자동화 컨트롤러를 사용하여 애플리케이션 배포 워크플로를 정의한 다음 여러 환경에서 다시 사용합니다.
- 복잡한 프로세스를 모델링할 때 워크플로에 대한 통합 노드, 여러 단계가 완료될 때까지 기다려야 하는 경우가 있습니다. 자동화 컨트롤러 워크플로는 이를 복제할 수 있습니다. 워크플로우 단계는 여러 이전 워크플로우 단계가 올바르게 완료될 때까지 기다린 후 진행할 수 있습니다.
- 워크플로우 Nesting 개별 워크플로우를 더 큰 워크플로우의 구성 요소로 다시 사용할 수 있습니다. 예를 들면 프로비저닝 및 애플리케이션 배포 워크플로우를 단일 워크플로우로 결합하는 작업이 있습니다.
- 워크플로우 일시 중지 및 승인은 사용자 개입이 필요한 승인 노드가 포함된 워크플로우를 빌드할 수 있습니다. 이렇게 하면 플레이북 간에 워크플로우를 일시 중지하여 사용자가 워크플로우의 다음 단계를 계속 진행하는 것에 대해 승인(또는 거부)할 수 있습니다.
자세한 내용은 자동화 컨트롤러의 워크플로우를 참조하십시오.
1.17. 작업 배포 링크 복사링크가 클립보드에 복사되었습니다!
수천 대의 시스템에서 실행되는 사실 수집 또는 구성 작업을 사용하여 자동화 컨트롤러 클러스터에 배포할 수 있는 슬라이스로 나눕니다. 이로 인해 안정성이 증가하고 작업 완료 속도가 빨라지고 클러스터 사용을 개선할 수 있습니다.
예를 들어 대규모 15,000개의 스위치에서 매개변수를 변경하거나 다중 노드 RHEL 자산에서 정보를 수집할 수 있습니다.
자세한 내용은 작업 분할을 참조하십시오.
1.18. FIPS 지원 환경의 배포 지원 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 FIPS와 같은 제한된 모드에서 배포 및 실행
1.19. 조직당 호스트 수 제한 링크 복사링크가 클립보드에 복사되었습니다!
많은 대규모 조직에는 여러 조직에서 공유되는 인스턴스가 있습니다. 한 조직이 라이센스가 부여된 모든 호스트를 사용할 수 없도록 하기 위해 이 기능을 사용하면 슈퍼유저가 각 조직에 할당할 수 있는 라이센스가 부여된 호스트 수에 대해 지정된 상한을 설정할 수 있습니다. 자동화 컨트롤러 알고리즘 요소는 조직의 제한과 모든 조직의 총 호스트 수를 변경합니다. 인벤토리 동기화로 인해 조직이 정책을 준수하지 않는 경우 인벤토리 업데이트가 실패합니다. 또한 슈퍼유저는 경고와 함께 라이센스를 과도하게 할당할 수 있습니다.
1.20. 인벤토리 플러그인 링크 복사링크가 클립보드에 복사되었습니다!
다음 인벤토리 플러그인은 업스트림 컬렉션에서 사용됩니다.
-
amazon.aws.aws_ec2 -
community.vmware.vmware_vm_inventory -
azure.azcollection.azure_rm -
google.cloud.gcp_compute -
theforeman.foreman.foreman -
openstack.cloud.openstack -
ovirt.ovirt.ovirt -
awx.awx.tower
1.21. 시크릿 관리 시스템 링크 복사링크가 클립보드에 복사되었습니다!
시크릿 관리 시스템을 사용하면 외부 인증 정보가 저장되고 자동화 컨트롤러에서 사용할 수 있도록 제공되므로 직접 제공할 필요가 없습니다.
2장. 설치 후 Ansible Automation Platform에 로그인 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform을 설치한 후 로그인해야 합니다.
프로세스
- 설치가 완료된 후 제공되는 로그인 정보를 사용하여 웹 브라우저를 열고 서버 URL로 이동하여 Ansible Automation Platform에 로그인합니다. https://<CONTROLLER_SERVER_NAME>/
설치 프로세스 중에 지정된 인증 정보를 사용하여 로그인합니다.
- 기본 사용자 이름은 admin 입니다.
- admin 의 암호는 지정된 값입니다.
- 필요한 사용자 옆에 있는 아이콘을 클릭합니다.
- 클릭합니다.
- 필요한 세부 정보를 편집하고 클릭합니다.
2.1. 서비스 계정 인증 정보를 사용하여 서브스크립션 검색 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform에 처음 로그인하면 서브스크립션 정보를 추가해야 합니다.
서브스크립션을 이미 추가한 경우 서브스크립션 + → 세부 정보를 업데이트할 수 있습니다.
사전 요구 사항
- 조직 관리자입니다.
- 서비스 계정을 생성하고 클라이언트 ID와 클라이언트 시크릿을 저장했습니다.
관리 액세스 권한이 없는 경우 사용자 이름 및 암호 탭에 Red Hat 사용자 이름과 암호를 입력하여 Ansible Automation Platform 인스턴스에 서브스크립션을 찾아 추가할 수 있습니다.
프로세스
서비스 계정 인증 정보를 입력하여 프로필과 연결된 서브스크립션을 찾습니다.
- 서브스크립션을 찾으려면 서비스 계정 이라는 레이블이 지정된 탭을 클릭합니다.
- 클라이언트 ID 필드에 서비스 계정을 만들 때 받은 클라이언트 ID를 입력합니다.
- 클라이언트 시크릿 필드에 서비스 계정을 생성할 때 받은 클라이언트 시크릿을 입력합니다. 서브스크립션이 서브스크립션 이라는 레이블이 지정된 목록에 나타납니다. 서브스크립션을 선택합니다.
- 서브스크립션을 추가한 후 클릭합니다.
- 최종 사용자 라이센스 계약에 동의했음을 나타내는 확인란을 선택합니다.
- 정보를 검토하고 마침 을 클릭합니다.
클라이언트 ID와 클라이언트 시크릿을 입력했지만 서브스크립션을 찾을 수 없는 경우 서비스 계정에 올바른 권한이 설정되어 있지 않을 수 있습니다. 서비스 계정에 대한 자세한 내용 및 문제 해결 지침은 서비스 계정 자격 증명을 통해 인증하도록 Ansible Automation Platform 구성을 참조하십시오.
3장. 사용자 인터페이스 링크 복사링크가 클립보드에 복사되었습니다!
자동화 실행 사용자 인터페이스 (UI)는 IT 오케스트레이션 요구 사항을 위한 그래픽 프레임워크를 제공합니다.
사용자 프로필, 정보 페이지에 액세스하거나, 관련 문서를 보거나, 페이지 헤더의 아이콘을 사용하여 로그아웃합니다.
탐색 패널을 사용하면 작업, 템플릿, 일정, 프로젝트, 인프라 및 관리 와 같은 자동화 컨트롤러 리소스에 빠르게 액세스할 수 있습니다.
3.1. 인프라 메뉴 링크 복사링크가 클립보드에 복사되었습니다!
인프라 메뉴에서는 다음과 같은 자동화 컨트롤러 리소스에 빠르게 액세스할 수 있습니다.
3.2. 관리 링크 복사링크가 클립보드에 복사되었습니다!
관리 메뉴에서는 자동화 컨트롤러의 관리 옵션에 액세스할 수 있습니다. 여기에서 다음을 생성, 보기 및 편집할 수 있습니다.
3.3. 설정 메뉴 링크 복사링크가 클립보드에 복사되었습니다!
사용자 인터페이스의 설정 메뉴를 사용하여 일부 자동화 컨트롤러 옵션을 구성할 수 있습니다.
설정 페이지를 사용하면 관리자가 다음을 구성할 수 있습니다.
4장. 검색 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러의 검색 툴을 사용하여 여러 기능의 검색 및 필터링 기능을 사용할 수 있습니다. 검색 필드의 이름 메뉴에서 확장 가능한 검색 조건 목록을 사용할 수 있습니다.
4.1. 검색 규칙 링크 복사링크가 클립보드에 복사되었습니다!
이러한 검색 팁에서는 호스트를 검색하지 않는 것으로 가정합니다.
- 검색의 일반적인 구문은 필드와 값이 차례로 구성됩니다.
- 콜론은 값에서 검색할 필드를 구분하는 데 사용됩니다.
-
검색에 콜론이 없는 경우(예: 3 참조)
?search=foobar가 전송되는 간단한 문자열 검색으로 처리됩니다.
작업 템플릿의 검색 기능은 영숫자 문자로만 제한됩니다.
다음은 검색에 사용되는 구문의 예입니다.
-
name:localhost이 예제에서 사용자는 name 속성에서localhost문자열을 검색하고 있습니다. 해당 문자열이 필드 또는 관련 필드의 항목과 일치하지 않으면 전체 검색이 문자열로 처리됩니다. -
organization.name:Default이 예는 관련 필드 검색을 보여줍니다.organization.name의 마침표는 모델을 필드에서 구분합니다. 검색이 얼마나 깊거나 복잡한지에 따라 쿼리의 해당 부분에 마침표가 여러 개 있을 수 있습니다. foobar이 검색은 이름 및 설명 필드에 대해icontains검색을 사용하여 검색어의 모든 인스턴스를 찾는 간단한 문자열(키 용어) 검색입니다. 용어(예:foo bar) 사이에 공백을 사용하는 경우 두 용어를 모두 포함하는 결과가 반환됩니다. 용어를 따옴표로 묶는 경우(예:"foo bar") 자동화 컨트롤러는 용어가 함께 나타나는 문자열을 검색합니다.API 이름에 대해 특정 이름 검색을 검색합니다. 예를 들어 사용자 인터페이스의
관리 작업은API의system_job입니다.-
조직:Default이 예제에서는 관련 필드 검색을 표시하지만 조직과 함께 사용할 필드를 지정하지 않습니다. 이는 API에서 지원하며 간단한 문자열 검색과 유사하지만 조직에 대해 수행됩니다(이름 및 설명 모두에 대해 아이콘 검색 수행).
4.1.1. 검색 필드의 값 링크 복사링크가 클립보드에 복사되었습니다!
특정 필드의 값을 찾으려면 API 끝점에서 광범위한 옵션과 유효한 해당 값을 참조하십시오. 예를 들어 > /api/v2/jobs type 필드에 대해 검색하려면 /api/v2/jobs에 대한 OPTIONS 요청을 수행하고 API의 "type" 항목을 찾아 값을 찾을 수 있습니다. 또한 각 화면의 맨 아래로 스크롤하여 관련 검색을 볼 수 있습니다. /api/v2/jobs 의 예에서는 관련 검색이 표시됩니다.
필드의 값은 GET 요청의 키에서 가져옵니다. URL,related, summary_fields 는 사용되지 않습니다. 관련 필드의 값도 OPTIONS 응답에서 제공되지만 다른 특성에서 제공됩니다. 관련 필드는 related_search_fields 에서 모든 값을 가져와 끝에서 __search 를 제거하여 채워집니다.
필드의 값 또는 관련 필드의 값으로 시작하지 않는 검색은 일반 문자열 검색으로 처리됩니다. 예를 들어 localhost 를 검색하면 UI에서 ?search=localhost 를 API 끝점에 쿼리 매개변수로 보냅니다. 이름 및 설명 필드에서 icontains 검색의 바로 가기입니다.
4.1.3. 기타 검색 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 검색할 때 다음 문제를 유의하십시오.
- 현재 또는 쿼리에 지원되는 구문이 없습니다. 모든 검색어는 쿼리 매개변수에서 AND로 지정됩니다.
- 검색 매개변수의 왼쪽 부분은 공백이 있는 문자열 검색을 지원하기 위해 따옴표로 묶을 수 있습니다. 자세한 내용은 검색 규칙을 참조하십시오.
-
현재 필드의 값은 GET 요청에서 반환될 것으로 예상되는 직접적인 속성입니다. 값 중 하나에 대해 검색할 때마다 자동화 컨트롤러는
__icontains검색을 수행합니다. 예를 들어name:localhost가 다시?name__icontains=localhost로 보냅니다. 자동화 컨트롤러는 현재id에서도 모든 필드 값에 대해 이 검색을 수행합니다.
4.2. 정렬 링크 복사링크가 클립보드에 복사되었습니다!
해당하는 경우 각 열의 화살표를 사용하여 오름차순으로 정렬합니다. 다음은 스케줄 목록의 예입니다.
화살표 방향은 열의 정렬 순서를 나타냅니다.
5장. 자동화 컨트롤러의 작업 링크 복사링크가 클립보드에 복사되었습니다!
작업은 호스트 인벤토리에 대해 Ansible 플레이북을 시작하는 자동화 컨트롤러의 인스턴스입니다.
작업 목록 보기에는 작업 목록과 해당 상태가 표시되며, 완료, 실패 또는 활성(실행 중인) 작업으로 표시됩니다. 기본 뷰는 접혀 있으며(콤팩트) 작업 이름, 상태, 작업 유형, 시작 및 완료 시간을 사용합니다. 화살표
아이콘을 클릭하여 확장 및 자세한 내용을 확인할 수 있습니다. 이 목록을 다양한 기준에 따라 정렬하고 검색을 수행하여 관심 있는 작업을 필터링할 수 있습니다.
이 화면에서 다음 작업을 완료할 수 있습니다.
-
Domains 작업 표시줄에서 관련 리소스에 쉽게 액세스할 수 있도록 도메인을 지정할 수 있습니다.
아이콘을 클릭하여 기존 레이블을 편집하거나 자체적으로 설정합니다.
- 특정 작업의 세부 정보 및 표준 출력 보기
-
작업 다시 시작
- 선택한 작업 취소 또는 삭제
다시 시작 작업은 플레이북 실행 다시 시작에만 적용되며 프로젝트 또는 인벤토리 업데이트, 시스템 작업 및 워크플로우 작업에는 적용되지 않습니다. 작업이 다시 시작되면 출력 보기가 표시됩니다. 또한 모든 유형의 작업을 선택하면 해당 작업의 출력 보기로 이동하여 다양한 기준으로 작업을 필터링할 수 있습니다.
- 검색 출력 목록의 이벤트 옵션을 사용하면 오류, 호스트 실패, 호스트 재시도 및 건너뛰는 항목과 같은 관심 있는 이벤트로 필터링할 수 있습니다. 필요에 따라 이벤트를 필터에 포함할 수 있습니다. 검색 사용법에 대한 자세한 내용은 검색 섹션을 참조하십시오.
5.1. 인벤토리 동기화 작업 링크 복사링크가 클립보드에 복사되었습니다!
인벤토리 동기화가 실행되면 결과가 출력 탭에 표시됩니다.
인벤토리 동기화에 대한 자세한 내용은 구성된 인벤토리를 참조하십시오.
사용하는 경우 Ansible CLI에 동일한 정보가 표시됩니다. 이는 디버깅에 유용할 수 있습니다. 모든 플레이북 실행에 대해 ANSIBLE_DISPLAY_ARGS_TO_STDOUT 매개변수가 False 로 설정됩니다. 이 매개변수는 Ansible의 기본 동작과 일치하며, 특정 민감한 모듈 매개변수를 stdout 에 유출하지 않도록 작업 세부 정보 인터페이스의 작업 헤더에 작업 인수를 표시하지 않습니다. 이전 동작을 복원하려면 AWX_TASK_ENV 구성 설정을 통해 ANSIBLE_DISPLAY_ARGS_TO_STDOUT 을 True 로 설정합니다.
자세한 내용은 Ansible 구성 설정의 ANSIBLE_DISPLAY_ARGS_TO_STDOUT 을 참조하십시오.
작업을 출력을
하거나, 작업을 삭제할 수 있습니다.
관련 작업이 실행되는 동안 인벤토리 업데이트를 수행할 수 있습니다. 대규모 프로젝트(약 10GB)가 있는 경우 /tmp 의 디스크 공간이 문제가 될 수 있습니다.
5.1.1. 인벤토리 동기화 세부 정보 링크 복사링크가 클립보드에 복사되었습니다!
세부 정보 탭에 액세스하여 작업 실행에 대한 세부 정보를 확인합니다.
실행된 작업에 대한 다음 세부 정보를 볼 수 있습니다.
status: 다음 중 하나일 수 있습니다.
보류 중: 인벤토리 동기화가 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. 인벤토리 소스 동기화뿐만 아니라 모든 작업은 시스템에서 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. 인벤토리 소스 동기화가 준비되지 않은 이유는 다음과 같습니다.
- 현재 실행 중인 종속 항목(다음 단계를 실행하려면 모든 종속 항목을 완료해야 함)
- 구성된 위치에서 실행할 용량이 충분하지 않습니다.
- waiting: 인벤토리 동기화가 대기열에 있으며 실행 대기 중입니다.
- running: 인벤토리 동기화가 현재 진행 중입니다.
- successful: 인벤토리 동기화 작업이 성공했습니다.
- failed: 인벤토리 동기화 작업이 실패했습니다.
- inventory: 연결된 인벤토리 그룹의 이름입니다.
- Source: 클라우드 인벤토리의 유형입니다.
- 인벤토리 소스 프로젝트: 이 인벤토리 동기화 작업의 소스로 사용되는 프로젝트입니다.
- 실행 환경: 사용된 실행 환경입니다.
- execution node: 작업을 실행하는 데 사용되는 노드입니다.
- 인스턴스 그룹: 이 작업에 사용되는 인스턴스 그룹의 이름입니다(자동화 컨트롤러는 기본 인스턴스 그룹임).
이러한 항목을 선택하면 해당 작업 템플릿, 프로젝트 및 기타 오브젝트를 볼 수 있습니다.
5.2. SCM 인벤토리 작업 링크 복사링크가 클립보드에 복사되었습니다!
SCM에서 소싱된 인벤토리(예: git)가 실행되면 결과가 출력 탭에 표시됩니다. 사용하는 경우 Ansible CLI에 동일한 정보가 표시됩니다. 이는 디버깅에 유용할 수 있습니다.
탐색 메뉴를 사용하여 ,, 작업 출력
을 다운로드하거나
작업을 삭제합니다.
5.2.1. SCM 인벤토리 세부 정보 링크 복사링크가 클립보드에 복사되었습니다!
작업 실행 및 관련 프로젝트에 대한 세부 정보를 보려면 세부 정보 탭을 선택합니다.
실행된 작업에 대한 다음 세부 정보를 볼 수 있습니다.
status: 다음 중 하나일 수 있습니다.
- 보류 중: SCM 작업이 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. SCM 작업뿐만 아니라 모든 작업은 시스템에서 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. SCM 작업이 준비되지 않은 이유는 현재 실행 중인 종속 항목이 있거나(다음 단계를 실행하려면 모든 종속 항목을 완료해야 함) 구성된 위치에서 실행하는 데 필요한 용량이 충분하지 않기 때문입니다.
- waiting: SCM 작업이 대기열에 있으며 실행 대기 중입니다.
- running: SCM 작업이 현재 진행 중입니다.
- 성공: 마지막 SCM 작업에 성공했습니다.
- failed: 마지막 SCM 작업에 실패했습니다.
- 유형: SCM 작업에는 소스 제어 업데이트가 표시됩니다.
- project: 프로젝트 의 이름입니다.
- status: 연결된 프로젝트가 성공적으로 업데이트되었는지 여부를 나타냅니다.
- revision: 이 작업에서 사용된 소싱된 프로젝트의 리버전 번호를 나타냅니다.
- execution environment : 이 작업을 실행하는 데 사용되는 실행 환경을 지정합니다.
- execution node: 작업이 실행된 노드를 나타냅니다.
- 인스턴스 그룹: 지정된 경우 작업이 실행된 인스턴스 그룹을 나타냅니다.
- 작업 태그: 태그는 실행된 다양한 작업 작업을 표시합니다.
이러한 항목을 선택하여 해당 작업 템플릿, 프로젝트 및 기타 오브젝트를 확인합니다.
5.3. 플레이북 실행 작업 링크 복사링크가 클립보드에 복사되었습니다!
플레이북이 실행되면 결과가 출력 탭에 표시됩니다. 사용하는 경우 Ansible CLI에 동일한 정보가 표시됩니다. 이는 디버깅에 유용할 수 있습니다.
이벤트 요약에는 이 플레이북의 일부로 실행되는 다음 이벤트가 표시됩니다.
- 이 플레이북이 실행된 횟수가 Plays 필드에 표시됩니다.
- 이 플레이북과 관련된 작업 수는 Task 필드에 표시됩니다.
- 이 플레이북과 관련된 호스트 수는 Hosts 필드에 표시됩니다.
- 플레이북 실행을 완료하는 데 걸린 시간이 Elapsed 필드에 표시됩니다.
작업을 출력을
하거나, 작업을 삭제할 수 있습니다.
출력 보기에서 호스트 상태 표시줄 섹션 위로 마우스를 가져가면 해당 상태와 연결된 호스트 수가 표시됩니다.
플레이북 작업의 출력은 작업 템플릿 페이지의 작업 탭에서 작업을 시작한 후에도 사용할 수 있습니다. 출력에서 행 항목 작업을 클릭하여 호스트 세부 정보를 확인합니다.
5.3.1. 검색 링크 복사링크가 클립보드에 복사되었습니다!
검색을 사용하여 특정 이벤트, 호스트 이름 및 해당 상태를 조회합니다. 특정 상태의 특정 호스트만 필터링하려면 다음의 유효한 상태 중 하나를 지정합니다.
- OK
- 작업이 성공적으로 완료되었지만 호스트에서 변경 사항이 실행되지 않았음을 나타냅니다.
- changed
- 플레이북 작업이 실행되었습니다. Ansible 작업은 멱등이 되도록 작성되어야 하므로 호스트에서 아무것도 실행하지 않고도 작업을 성공적으로 종료할 수 있습니다. 이 경우 작업은 ok 를 반환하지만 변경 되지는 않습니다.
- failed
- 작업이 실패했습니다. 이 호스트에 대해 추가 플레이북 실행이 중지되었습니다.
- 연결할 수 없음
- 호스트는 네트워크에서 연결할 수 없거나 복구할 수 없는 다른 오류가 연결되어 있습니다.
- 건너뛴
- 호스트가 대상 상태에 도달하는 데 필요한 변경 사항이 없기 때문에 플레이북 작업을 건너뜁니다.
- rescued
- 여기에는 실패한 작업이 표시된 다음 rescue 섹션을 실행합니다.
- 무시됨
-
여기에는 실패한 작업이 표시되고
ignore_errors: yes가 구성된작업이 표시됩니다.
다음 예제에서는 연결할 수 없는 호스트만 있는 검색을 보여줍니다.
검색 사용법에 대한 자세한 내용은 검색 섹션을 참조하십시오.
표준 출력 뷰에는 특정 작업에서 발생하는 이벤트가 표시됩니다.
Stdout 창에서 이벤트 행을 클릭하면 Host Events 창이 별도의 창에 표시됩니다. 이 창에는 특정 이벤트의 영향을 받는 호스트가 표시됩니다.
Ansible Automation Platform의 최신 버전으로 업그레이드하려면 모든 기록 플레이북 출력 및 이벤트를 점진적으로 마이그레이션해야 합니다. 이 마이그레이션 프로세스는 점진적이며 설치가 완료된 후 백그라운드에서 자동으로 수행됩니다. 매우 많은 양의 기록 작업 출력(일반적으로 또는 수백GB의 출력)이 있는 설치는 마이그레이션이 완료될 때까지 작업 출력이 누락될 수 있습니다. 가장 최근 데이터가 출력 맨 위에 표시되고 이전 이벤트가 표시됩니다.
5.3.2. 플레이북 실행 세부 정보 링크 복사링크가 클립보드에 복사되었습니다!
세부 정보 탭에 액세스하여 작업 실행에 대한 세부 정보를 확인합니다.
실행된 작업에 대한 다음 세부 정보를 볼 수 있습니다.
status: 다음 중 하나일 수 있습니다.
- 보류 중: 플레이북 실행이 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. 플레이북 실행뿐만 아니라 모든 작업은 시스템에서 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. 플레이북 실행이 준비되지 않은 이유는 현재 실행 중인 종속 항목이 있거나(다음 단계를 실행하려면 모든 종속 항목을 완료해야 함) 구성된 위치에서 실행하는 데 필요한 용량이 충분하지 않기 때문입니다.
- waiting: 플레이북 실행이 대기열에 있으며 실행 대기 중입니다.
- running: 플레이북 실행이 현재 진행 중입니다.
- 성공: 마지막 플레이북 실행에 성공했습니다.
- failed: 마지막 플레이북 실행에 실패했습니다.
- 작업 템플릿: 이 작업이 시작된 작업 템플릿의 이름입니다.
- inventory: 이 작업을 실행하도록 선택한 인벤토리입니다.
- project: 시작된 작업과 연결된 프로젝트의 이름입니다.
- Project Status: 시작된 작업과 관련된 프로젝트의 상태입니다.
- playbook: 이 작업을 시작하는 데 사용되는 플레이북입니다.
- execution environment: 이 작업에 사용된 실행 환경의 이름입니다.
- credentials: 이 작업에 사용되는 인증 정보입니다.
- 추가 변수: 작업 템플릿을 생성할 때 전달된 모든 추가 변수가 여기에 표시됩니다.
이러한 항목 중 하나를 선택하여 해당 작업 템플릿, 프로젝트 및 기타 오브젝트를 확인합니다.
5.3.3. 플레이북 액세스 및 정보 공유 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 자동화 실행 환경 및 Linux 컨테이너를 사용하면 플레이북에서 프로젝트 디렉터리 외부의 파일을 읽지 못합니다.
기본적으로 컨테이너 내부의 ansible-playbook 프로세스에 노출되는 데이터는 현재 사용 중인 프로젝트뿐입니다.
작업 설정에서 이를 사용자 지정하고 호스트에서 컨테이너에 추가 디렉터리를 노출할 수 있습니다.
5.3.4. 격리 기능 및 변수 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 컨테이너 기술을 사용하여 작업을 서로 분리합니다. 기본적으로 현재 프로젝트만 작업 템플릿을 실행하는 컨테이너에 노출됩니다.
추가 디렉터리를 노출해야 하는 경우 플레이북 실행을 사용자 지정해야 합니다. 작업 격리를 구성하려면 변수를 설정할 수 있습니다.
기본적으로 자동화 컨트롤러는 시스템의 tmp 디렉토리(기본적으로/tmp )를 스테이징 영역으로 사용합니다. 작업 설정 페이지의 작업 실행 경로 필드 또는 /api/v2/settings /jobs 의 REST API에서 이 값을 변경할 수 있습니다.
AWX_ISOLATION_BASE_PATH = "/opt/tmp"
AWX_ISOLATION_BASE_PATH = "/opt/tmp"
구체적으로 호스트에서 플레이북이 실행되는 컨테이너로 노출되어야 하는 추가 디렉터리가 있는 경우 작업 설정 페이지의 분리된 작업 필드에 노출할 경로 또는 /api/v2/settings/jobs 의 REST API에서 지정할 수 있습니다.
AWX_ISOLATION_SHOW_PATHS = ['/list/of/', '/paths']
AWX_ISOLATION_SHOW_PATHS = ['/list/of/', '/paths']
- 특정 파일의 경로가 입력되면 해당 파일이 포함된 전체 디렉터리가 실행 환경 내에 마운트됩니다.
-
플레이북에서
AWX_ISOLATION_SHOW_PATHS에 정의된 키 또는 설정을 사용해야 하는 경우 이 파일을/var/lib/awx/.ssh에 추가합니다.
여기에서 설명하는 필드는 작업 설정 페이지에서 확인할 수 있습니다.
5.4. 자동화 컨트롤러 용량 결정 및 작업에 미치는 영향 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러 용량 시스템은 인스턴스에 사용할 수 있는 리소스 양과 실행 중인 작업의 크기( impact라고 함)를 기준으로 인스턴스에서 실행할 수 있는 작업 수를 결정합니다. 이를 결정하는 데 사용되는 알고리즘은 다음 두 가지를 기반으로 합니다.
-
시스템에서 사용할 수 있는 메모리 양(
mem_capacity) -
시스템에서 사용할 수 있는 처리 용량(
cpu_capacity)
용량은 인스턴스 그룹에도 영향을 미칩니다. 그룹은 인스턴스로 구성되므로 인스턴스를 여러 그룹에 할당할 수도 있습니다. 즉, 한 인스턴스에 미치는 영향은 다른 그룹의 전체 용량에 영향을 미칠 수 있습니다.
인스턴스 자체가 아닌 인스턴스 그룹을 다양한 수준의 작업에서 사용하도록 할당할 수 있습니다. 자세한 내용은 자동화 실행 구성 의 구성을 참조하십시오.
작업 관리자가 그래프를 준비하여 작업이 실행되는 그룹을 결정할 때 인스턴스 그룹의 용량을 아직 시작할 준비가 되지 않은 작업으로 커밋합니다.
소규모 구성에서 작업에 하나의 인스턴스만 사용할 수 있는 경우, 작업 관리자를 사용하면 인스턴스를 용량 이상으로 푸시하더라도 해당 작업을 인스턴스에서 실행할 수 있습니다. 이렇게 하면 under-provisioned 시스템의 결과로 작업이 중단되지 않습니다.
추가 리소스
- 컨테이너 그룹에 대한 자세한 내용은 자동화 실행 구성 의 인스턴스 그룹 및 컨테이너 그룹에 대한 용량 설정을 참조하십시오.
- 분할된 작업 및 용량에 미치는 영향에 대한 자세한 내용은 작업 슬라이스 실행 동작을 참조하십시오.
5.4.1. 용량 알고리즘의 리소스 결정 링크 복사링크가 클립보드에 복사되었습니다!
용량 알고리즘은 시스템이 동시에 실행할 수 있는 포크 수를 결정합니다. 이러한 알고리즘은 Ansible이 동시에 통신할 수 있는 시스템 수를 제어합니다. 자동화 컨트롤러 시스템이 실행 중인 포크 수를 늘리면 더 많은 작업을 병렬로 수행하여 작업이 더 빠르게 실행될 수 있습니다. 그러나 이로 인해 시스템의 부하가 증가하여 작업 속도가 느려질 수 있습니다.
기본 mem_capacity 에서는 시스템을 메모리 부족으로 보호하면서 처리 리소스를 오버 커밋할 수 있습니다. 대부분의 작업이 프로세서 바인딩이 아닌 경우 이 모드를 선택하면 포크 수가 최대화됩니다.
5.4.1.1. 메모리 상대 용량 링크 복사링크가 클립보드에 복사되었습니다!
mem_capacity 는 포크당 필요한 메모리 양을 기준으로 계산됩니다. 내부 구성 요소의 오버헤드를 고려하여 포크당 약 100MB입니다. Ansible 작업에서 사용할 수 있는 메모리 양을 고려할 때 용량 알고리즘은 다른 서비스의 존재를 고려하여 2GB의 메모리를 예약합니다. 이에 대한 알고리즘 공식은 다음과 같습니다.
(mem - 2048) / mem_per_fork
(mem - 2048) / mem_per_fork
다음은 예제입니다.
(4096 - 2048) / 100 == ~20
(4096 - 2048) / 100 == ~20
메모리가 4GB인 시스템은 포크 20개를 실행할 수 있습니다. mem_per_fork 값은 SYSTEM_TASK_FORKS_MEM 값을 설정하여 제어되며 기본값은 100입니다.
5.4.1.2. CPU 상대 용량 링크 복사링크가 클립보드에 복사되었습니다!
Ansible 워크로드는 종종 프로세서 바인딩입니다. 이러한 경우 동시 워크로드를 줄여 더 많은 작업을 더 빠르게 실행하고 해당 작업의 평균 완료 시간을 줄일 수 있습니다.
mem_capacity 알고리즘이 포크당 필요한 메모리 양을 조정하는 것처럼 cpu_capacity 알고리즘은 포크당 필요한 처리 리소스 양을 조정합니다. 기준 값은 코어당 포크 4개입니다. 이에 대한 알고리즘 공식은 다음과 같습니다.
cpus * fork_per_cpu
cpus * fork_per_cpu
예를 들어 4코어 시스템은 다음과 같습니다.
4 * 4 == 16
4 * 4 == 16
SYSTEM_TASK_FORKS_CPU 값을 설정하여 fork_per_cpu 값을 제어할 수 있습니다. 기본값은 4입니다.
5.4.2. 작업이 용량에 미치는 영향 링크 복사링크가 클립보드에 복사되었습니다!
용량을 선택할 때 각 작업 유형이 용량에 미치는 영향을 이해하는 것이 중요합니다.
Ansible의 기본 포크 값은 5입니다. 그러나 그 보다 적은 수의 시스템에 대해 실행되도록 자동화 컨트롤러를 설정하면 실제 동시성 값이 더 낮습니다.
자동화 컨트롤러에서 작업이 실행되면 Ansible 상위 프로세스를 보완하기 위해 선택한 포크 수가 1씩 증가합니다.
예
포크 값이 5인 5개의 시스템에 대해 플레이북을 실행하는 경우 Job Impact 관점에서의 실제 포크 값은 6입니다.
5.4.2.1. 자동화 컨트롤러에서 작업 유형이 미치는 영향 링크 복사링크가 클립보드에 복사되었습니다!
작업 및 임시 작업은 이전 모델인 포크 +1을 따릅니다. 작업 템플릿에 포크 값을 설정하면 작업 용량 값은 제공된 포크 값의 최소값과 보유한 호스트 수에 1을 더한 값입니다. +1은 상위 Ansible 프로세스를 고려해야 합니다.
인스턴스 용량에 따라 특정 인스턴스에 할당되는 작업이 결정됩니다. 작업 및 임시 명령은 해당 포크 값이 높을수록 용량을 더 많이 사용합니다.
다음을 포함한 작업 유형에는 고정된 영향을 미칩니다.
- 인벤토리 업데이트: 1
- 프로젝트 업데이트: 1
- 시스템 작업: 5
작업 템플릿에 포크 값을 설정하지 않으면 작업에서 Ansible의 기본 포크 값인 5를 사용합니다. 그러나 작업이 5개 미만의 호스트가 있는 경우 더 적은 수를 사용합니다. 일반적으로 포크 값을 시스템에서 수행할 수 있는 것보다 높게 설정하면 메모리가 부족하거나 CPU를 초과 커밋하여 문제가 발생할 수 있습니다. 사용하는 작업 템플릿 포크 값이 시스템에 적합해야 합니다. 포크를 1000개 사용하는 플레이북이 있지만 개별적으로 이렇게 많은 용량이 있는 시스템이 없는 경우, 시스템 크기가 부족하여 성능 또는 리소스 문제가 발생할 위험이 있습니다.
5.4.2.2. 올바른 용량 선택 링크 복사링크가 클립보드에 복사되었습니다!
CPU 종속 또는 메모리 바인딩된 용량 제한에서 용량을 선택하는 것은 최소 또는 최대 포크 수 사이에서 선택하는 것입니다. 이전 예에서 CPU 용량은 최대 16개의 포크를 허용하는 반면 메모리 용량은 20개를 허용합니다. 일부 시스템의 경우 이러한 차이가 클 수 있으며 이 둘 사이의 균형을 유지해야 할 수 있습니다.
인스턴스 필드 capacity_adjustment 를 사용하면 고려할 양을 선택할 수 있습니다. 이 필드는 0.0에서 1.0 사이의 값으로 표시됩니다. 값을 1.0으로 설정하면 가장 큰 값이 사용됩니다. 이전 예제에서는 메모리 용량을 사용하므로 포크 값 20개를 선택할 수 있습니다. 값을 0.0으로 설정하면 가장 작은 값이 사용됩니다. 값 0.5는 두 알고리즘 사이의 50/50 균형이며 18은 다음과 같습니다.
16 + (20 - 16) * 0.5 = 18
16 + (20 - 16) * 0.5 = 18
프로세스
용량을 보거나 편집합니다.
- 탐색 패널에서 → → 선택합니다.
- 인스턴스 그룹 목록 뷰에서 필요한 인스턴스를 선택합니다.
인스턴스 탭을 선택하고 용량 조정 슬라이더를 조정합니다.
참고슬라이더는 인스턴스 용량 알고리즘이 포크를 줄이는지(왼쪽을 넘어) 더 많은 포크를 산출하는지(오른쪽 이후)를 조정합니다.
5.5. 작업 분기 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트는 scm_branch 필드의 소스 제어에서 사용할 분기, 태그 또는 참조를 지정합니다. 이러한 값은 유형 세부 정보 필드에 지정된 값으로 표시됩니다.
작업을 생성하거나 편집할 때 분기 덮어쓰기를 허용하는 옵션이 있습니다. 이 옵션을 선택하면 프로젝트 관리자가 분기 선택을 해당 프로젝트를 사용하는 작업 템플릿에 위임할 수 있으며 프로젝트 use_role 만 있으면 됩니다.
5.5.1. 소스 트리 복사 동작 링크 복사링크가 클립보드에 복사되었습니다!
모든 작업 실행에는 자체 개인 데이터 디렉터리가 있습니다. 이 디렉터리에는 작업이 실행 중인 지정된 scm_branch 에 대한 프로젝트 소스 트리의 사본이 포함되어 있습니다. 작업에서는 프로젝트 폴더를 변경하고 실행이 계속되는 동안 이러한 변경 사항을 활용할 수 있습니다. 이 폴더는 임시이며 작업 실행이 끝날 때 제거됩니다.
clean 옵션을 선택하면 수정된 파일이 자동화 컨트롤러의 리포지토리의 로컬 사본에서 제거됩니다. 이는 git 또는 Subversion과 관련된 해당 Ansible 모듈에서 force 매개변수를 사용하여 수행됩니다.
추가 리소스
자세한 내용은 Ansible 문서의 매개 변수 섹션을 참조하십시오.
5.5.2. 프로젝트 버전 동작 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트를 업데이트하는 동안 업데이트 시 기본 분기의 버전(프로젝트의 소스 제어 분기 필드에 지정됨)이 저장됩니다. 작업에 기본이 아닌 소스 제어 분기 (커밋 해시 또는 태그가 아님)를 제공하는 경우 작업이 시작되기 직전 소스 제어 원격에서 최신 버전을 가져옵니다. 이 버전은 작업의 소스 제어 버전 필드와 해당 프로젝트 업데이트에 표시됩니다.
결과적으로 기본이 아닌 분기에는 오프라인 작업 실행이 불가능합니다. 작업이 소스 제어에서 정적 버전을 실행 중인지 확인하려면 태그 또는 커밋 해시를 사용합니다. 프로젝트 업데이트에서는 프로젝트 기본 분기만 저장하지 않고 모든 분기를 저장합니다.
Source control branch 필드가 검증되지 않았으므로 유효성 확인을 위해 프로젝트를 업데이트해야 합니다. 이 필드가 제공되거나 메시지가 표시되면 작업 템플릿의 플레이북 필드가 검증되지 않으며, 작업 템플릿을 시작하여 예상되는 플레이북이 있는지 확인해야 합니다.
5.5.3. Git 참조 사양 링크 복사링크가 클립보드에 복사되었습니다!
소스 제어 refspec 필드는 업데이트에서 원격에서 다운로드해야 하는 추가 참조를 지정합니다. 예를 들면 다음과 같습니다.
-
refs/:refs/remotes/origin/: 원격의 원격을 포함한 모든 참조를 가져옵니다. -
refs/pull/:refs/remotes/origin/pull/(GitHub별): 모든 가져오기 요청에 대한 모든 refs를 가져옵니다. -
refs/pull/62/head:refs/remotes/origin/pull/62/head: 하나의 GitHub pull request에 대한 ref를 가져옵니다.
대규모 프로젝트의 경우 첫 번째 또는 두 번째 예제를 사용할 때 성능에 미치는 영향을 고려하십시오.
Source control refspec 매개변수는 프로젝트 분기의 가용성에 영향을 미치며, 다른 방법으로는 사용할 수 없는 참조에 대한 액세스를 활성화할 수 있습니다. 위 예제를 사용하여 소스 제어 참조 사양 필드 없이는 사용할 수 없는 소스 제어 분기 에서 가져오기 요청을 제공합니다.
Ansible Git 모듈은 기본적으로 refs/heads/ 를 가져옵니다. 즉, 소스 제어 참조 사양이 비어 있으면 프로젝트의 분기, 태그 및 커밋 해시를 소스 제어 분기 로 사용할 수 있습니다. Source 제어 refspec 필드에 지정된 값은 덮어쓰기로 사용할 수 있는 소스 제어 분기 필드에 영향을 미칩니다. 프로젝트 업데이트(모든 유형)는 추가 git fetch 명령을 수행하여 원격에서 해당 참조 사양을 가져옵니다.
예
첫 번째 또는 두 번째 refspec 예제로 분기 덮어쓰기를 활성화하는 프로젝트를 설정할 수 있습니다. 소스 제어 분기 를 입력하라는 메시지가 표시되는 작업 템플릿에서 이 값을 사용합니다. 그러면 새 가져오기 요청이 생성될 때 클라이언트가 작업 템플릿을 시작하여 분기 풀 /N/head 를 제공하고 작업 템플릿은 제공된 GitHub 가져오기 요청 참조에 대해 실행할 수 있습니다.
추가 리소스
자세한 내용은 Ansible Git 모듈을 참조하십시오.
6장. 작업 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
템플릿에서 작업 템플릿과 워크플로우 작업 템플릿을 둘 다 생성할 수 있습니다.
워크플로우 작업 템플릿은 워크플로우 작업 템플릿을 참조하십시오.
작업 템플릿은 Ansible 작업을 실행하기 위한 매개 변수 정의 및 집합입니다. 작업 템플릿은 동일한 작업을 여러 번 실행하는 데 유용합니다. 또한 Ansible Playbook 콘텐츠의 재사용과 팀 간 협업을 권장합니다.
6.1. 자동화 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
자동화 템플릿 페이지에는 현재 사용 가능한 작업 템플릿 과 워크플로우 작업 템플릿이 모두 표시됩니다.
자동화 템플릿은 복잡한 IT 작업을 자동화하고 오케스트레이션하기 위한 강력한 블루프린트 역할을 합니다.
작업 템플릿 또는 워크플로우 템플릿으로 정의하든, 일상적인 작업을 표준화하고 간소화하여 다양한 환경에서 일관되게 실행할 수 있습니다.
플레이북, 인벤토리, 인증 정보 및 기타 구성 세부 정보를 지정하면 자동화 템플릿에서 수동 개입을 제거하고 오류를 줄이며 작업 완료를 가속화합니다.
또한 워크플로우 템플릿에서 여러 작업을 연결할 수 있도록 하여 여러 시스템 및 프로세스에 걸쳐 있을 수 있는 정교한 자동화 사용 사례를 지원하여 유연성을 제공합니다.
이를 통해 IT 팀은 높은 효율성과 제어를 유지하면서 자동화를 안정적으로 확장할 수 있습니다.
기본 뷰는 접혀 있으며(콤팩트) 템플릿 이름, 템플릿 유형 및 해당 템플릿을 사용하여 실행된 마지막 작업의 타임스탬프를 표시합니다. 각 항목 옆에 있는
아이콘을 클릭하여 자세한 정보를 확장하고 볼 수 있습니다. 이 목록은 이름에 따라 알파벳순으로 정렬되지만 다른 기준에 따라 정렬하거나 템플릿의 다양한 필드 및 속성으로 검색할 수 있습니다.
이 화면에서
를 시작하고
를 편집하고
을/를 복제할 수 있습니다.
템플릿 이름을 선택하여 마지막으로 실행된 시기를 포함하여 템플릿에 대한 자세한 정보를 표시합니다.
이 목록은 이름에 따라 알파벳순으로 정렬되지만 다른 기준에 따라 정렬하거나 템플릿의 다양한 필드 및 속성으로 검색할 수 있습니다.
작업 템플릿의 검색 기능은 영숫자 문자로만 제한됩니다.
워크플로우 템플릿에는 워크플로우 편집기에 액세스하기 위한 바로 가기로 워크플로우 시각화 프로그램
아이콘이 있습니다.
작업 템플릿을 사용하여 워크플로우 템플릿을 빌드할 수 있습니다. 옆에 워크플로우 시각화 도구
아이콘이 표시되는 템플릿은 워크플로우 템플릿입니다. 아이콘을 클릭하면 워크플로우를 그래픽으로 빌드할 수 있습니다. 작업 템플릿의 다양한 매개변수를 사용하면 워크플로우 수준에서 변경할 수 있는 시작 시 프롬프트 를 선택할 수 있으며 작업 템플릿 수준에서 할당된 값에는 영향을 미치지 않습니다. 자세한 내용은 워크플로우 시각화 도구 섹션을 참조하십시오.
6.2. 관심 도메인 설정 링크 복사링크가 클립보드에 복사되었습니다!
도메인 필터링을 사용하면 자동화 실행의 작업 및 템플릿 하위 섹션에 표시된 콘텐츠를 사용자 지정할 수 있습니다. 작업 및 템플릿은 설명 레이블에 연결됩니다. 레이블을 선택하면 덜 관련 리소스를 필터링하여 관심 영역과 관련된 리소스에 쉽게 액세스할 수 있습니다.
프로세스
- 탐색 패널에서 → 또는 → 선택합니다.
- 페이지 제목 아래에는 도메인 옆에 있는 주제 관련 레이블 목록이 있습니다. 라벨과 관련된 콘텐츠만 표시되도록 작업 및 작업 템플릿을 필터링할 레이블을 선택합니다. 하나 이상의 라벨을 선택할 수 있습니다.
- 선택을 지우려면 X 를 클릭합니다.
-
도메인 옵션을 사용자 지정하려면
아이콘을 선택합니다. 표시되는 모달에서 도메인 추가 를 선택하여 필터링할 새 도메인을 추가합니다.
개별 작업 템플릿에 레이블을 추가하여 관련 도메인 레이블로 필터링할 때 템플릿이 리소스로 표시되도록 할 수 있습니다. → 으로 이동하여 작업 템플릿을 선택한 다음 클릭합니다. 편집 화면에서 라벨 필드에 사용할 레이블을 입력하고 을 클릭합니다.
6.3. 작업 템플릿 생성 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 탐색 패널에서 → 선택합니다.
- 자동화 템플릿 페이지의 템플릿 생성 목록에서 작업 템플릿 생성 을 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
참고필드에 시작 시 프롬프트 확인란이 선택되어 있으면 시작 시 해당 필드의 값을 입력하라는 메시지가 표시됩니다.
대부분의 프롬프트 값은 작업 템플릿에 설정된 모든 값을 재정의합니다.
다음 표에는 예외가 설명되어 있습니다.
Expand 필드 옵션 시작 시 프롬프트 name
작업의 이름을 입력합니다.
해당 없음
description
임의의 설명을 적절하게 입력합니다(선택 사항).
해당 없음
작업 유형
작업 유형 선택:
- run: 시작 시 플레이북을 시작하여 선택한 호스트에서 Ansible 작업을 실행합니다.
- 확인: 플레이북의 "시험 실행"을 수행하고 실제로 변경하지 않고 변경 사항을 보고합니다. 검사 모드를 지원하지 않는 작업은 누락되어 잠재적인 변경 사항을 보고하지 않습니다.
작업 유형에 대한 자세한 내용은 Ansible 문서의 플레이북 섹션을 참조하십시오.
제공됨
인벤토리
로그인한 사용자에게 제공되는 인벤토리에서 이 작업 템플릿에 사용할 인벤토리를 선택합니다.
시스템 관리자는 작업 템플릿에서 특정 인벤토리를 사용할 수 있도록 사용자 또는 팀 권한을 부여해야 합니다.
제공됨
인벤토리 프롬프트는 이후 프롬프트 창에 자체 단계로 표시됩니다.
Project
로그인한 사용자에게 제공되는 프로젝트에서 이 작업 템플릿에 사용할 프로젝트를 선택합니다.
해당 없음
소스 제어 분기
이 필드는 분기 덮어쓰기를 허용하는 프로젝트를 선택한 경우에만 표시됩니다. 작업 실행에 사용할 덮어쓰기 분기를 지정합니다. 비워 두는 경우 프로젝트의 지정된 SCM 분기(또는 커밋 해시나 태그)가 사용됩니다.
자세한 내용은 작업 분기 덮어쓰기를 참조하십시오.
제공됨
Playbook
사용 가능한 플레이북에서 이 작업 템플릿으로 시작할 플레이북을 선택합니다. 이 필드는 선택한 프로젝트의 프로젝트 기본 경로에 있는 플레이북 이름으로 자동으로 채워집니다. 또는 목록에 없는 경우 해당 플레이북으로 실행하는 데 사용할 파일 이름(예: foo.yml)과 같이 플레이북 이름을 입력할 수 있습니다. 유효하지 않은 파일 이름을 입력하면 템플릿에 오류가 표시되거나 작업이 실패합니다.
해당 없음
실행 환경
이 작업을 실행하는 데 사용할 컨테이너 이미지를 선택합니다. 실행 환경을 선택하기 전에 프로젝트를 선택해야 합니다.
제공됨
실행 환경 프롬프트는 이후 프롬프트 창에 자체 단계로 표시됩니다.
인증 정보
아이콘을 선택하여 별도의 창을 엽니다.
사용 가능한 옵션에서 이 작업 템플릿에 사용할 인증 정보를 선택합니다.
목록이 긴 경우 드롭다운 메뉴 목록을 사용하여 인증 정보 유형으로 필터링합니다. 일부 인증 정보 유형은 특정 작업 템플릿에 적용되지 않기 때문에 나열되지 않습니다.
- 선택하는 경우 기본 인증 정보가 있는 작업 템플릿을 시작하고 다른 인증 정보를 제공할 때 동일한 유형인 경우 기본 인증 정보를 대체합니다. 다음은 이 메시지의 예입니다.
작업 템플릿 기본 인증 정보는 동일한 유형 중 하나로 교체해야 합니다. 계속하려면 다음 유형의 인증 정보를 선택하십시오.- 적합한 인증 정보를 더 추가할 수 있습니다.
- 인증 정보 프롬프트는 이후 프롬프트 창에 자체 단계로 표시됩니다.
레이블
-
선택적으로
dev또는test와 같은 이 작업 템플릿을 설명하는 레이블을 제공합니다. - 라벨을 사용하여 디스플레이에서 작업 템플릿 및 완료된 작업을 그룹화하고 필터링합니다.
- 레이블은 작업 템플릿에 추가할 때 생성됩니다. 레이블은 작업 템플릿에 제공되는 프로젝트를 사용하여 단일 조직과 연결됩니다. 조직 멤버는 편집 권한이 있는 경우(예: 관리자 역할) 작업 템플릿에 레이블을 생성할 수 있습니다.
- 작업 템플릿을 저장하면 확장된 보기의 작업 템플릿 개요에 레이블이 표시됩니다.
-
제거하려면 레이블 옆에 있는
를 선택합니다. 레이블이 제거되면 해당 특정 작업 또는 작업 템플릿과 더 이상 연결되지 않지만 이를 참조하는 다른 작업과 연결된 상태로 유지됩니다.
- 작업은 시작 시 작업 템플릿에서 레이블을 가져옵니다. 작업 템플릿에서 레이블을 삭제하면 작업에서도 삭제됩니다.
- 선택하는 경우 기본값을 제공해도 필요한 경우 추가 레이블을 제공하도록 시작할 때 메시지가 표시됩니다.
-
를 선택하면 기존 레이블을 삭제할 수 없으며 기존 기본 레이블이 아닌 새로 추가된 라벨만 제거됩니다.
포크
플레이북을 실행하는 동안 사용할 병렬 또는 동시 프로세스 수입니다. 값이 0이면
/etc/ansible/ansible.cfg에서 덮어쓰지 않는 한 Ansible 기본 설정인 병렬 프로세스 5개가 사용됩니다.제공됨
Limit
플레이북에서 관리하거나 영향을 주는 호스트 목록을 추가로 제한하는 호스트 패턴입니다. 콜론(:)으로 많은 패턴을 분리할 수 있습니다. 핵심 Ansible과 마찬가지로:
- A:b는 "그룹 a 또는 b"를 의미합니다.
- A:b:&c는 "a 또는 b에 있지만 c에 있어야 함"를 의미합니다.
- A:!b는 "a에 있고 b에는 분명히 없음"을 의미합니다.
자세한 내용은 Ansible 문서의 Patterns: Target hosts and groups 를 참조하십시오.
제공됨
선택하지 않은 경우 작업 템플릿은 인벤토리의 모든 노드에 대해 실행되거나 Limit 필드에 사전 정의된 노드만 실행합니다. 워크플로우의 일부로 실행하면 워크플로우 작업 템플릿 제한이 대신 사용됩니다.
상세 정보
플레이북을 실행할 때 Ansible에서 생성하는 출력 수준을 제어합니다. 일반에서 다양한 상세 정보 표시까지 중에서 또는 디버그 설정에서 세부 정보 표시를 선택합니다. 이는 세부 정보 보고서 뷰에만 표시됩니다. 상세 로깅에는 모든 명령 출력이 포함됩니다. 디버그 로깅은 매우 상세하며 특정 지원 인스턴스에서 유용할 수 있는 SSH 작업에 대한 정보를 포함합니다.
상세 정보 표시
5로 인해 작업이 실행 중일 때 자동화 컨트롤러가 크게 차단되므로 작업이 완료되었음을 보고가 지연될 수 있으며 브라우저 탭이 잠길 수 있습니다.제공됨
작업 분할
이 작업 템플릿을 실행할 슬라이스 수를 지정합니다. 각 슬라이스는 인벤토리 일부에 대해 동일한 작업을 실행합니다. 작업 슬라이스에 대한 자세한 내용은 작업 분할 을 참조하십시오.
제공됨
timeout
이를 통해 작업이 취소되기 전에 작업을 실행할 수 있는 시간(초)을 지정할 수 있습니다. 시간 초과 값을 설정하려면 다음을 고려하십시오.
- 설정에 정의된 글로벌 시간 초과가 0으로 지정되어 있으며 시간 초과가 없음을 나타냅니다.
- 작업 템플릿의 음수 시간 초과(<0)는 작업에 대한 실제 "시간 초과 없음"입니다.
- 작업 템플릿의 시간 초과는 기본적으로 작업을 글로벌 시간 초과(기본적으로 시간 초과)로 설정합니다.
- 시간 초과가 양수이면 해당 작업 템플릿의 시간 초과가 설정됩니다.
제공됨
변경 사항 표시
Ansible 작업에서 변경한 내용을 볼 수 있습니다.
제공됨
인스턴스 그룹
이 작업 템플릿 과 연결할 인스턴스 및 컨테이너 그룹을 선택합니다. 목록이 긴 경우
아이콘을 사용하여 옵션 범위를 좁힙니다. 작업 템플릿 인스턴스 그룹은 작업 스케줄링 기준에 기여하고 작업 런타임 동작 및 규칙에 대한 작업이 실행되는 위치를 제어 합니다. 시스템 관리자는 작업 템플릿에서 인스턴스 그룹을 사용할 수 있도록 사용자 또는 팀 권한을 부여해야 합니다. 컨테이너 그룹을 사용하려면 admin 권한이 필요합니다.
- 제공됨
선택하는 경우 기본 설정 순서대로 작업을 선호하는 인스턴스 그룹을 제공합니다. 첫 번째 그룹이 용량이 부족하면 해당 그룹이 작업을 실행하도록 선택한 시점에 용량이 있는 그룹을 사용할 수 있을 때까지 목록의 이후 그룹이 고려됩니다.
- 인스턴스 그룹을 입력하라는 메시지가 표시되면 일반 인스턴스 그룹 계층 구조를 입력하고 조직의 모든 및 인벤토리 인스턴스 그룹을 덮어씁니다.
- 인스턴스 그룹 프롬프트는 이후 프롬프트 창에 자체 단계로 표시됩니다.
작업 태그
를 입력하고 Create 메뉴를 선택하여 실행해야 하는 플레이북의 부분을 지정합니다. 자세한 내용 및 예제는 Ansible 문서의 태그 를 참조하십시오.
제공됨
건너뛰기 태그
를 입력하고 Create 메뉴를 선택하여 건너뛸 플레이북의 특정 작업 또는 일부를 지정합니다. 자세한 내용 및 예제는 Ansible 문서의 태그 를 참조하십시오.
제공됨
추가 변수
- 플레이북에 추가 명령행 변수를 전달합니다. 이는 런타임 시 변수 정의 의 Ansible 문서에 설명되어 있는 ansible-playbook의 "-e" 또는 "-extra-vars" 명령줄 매개변수입니다.
-
YAML 또는 JSON을 사용하여 키 또는 값 쌍을 지정합니다. 이러한 변수에는 우선순위 최대값이 있으며 다른 위치에 지정된 다른 변수를 덮어씁니다. 다음은
git_branch: production release_version: 1.5의 예입니다.
제공됨
일정에
extra_vars를 지정하려면 작업 템플릿에서 변수 시작 시 프롬프트 를 선택하거나 작업 템플릿에서 설문 조사를 활성화해야 합니다. 답변된 설문 조사 질문이extra_vars가 됩니다.필요한 경우 이 템플릿을 시작하기 위해 다음 옵션을 설정할 수 있습니다.
-
권한 에스컬레이션: 이 플레이북을 선택하면 관리자로 실행되도록 합니다.
--become옵션을ansible-playbook명령에 전달하는 것과 동일합니다. - provisioning 콜백: 이 옵션을 선택하면 호스트에서 REST API를 통해 자동화 컨트롤러로 다시 호출하고 이 작업 템플릿에서 작업을 시작할 수 있습니다. 자세한 내용은 프로비저닝 콜백을 참조하십시오.
Webhook 활성화: 이 옵션을 선택하면 작업 템플릿을 시작하는 데 사용되는 사전 정의된 SCM 시스템 웹 서비스와 연결하는 기능을 켭니다. GitHub 및 GitLab은 지원되는 SCM 시스템입니다.
- Webhook를 활성화하면 다른 필드가 표시되면서 추가 정보를 요청합니다.
- Webhook 서비스: Webhook에서 수신 대기할 서비스를 선택합니다.
- Webhook URL: 요청을 POST하는 Webhook 서비스의 URL이 자동으로 채워집니다.
- Webhook 키: Webhook 서비스에서 자동화 컨트롤러로 전송된 페이로드에 서명하는 데 사용할 공유 시크릿을 생성합니다. 자동화 컨트롤러에서 이 서비스의 Webhook를 수락하려면 Webhook 서비스의 설정에서 이를 구성해야 합니다.
Webhook 인증 정보: 필요한 경우 Webhook 서비스로 상태 업데이트를 다시 보내는 데 사용할 인증 정보로 GitHub 또는 GitLab PAT(개인 액세스 토큰)을 제공합니다.
인증 정보를 선택하려면 인증 정보가 있어야 합니다.
하나를 생성하려면 인증 정보 유형을 참조하십시오.
- Webhook 설정에 대한 자세한 내용은 Webhook 작업을 참조하십시오.
- 동시 작업: 이 옵션을 선택하면 서로 의존하지 않는 경우 대기열의 작업을 동시에 실행할 수 있습니다. 작업 슬라이스를 동시에 실행하려면 이 박스를 선택합니다. 자세한 내용은 자동화 컨트롤러 용량 결정 및 작업 영향을 참조하십시오.
- 활성화 팩트 스토리지: 이 옵션을 선택하면 자동화 컨트롤러는 실행 중인 작업과 관련된 인벤토리의 모든 호스트에 대해 수집된 팩트를 저장합니다.
- 인스턴스 그룹 폴백 방지: 이 옵션을 사용하여 인스턴스 그룹 필드에 나열된 인스턴스 그룹 만 작업을 실행할 수 있도록 허용합니다. 명확한 경우 실행 풀에서 사용 가능한 모든 인스턴스는 작업이 실행되는 위치 제어에 설명된 계층에 따라 사용됩니다.
-
권한 에스컬레이션: 이 플레이북을 선택하면 관리자로 실행되도록 합니다.
- 을 클릭합니다.
템플릿을 생성하면 작업 템플릿 페이지가 종료되지 않고 작업 템플릿 세부 정보 탭으로 이동합니다. 템플릿을 저장한 후 템플릿 시작을 클릭하여 시작할 수 있습니다. 을 클릭하여 권한, 알림, 완료된 작업 보기, 설문 조사(작업 유형이 검사가 아닌 경우)와 같은 템플릿 속성을 추가하거나 변경할 수도 있습니다. 시작하기 전에 템플릿을 먼저 저장해야 합니다. 그러지 않으면 은 비활성화된 상태로 유지됩니다.
확인
- 탐색 패널에서 → 선택합니다.
- 새로 생성된 템플릿이 템플릿 페이지에 표시되는지 확인합니다.
6.4. 템플릿에 권한 추가 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계를 사용하여 팀에 대한 권한을 추가합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 템플릿을 선택하고 Team Access 또는 User Access 탭에서 를 클릭합니다.
팀 또는 사용자를 선택하고 클릭합니다.
- 이름 옆에 있는 확인란을 클릭하여 목록에서 하나 이상의 사용자 또는 팀을 선택하여 멤버로 추가하고 클릭합니다.
- 사용자 또는 팀에 포함할 역할을 선택합니다. 전체 역할 목록을 보려면 아래로 스크롤해야 합니다. 각 리소스에는 사용 가능한 다양한 옵션이 있습니다.
- 를 클릭하여 선택한 사용자 또는 팀에 역할을 적용하고 멤버로 추가합니다.
사용자와 팀을 추가하는 창은 각 사용자 및 팀에 할당된 업데이트된 역할을 표시합니다.
특정 사용자의 역할을 제거하려면 리소스 옆에 있는
아이콘을 클릭합니다.
그러면 연결을 해제할지 묻는 확인 대화 상자가 열립니다.
6.5. 작업 템플릿 삭제 링크 복사링크가 클립보드에 복사되었습니다!
작업 템플릿을 삭제하기 전에 워크플로우 작업 템플릿에 사용되지 않는지 확인합니다.
프로세스
다음 방법을 사용하여 작업 템플릿을 삭제합니다.
-
Cryostat 아이콘을 클릭하고 템플릿 삭제
아이콘을 선택하거나,
-
세부 정보 페이지에서 필요한 작업 템플릿을 선택하고 Cryostat 아이콘을 클릭하고
를 선택합니다.
-
Cryostat 아이콘을 클릭하고 템플릿 삭제
다른 작업 항목에서 사용하는 항목을 삭제하면 삭제의 영향을 받는 항목이 나열된 메시지가 열리고 삭제를 확인하라는 메시지가 표시됩니다. 일부 화면에는 유효하지 않거나 이전에 삭제된 항목이 포함되어 있으며 실행되지 않습니다.
6.6. 알림 작업 링크 복사링크가 클립보드에 복사되었습니다!
탐색 패널에서 → → 선택합니다. 설정한 알림 통합과 해당 상태가 실행된 경우 검토할 수 있습니다.
특정 템플릿에 사용할 알림을 활성화하거나 비활성화하려면 토글을 사용합니다. 자세한 내용은 알림 활성화 및 비활성화를 참조하십시오.
알림이 설정되지 를 클릭하여 새 알림을 만듭니다. 다양한 알림 유형 및 확장 메시징을 구성하는 방법에 대한 자세한 내용은 알림 유형을 참조하십시오.
6.7. 완료된 작업 보기 링크 복사링크가 클립보드에 복사되었습니다!
Jobs (작업) 탭에는 실행된 작업 템플릿 목록이 있습니다. 각 작업 옆에 있는 확장 아이콘을 클릭하여 다음 세부 정보를 확인합니다.
- ID 및 이름
- 상태
- 작업 유형
- 실행 기간
- 시작 및 완료 시간
- 작업을 시작한 사용자 및 사용된 템플릿, 인벤토리, 프로젝트, 인증 정보.
이러한 기준 중 하나를 사용하여 완료된 작업 목록을 필터링할 수 있습니다.
이 목록에 표시되는 분할된 작업에는 실행된 분할된 작업 수로 적절하게 레이블이 지정됩니다.
6.8. 작업 템플릿 예약 링크 복사링크가 클립보드에 복사되었습니다!
스케줄 탭에서 특정 작업 템플릿의 스케줄에 액세스합니다.
프로세스
작업 템플릿을 예약하려면 작업 템플릿에서 일정 탭을 선택하고 적절한 방법을 선택합니다.
- 스케줄이 이미 설정되어 있는 경우 스케줄 기본 설정을 검토, 편집, 활성화 또는 비활성화합니다.
- 일정이 설정되지 않은 경우 자세한 내용은 일정을 참조하십시오.
인증 정보 시작 시 프롬프트 를 선택하고 작업 템플릿에 대한 스케줄링 정보를 생성하거나 편집하면 스케줄 양식에 프롬프트 옵션이 표시됩니다.
프롬프트 대화 상자에서 기본 머신 인증 정보를 저장하기 전에 다른 머신 인증 정보로 교체하지 않고 제거할 수 없습니다.
스케줄에 extra_vars 를 설정하려면 작업 템플릿에서 변수 시작 시 프롬프트 를 선택하거나 작업 템플릿에서 설문 조사를 구성하고 활성화해야 합니다.
답변된 설문 조사 질문이 extra_vars 가 됩니다.
6.9. 작업 템플릿의 설문 조사 링크 복사링크가 클립보드에 복사되었습니다!
실행 또는 확인 작업 유형은 작업 템플릿 생성 또는 편집 화면에서 설문 조사를 설정하는 방법을 제공합니다. 설문 조사에서는 추가 변수에 대한 프롬프트와 유사하지만 사용자에게 친숙한 질문 및 답변 방식으로 플레이북에 대한 추가 변수 를 설정합니다. 또한 설문 조사에서는 사용자 입력을 검증할 수 있습니다. 설문조사 탭을 선택하여 설문 조사를 생성합니다.
예
여러 상황에서 설문 조사를 사용할 수 있습니다. 예를 들어, 작업은 개발자에게 Ansible에 대한 사전 지식 없이 실행할 수 있는 "단계로 푸시" 버튼을 제공하려고 합니다. 이 작업이 시작되면 "릴리스할 태그"와 같은 질문에 대한 답변을 요청할 수 있습니다.
다중 선택 질문을 포함하여 다양한 유형의 질문을 할 수 있습니다.
6.9.1. 설문 조사 생성 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 탐색 패널에서 → 선택합니다.
- 설문 조사를 생성할 작업 템플릿을 선택합니다.
- Survey 탭에서 설문 조사 을 클릭합니다.
설문 조사는 다양한 질문으로 구성될 수 있습니다. 각 질문에 다음 정보를 입력합니다.
- 질문: 사용자에게 묻는 질문입니다.
- 선택 사항: 사용자에게 묻는 내용에 대한 설명입니다.
- 응답 변수 이름: 사용자의 응답을 저장할 Ansible 변수 이름입니다. 플레이북에서 사용할 변수이며, 변수 이름에는 공백을 포함할 수 없습니다.
답변 유형: 다음 질문 유형 중에서 선택합니다.
- text: 한 줄의 텍스트입니다. 이 답변에는 최소 및 최대 길이(문자 수)를 설정할 수 있습니다.
- textarea: 여러 줄 텍스트 필드입니다. 이 답변에는 최소 및 최대 길이(문자 수)를 설정할 수 있습니다.
- 암호: 응답은 실제 암호와 마찬가지로 민감한 정보로 처리됩니다. 이 답변에는 최소 및 최대 길이(문자 수)를 설정할 수 있습니다.
- 다중 선택(단일 선택) : 한 번에 하나만 선택할 수 있는 옵션 목록입니다. 다중 선택 옵션 필드에 한 줄에 하나씩 옵션을 입력합니다.
- 다중 선택(여러 선택): 한 번에 여러 개의 옵션을 선택할 수 있는 옵션 목록입니다. 다중 선택 옵션 필드에 한 줄에 하나씩 옵션을 입력합니다.
- 정수 입니다. 이 답변에는 최소 및 최대 길이(문자 수)를 설정할 수 있습니다.
- float: 10진수입니다. 이 답변에는 최소 및 최대 길이(문자 수)를 설정할 수 있습니다.
- 필수: 이 질문에 대한 응답이 사용자에게 필요한지 여부입니다.
- 최소 길이 및 최대 길이: 응답에서 특정 길이가 필요한지 여부를 지정합니다.
- 기본 응답: 질문에 대한 기본 응답입니다. 이 값은 인터페이스에 미리 입력되며 사용자가 응답을 제공하지 않은 경우 사용됩니다.
질문 정보를 입력했으면 을 클릭하여 질문을 추가합니다.
설문 조사 질문이 설문 조사 목록에 표시됩니다. 모든 질문에 대해
를 클릭하여 편집할 수 있습니다.
각 질문 옆에 있는 상자를 선택하고 를 클릭하여 질문을 삭제하거나 메뉴 표시줄의 토글 옵션을 사용하여 설문 조사 프롬프트를 활성화하거나 비활성화합니다.
설문조사 질문이 두 개 이상 있는 경우 클릭하여 그리드 아이콘을 클릭하고 드래그하여 질문 순서를 다시 정렬합니다.
- 더 많은 질문을 추가하려면 를 클릭합니다.
6.9.2. 선택적 설문 조사 질문 링크 복사링크가 클립보드에 복사되었습니다!
설문 조사 질문의 필수 설정에 따라 사용자가 질문에 응답해야 하는지 여부가 결정됩니다.
선택적 설문 조사 변수는 extra_vars 의 플레이북에 전달할 수도 있습니다.
-
텍스트가 아닌 변수(입력 유형)가 선택 사항으로 표시되고 채워지지 않으면 설문 조사
extra_var이 플레이북에 전달되지 않습니다. -
텍스트 입력 또는 텍스트 영역 입력이 선택 사항으로 표시되고 채워지지 않고 최소
길이 > 0인 경우 설문 조사extra_var이 플레이북에 전달되지 않습니다. -
텍스트 입력 또는 텍스트 영역 입력이 선택 사항으로 표시되고 채워지지 않고 최소
길이 === 0인 경우, 값이 빈 문자열("")로 설정된 설문 조사extra_var가 플레이북에 전달됩니다.
6.10. 작업 템플릿 시작 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러의 이점은 푸시 버튼을 통한 Ansible 플레이북 배포입니다. 일반적으로 명령줄에서 Ansible 플레이북에 전달하는 모든 매개 변수를 저장하도록 템플릿을 구성할 수 있습니다. 플레이북 외에도 템플릿은 인벤토리, 인증 정보, 추가 변수, 명령줄에서 지정할 수 있는 모든 옵션 및 설정을 전달합니다.
더 쉬운 배포는 플레이북을 매번 동일한 방식으로 실행하여 일관성을 높이며 책임을 위임할 수 있도록 합니다.
프로세스
다음 방법 중 하나를 사용하여 작업 템플릿을 시작합니다.
-
탐색 패널에서 → 카드에서 템플릿 시작
을 클릭합니다.
- 시작하려는 작업 템플릿의 작업 템플릿 세부 정보 탭에서 클릭합니다.
-
탐색 패널에서 → 카드에서 템플릿 시작
작업을 실행하려면 추가 정보가 필요할 수 있습니다. 시작 시 다음 데이터를 요청할 수 있습니다.
- 설정된 인증 정보
- 모든 매개변수에 대해 시작 시 프롬프트 가 선택됩니다.
- Ask로 설정된 암호
- 설문조사(작업 템플릿에 대해 구성된 경우)
- 추가 변수(작업 템플릿에서 요청하는 경우)
작업에 사용자 제공 값이 있는 경우 다시 시작 시 해당 값이 적용됩니다. 사용자가 값을 지정하지 않은 경우 작업 템플릿의 기본값이 작업에 사용됩니다. 작업은 현상태 그대로 다시 시작되지 않습니다. 사용자 프롬프트가 작업 템플릿에 다시 적용된 상태로 다시 시작됩니다.
한 탭에 값을 지정하면 이전 탭으로 돌아가 다음 탭을 진행하면 나머지 탭에서 값을 다시 제공해야 합니다. 프롬프트가 표시되는 순서대로 탭을 완료했는지 확인합니다.
자동화 컨트롤러가 시작될 때 작업 탭에서 이 작업의 작업 상태 페이지로 웹 브라우저를 자동으로 리디렉션합니다.
목록 뷰에서 최근 작업을 다시 시작하여 모든 호스트에서 다시 실행하거나 지정된 인벤토리의 실패한 호스트에서만 다시 실행할 수 있습니다. 자세한 내용은 자동화 컨트롤러의 작업 섹션을 참조하십시오.
슬라이스 작업이 실행 중인 경우 작업 목록에 워크플로우 및 작업 슬라이스가 표시되고 세부 정보를 개별적으로 볼 수 있는 링크가 표시됩니다.
API에서 새로 추가된 끝점을 사용하여 대규모로 작업을 시작할 수 있습니다. /api/v2/bulk/job_launch. 이 끝점은 JSON을 수락하고 시작할 통합 작업 템플릿(예: 작업 템플릿 및 프로젝트 업데이트) 목록을 지정할 수 있습니다. 사용자에게 모든 작업을 시작할 수 있는 적절한 권한이 있어야 합니다. 모든 작업이 시작되지 않으면 작업을 완료할 수 없는 이유를 나타내는 오류가 반환됩니다. OPTIONS 요청을 사용하여 관련 스키마를 반환합니다. 자세한 내용은 자동화 실행 API 개요의 자동화 실행 API 개요/api_ref.html#/Bulk[Bulk endpoint] of the Reference section of the Automation execution API 개요를 참조하십시오.
6.10.1. 작업 템플릿의 변수 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 작업 템플릿 및 설문 조사에 설정된 추가 변수와 함께 다음 변수를 작업 환경에 자동으로 추가합니다.
-
awx_*변수는 시스템에서 정의하며 재정의할 수 없습니다. -
awx_job_template_name과 같은 작업 컨텍스트에 대한 변수는extra_vars로 설정된 경우 영향을 받지 않습니다.
-
awx_job_id: 이 작업 실행에 대한 작업 ID입니다. awx_job_launch_type: 작업이 시작된 방법을 나타내는 설명- Manual: 사용자가 작업을 수동으로 시작했습니다.
- 다시 시작: 작업이 다시 시작을 통해 시작되었습니다.
- 콜백: 작업이 호스트 콜백을 통해 시작되었습니다.
- Scheduled: 작업이 일정에서 시작되었습니다.
- 종속성: 작업이 다른 작업의 종속성으로 시작되었습니다.
- 워크플로: 작업이 워크플로우 작업에서 시작되었습니다.
- sync: 작업이 프로젝트 동기화에서 시작되었습니다.
- SCM : 작업이 인벤토리 SCM 동기화로 생성되었습니다.
-
awx_job_template_id: 이 작업 실행에서 사용하는 작업 템플릿 ID입니다. -
awx_job_template_name: 이 작업에서 사용하는 작업 템플릿 이름입니다. -
awx_execution_node: 이 작업을 시작한 실행 노드 이름입니다. -
awx_project_revision: 이 특정 작업에서 사용하는 소스 트리의 버전 식별자입니다(작업 필드 scm_revision과 동일합니다). -
awx_project_scm_branch: 작업 템플릿이 사용하는 프로젝트에 대해 구성된 기본 프로젝트 SCM 분기입니다. -
awx_job_scm_branch: 작업에서 SCM 분기를 덮어쓰는 경우 이 값이 여기에 표시됩니다. -
awx_user_email: 이 작업을 시작한 컨트롤러 사용자의 사용자 이메일입니다. 콜백 또는 스케줄링된 작업에는 제공되지 않습니다. -
awx_user_first_name: 이 작업을 시작한 자동화 컨트롤러 사용자의 사용자 이름입니다. 콜백 또는 스케줄링된 작업에는 제공되지 않습니다. -
awx_user_id: 이 작업을 시작한 자동화 컨트롤러 사용자의 사용자 ID입니다. 콜백 또는 스케줄링된 작업에는 제공되지 않습니다. -
awx_user_last_name: 이 작업을 시작한 자동화 컨트롤러 사용자의 마지막 이름입니다. 콜백 또는 스케줄링된 작업에는 제공되지 않습니다. -
awx_user_name: 이 작업을 시작한 자동화 컨트롤러 사용자의 사용자 이름입니다. 콜백 또는 스케줄링된 작업에는 제공되지 않습니다. -
awx_schedule_id: 해당하는 경우 이 작업을 시작한 스케줄의 ID입니다. -
awx_schedule_name: 해당하는 경우 이 작업을 시작한 스케줄의 이름입니다. -
awx_workflow_job_id: 해당하는 경우 이 작업을 시작한 워크플로우 작업의 ID입니다. -
awx_workflow_job_name: 해당하는 경우 이 작업을 시작한 워크플로우 작업의 이름입니다. 워크플로우 작업 템플릿과도 동일합니다. -
awx_inventory_id: 해당하는 경우 이 작업에서 사용하는 인벤토리의 ID입니다. -
awx_inventory_name: 해당하는 경우 이 작업에서 사용하는 인벤토리의 이름입니다.
호환성을 위해 모든 변수에 "awx" 접두사(예: awx_job_id )도 제공됩니다.
6.11. 작업 템플릿 중복 링크 복사링크가 클립보드에 복사되었습니다!
작업 템플릿을 복제하면 연결된 일정, 알림 또는 권한이 중복되지 않습니다. 스케줄 및 알림은 작업 템플릿의 중복을 생성하는 사용자 또는 관리자가 다시 생성해야 합니다. 작업 템플릿을 분할하는 사용자에게는 관리자 권한이 부여되지만 작업 템플릿에는 권한이 할당(중복됨)되지 않습니다.
프로세스
- 탐색 패널에서 → 선택합니다.
복제하려는 템플릿과 연결된 { CryostatActionIcon} 아이콘을 클릭하고
템플릿 중복 아이콘을 선택합니다.
- 복제한 템플릿의 이름과 타임스탬프가 있는 새 템플릿이 템플릿 목록에 표시됩니다.
- 새 템플릿을 열고 클릭합니다.
- Name 필드의 내용을 새 이름으로 바꾸고 다른 필드의 항목을 제공하거나 변경하여 이 페이지를 완료합니다.
- 클릭합니다.
6.12. 사실 캐싱 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 Ansible 팩트 캐시 플러그인을 통해 호스트별로 사실을 저장하고 검색할 수 있습니다. 이 동작은 작업별 템플릿을 기반으로 구성할 수 있습니다. 팩트 캐싱은 기본적으로 꺼져 있지만 실행 중인 작업과 관련된 인벤토리의 모든 호스트에 대한 사실 요청을 처리하기 위해 활성화할 수 있습니다. 이를 통해 호스트 팩트의 전체 인벤토리에 계속 액세스하는 동안 --limit 와 함께 작업 템플릿을 사용할 수 있습니다. 플러그인이 탐색 패널에서 호스트별로 강제 적용하는 글로벌 시간 초과 설정을 지정하고(초) 탐색 패널에서 → → 을 선택하고 Per-Host Ansible Fact Cache Timeout 필드를 편집할 수 있습니다.
팩트 캐시를 사용하는 작업(use_fact_cache=True)을 시작한 후 각 호스트의 ansible_facts 는 모두 컨트롤러의 작업 인벤토리에 저장됩니다.
자동화 컨트롤러가 포함된 Ansible 사실 캐시 플러그인은 팩트 캐시가 활성화된 작업에서 활성화됩니다(use_fact_cache=True).
팩트 캐시가 활성화된 작업(use_fact_cache=True)이 실행된 경우 자동화 컨트롤러는 인벤토리의 호스트에 대한 모든 레코드를 복원합니다. 호스트당 현재 저장된 팩트보다 최신 업데이트 시간이 있는 모든 레코드는 데이터베이스에서 업데이트됩니다.
신규 및 변경된 사실은 자동화 컨트롤러의 로깅 기능을 통해 기록됩니다. 특히 system_tracking 네임스페이스 또는 로거에 대해 다음을 수행합니다. 로깅 페이로드에는 다음 필드가 포함됩니다.
-
host_name -
inventory_id -
ansible_facts
Ansible 사실은 자동화 컨트롤러 인벤토리 inventory, inventory_id 의 host_name 에 대한 모든 Ansible 사실로 이루어진 사전입니다.
호스트 이름에 슬래시(/)가 포함된 경우 해당 호스트에서 팩트 캐시가 작동하지 않습니다. 인벤토리에 100개의 호스트가 있고 하나의 호스트에 / 이름이 있는 경우 나머지 99개의 호스트는 여전히 팩트를 수집합니다.
6.13. 사실 캐싱의 이점 링크 복사링크가 클립보드에 복사되었습니다!
사실 캐싱은 팩트 수집을 실행하는 데 걸리는 시간을 절약할 수 있습니다. 작업에 1,000개의 호스트 및 포크에 대해 실행되는 플레이북이 있는 경우 해당 호스트 전체에서 팩트를 수집하는 데 10분을 할애할 수 있습니다. 그러나 작업을 정기적으로 실행하는 경우 첫 번째 실행에서는 이러한 팩트를 캐시하고 다음 실행에서는 데이터베이스에서 해당 작업을 가져옵니다. 이렇게 하면 대규모 인벤토리에 대한 작업 런타임이 줄어듭니다.
팩트 캐싱을 적용하려면 ansible.cfg 파일을 변경하지 마십시오. 사용자 정의 사실 캐싱은 컨트롤러의 사실 캐싱 기능과 충돌할 수 있습니다. 자동화 컨트롤러가 포함된 사실 캐싱 모듈을 사용해야 합니다.
작업 템플릿을 생성하거나 편집할 때 사실 스토리지 활성화 옵션을 선택하여 작업에 캐시된 팩트를 사용하도록 선택할 수 있습니다.
팩트를 지우려면 Ansible clear_facts 메타 작업을 실행합니다. 다음은 Ansible clear_facts 메타 작업을 사용하는 플레이북의 예입니다.
- hosts: all
gather_facts: false
tasks:
- name: Clear gathered facts from all currently targeted hosts
meta: clear_facts
- hosts: all
gather_facts: false
tasks:
- name: Clear gathered facts from all currently targeted hosts
meta: clear_facts
다음에서 팩트 캐싱의 API 끝점을 찾을 수 있습니다.
http://<controller server name>/api/v2/hosts/x/ansible_facts
6.14. 클라우드 인벤토리와 함께 클라우드 인증 정보 사용 링크 복사링크가 클립보드에 복사되었습니다!
클라우드 인증 정보는 클라우드 인벤토리를 동기화할 때 사용할 수 있습니다. 작업 템플릿과 연관되고 플레이북에서 사용할 런타임 환경에 포함할 수도 있습니다. 지원되는 클라우드 인증 정보는 다음과 같습니다.
6.15. OpenStack 링크 복사링크가 클립보드에 복사되었습니다!
다음 샘플 플레이북은 nova_compute Ansible OpenStack 클라우드 모듈을 호출하고 인증 정보가 필요합니다.
-
auth_url -
사용자 이름 -
암호 -
프로젝트 이름
이러한 필드는 환경 변수 OS_CLIENT_CONFIG_FILE 을 통해 플레이북에 사용할 수 있습니다. 이 변수는 클라우드 인증 정보의 콘텐츠를 기반으로 컨트롤러에서 작성한 YAML 파일을 가리킵니다. 다음 샘플 플레이북은 YAML 파일을 Ansible 변수 공간에 로드합니다.
- OS_CLIENT_CONFIG_FILE 예:
- 플레이북 예:
6.15.1. Amazon Web Services 링크 복사링크가 클립보드에 복사되었습니다!
AWS(Amazon Web Services) 클라우드 인증 정보는 플레이북 실행 중에 다음 환경 변수로 노출됩니다(작업 템플릿에서 설정에 필요한 클라우드 인증 정보 선택).
-
AWS_ACCESS_KEY_ID -
AWS-SECRET_ACCESS_KEY
각 AWS 모듈은 aws_access_key_id 또는 aws_secret_access_key 모듈 옵션을 설정하지 않고도 컨트롤러를 통해 실행할 때 이러한 인증 정보를 암시적으로 사용합니다.
6.15.2. Google 링크 복사링크가 클립보드에 복사되었습니다!
Google 클라우드 인증 정보는 플레이북 실행 중에 다음 환경 변수로 노출됩니다(작업 템플릿에서 설정에 필요한 클라우드 인증 정보 선택).
-
GCE_EMAIL -
GCE_PROJECT -
GCE_CREDENTIALS_FILE_PATH
각 Google 모듈은 service_account_email,project_id 또는 pem_file 모듈 옵션을 설정하지 않고도 컨트롤러를 통해 실행할 때 이러한 인증 정보를 암시적으로 사용합니다.
6.15.3. Azure 링크 복사링크가 클립보드에 복사되었습니다!
Azure 클라우드 인증 정보는 플레이북 실행 중에 다음 환경 변수로 노출됩니다(작업 템플릿에서 설정에 필요한 클라우드 인증 정보 선택).
-
AZURE_SUBSCRIPTION_ID -
AZURE_CERT_PATH
각 Azure 모듈은 subscription_id 또는 management_cert_path 모듈 옵션을 설정하지 않고도 컨트롤러를 통해 실행할 때 이러한 인증 정보를 암시적으로 사용합니다.
6.15.4. VMware 링크 복사링크가 클립보드에 복사되었습니다!
VMware 클라우드 인증 정보는 플레이북 실행 중에 다음 환경 변수로 노출됩니다(작업 템플릿에서 설정에 필요한 클라우드 인증 정보 선택).
-
VMWARE_USER -
VMWARE_PASSWORD -
VMWARE_HOST
다음 샘플 플레이북은 이러한 인증 정보를 사용하는 방법을 보여줍니다.
6.16. 프로비저닝 콜백 링크 복사링크가 클립보드에 복사되었습니다!
프로비저닝 콜백은 사용자가 자동화 컨트롤러 콘솔에서 호스트를 관리하는 작업을 시작할 때까지 기다리는 대신 호스트에서 자체적으로 플레이북 실행을 시작할 수 있는 자동화 컨트롤러의 기능입니다.
프로비저닝 콜백은 호출 호스트에서 플레이북을 실행하는 데만 사용되며 클라우드 버스팅을 위한 것입니다. 클라우드 버스팅은 컴퓨팅에 수요가 급증할 때 프라이빗 클라우드가 퍼블릭 클라우드에 "버그"를 통해 퍼블릭 클라우드 리소스에 액세스할 수 있는 클라우드 컴퓨팅 구성입니다.
예
다른 호스트에 대해 작업을 실행하는 것이 아니라 권한 부여 키 전송과 같은 구성을 위해 클라이언트가 서버 간 통신이 필요한 새 인스턴스입니다. 이를 통해 자동으로 다음을 구성합니다.
- 다른 시스템에서 프로비저닝한 후(예: AWS 자동 확장 또는 kickstart 또는 preseed와 같은 OS 프로비저닝 시스템)
- 자동화 컨트롤러 API를 직접 호출하지 않고 프로그래밍 방식으로 작업을 시작합니다.
시작된 작업 템플릿은 프로비저닝을 요청하는 호스트에 대해서만 실행됩니다.
이는 종종 firstboot 유형 스크립트 또는 cron 을 사용하여 액세스할 수 있습니다.
6.16.1. 프로비저닝 콜백 활성화 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
콜백을 활성화하려면 작업 템플릿에서 프로비저닝 콜백 옵션을 선택합니다. 그러면 작업 템플릿에 대한 프로비저닝 콜백 세부 정보가 표시됩니다.
참고동적 인벤토리에 자동화 컨트롤러의 프로비저닝 콜백 기능을 사용하려면 작업 템플릿에 사용된 인벤토리 그룹에 대해 Update on Launch 를 설정합니다.
URL이 있는 외부 호스트에서 구성을 요청할 수 없도록 콜백에도 호스트 구성 키가 필요합니다. Host config 키의 사용자 지정 값을 지정합니다. 호스트 키를 여러 호스트에서 다시 사용하여 이 작업 템플릿을 여러 호스트에 적용할 수 있습니다. 구성을 요청할 수 있는 호스트를 제어하려면 언제든지 키를 변경할 수 있습니다.
6.16.2. REST를 수동으로 콜백에 사용 링크 복사링크가 클립보드에 복사되었습니다!
REST를 사용하여 수동으로 콜백하려면 다음을 수행합니다.
프로세스
UI의 콜백 URL 검사: https://<CONTROLLER_SERVER_NAME>/api/v2/job_templates/7/callback/
- 샘플 URL의 "7"은 자동화 컨트롤러의 작업 템플릿 ID입니다.
호스트의 요청이 POST인지 확인합니다. 다음은
curl을 사용하는 예입니다(모두 한 줄에 있음).curl -k -i -H 'Content-Type:application/json' -XPOST -d '{"host_config_key": "redhat"}' \ https://<CONTROLLER_SERVER_NAME>/api/v2/job_templates/7/callback/curl -k -i -H 'Content-Type:application/json' -XPOST -d '{"host_config_key": "redhat"}' \ https://<CONTROLLER_SERVER_NAME>/api/v2/job_templates/7/callback/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 콜백이 성공하려면 요청하는 호스트가 인벤토리에 정의되어 있는지 확인합니다.
검증
요청에 성공하면 작업 탭에 항목이 생성되고 결과 및 기록을 볼 수 있습니다. REST를 사용하여 콜백에 액세스할 수 있지만 권장되는 콜백 사용 방법은 자동화 컨트롤러를 포함하는 예제 스크립트 중 하나를 사용하는 것입니다.
-
/usr/share/awx/request_tower_configuration.sh(Linux/UNIX) -
/usr/share/awx/request_tower_configuration.ps1(Windows)
사용법은 다음과 같이 -h 플래그를 전달하여 파일의 소스 코드에 설명되어 있습니다.
이 스크립트는 명령을 재시도할 수 있으므로 간단한 curl 요청보다 더 강력한 콜백을 사용하는 방법입니다. 스크립트는 최대 10분 동안 분당 한 번 재시도합니다.
다음은 예제 스크립트입니다. 200이 아닌 오류 코드가 다시 시도해야 하는 일시적인 오류가 아닐 수 있으므로 오류 시나리오를 감지할 때 더 동적인 동작이 필요한 경우 이 스크립트를 편집합니다.
자동화 컨트롤러에서 동적 인벤토리와 함께 콜백을 사용할 수 있습니다. 예를 들어 지원되는 클라우드 공급자 중 하나에서 클라우드 인벤토리를 가져오는 경우입니다. 이러한 경우 Update On Launch 와 함께 인벤토리 소스에 대한 인벤토리 캐시 시간 초과를 구성하여 클라우드의 API 끝점이 손상되지 않도록 해야 합니다. request_tower_configuration.sh 스크립트는 최대 10분 동안 분당 한 번씩 폴링하므로 인벤토리에 대해 권장되는 캐시 무효화 시간(인벤토리 소스 자체에 구성됨)은 1분 또는 2분입니다.
cron 작업에서 request_tower_configuration.sh 스크립트를 실행하는 것은 권장되지 않지만 30분마다 제안된 cron 간격을 사용하는 것이 좋습니다. 반복된 구성은 자동화 컨트롤러를 예약하여 처리할 수 있으므로 대부분의 사용자가 콜백을 주로 사용하면 온라인 상태가 될 때 최신 구성으로 부트 스트랩되는 기본 이미지를 활성화할 수 있습니다. 처음 부팅할 때 실행하는 것이 가장 좋습니다. 첫 번째 부팅 스크립트는 일반적으로 자체 삭제되는 init 스크립트이므로 request_tower_configuration.sh 스크립트 복사본을 호출하는 init 스크립트를 설정하고 이를 자동 확장 이미지로 설정합니다.
문제 해결
자동화 컨트롤러가 정의된 인벤토리 중 하나에서 이름 또는 IP 주소로 호스트를 찾지 못하면 요청이 거부됩니다. 이러한 방식으로 작업 템플릿을 실행할 때 자체적으로 플레이북 실행을 시작하는 호스트가 인벤토리에 있는지 확인합니다. 인벤토리에 호스트가 없으면 작업 템플릿이 No Hosts Matched 유형 오류 메시지와 함께 실패합니다.
호스트가 인벤토리에 없고 인벤토리 그룹에 대해 Update on Launch 가 확인되면 자동화 컨트롤러는 콜백을 실행하기 전에 클라우드 기반 인벤토리 소스 업데이트를 시도합니다.
6.16.3. 프로비저닝 콜백에 추가 변수 전달 링크 복사링크가 클립보드에 복사되었습니다!
일반 작업 템플릿에서 가능한 것과 동일한 방식으로 프로비저닝 콜백에서 extra_vars 를 전달할 수 있습니다. extra_vars 를 전달하려면 전송된 데이터는 콘텐츠 유형으로 POST를 애플리케이션 또는 JSON으로 사용하는 본문의 일부여야 합니다.
프로세스
다음 방법 중 하나를 사용하여 추가 변수를 전달합니다.
전달할 고유한
extra_vars를 추가할 때 다음 JSON 형식을 예로 사용합니다.'{"extra_vars": {"variable1":"value1","variable2":"value2",...}}''{"extra_vars": {"variable1":"value1","variable2":"value2",...}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl을 사용하여 작업 템플릿 호출에 추가 변수를 전달합니다.root@localhost:~$ curl -f -H 'Content-Type: application/json' -XPOST \ -d '{"host_config_key": "redhat", "extra_vars": "{\"foo\": \"bar\"}"}' \ https://<CONTROLLER_SERVER_NAME>/api/v2/job_templates/7/callbackroot@localhost:~$ curl -f -H 'Content-Type: application/json' -XPOST \ -d '{"host_config_key": "redhat", "extra_vars": "{\"foo\": \"bar\"}"}' \ https://<CONTROLLER_SERVER_NAME>/api/v2/job_templates/7/callbackCopy to Clipboard Copied! Toggle word wrap Toggle overflow
자세한 내용은 자동화 실행 구성에서 Curl을 사용하여 작업 시작을 참조하십시오.
6.17. 추가 변수 링크 복사링크가 클립보드에 복사되었습니다!
설문 조사 변수를 전달하면 자동화 컨트롤러 내에서 추가 변수(extra_vars)로 전달됩니다. 그러나 설문 조사와 마찬가지로 작업 템플릿에 추가 변수를 전달하면 인벤토리 및 프로젝트에서 전달되는 다른 변수를 덮어쓸 수 있습니다.
기본적으로 extra_vars 는 작업 템플릿의 추가 변수 섹션에 지정하지 않는 한 !safe 로 표시됩니다. 이는 작업 템플릿을 추가하거나 편집할 수 있는 충분한 권한이 있는 사용자만 추가할 수 있기 때문에 신뢰할 수 있습니다. 예를 들어 Jinja 대괄호는 문자열로 처리되므로 중첩된 변수가 프롬프트로 입력되면 확장되지 않습니다. 안전하지 않은 변수에 대한 자세한 내용은 안전하지 않은 변수 또는 원시 문자열을 참조하십시오.
작업 시작 API에 전달된 extra_vars 는 다음 중 하나에 해당하는 경우에만 적용됩니다.
- 활성화된 설문 조사의 변수에 해당합니다.
-
ask_variables_on_launch가 True 로 설정됩니다.
예
debug = true 의 인벤토리에 대해 정의된 변수가 있습니다. 이 변수 debug = true 는 작업 템플릿 설문 조사에서 재정의할 수 있습니다.
전달한 변수를 재정의하지 않도록 하려면 설문 조사에 해당 변수를 재정의하여 포함해야 합니다. 인벤토리, 그룹, 호스트 수준에서 추가 변수를 정의할 수 있습니다.
ALLOW_JINJA_IN_EXTRA_VARS 매개변수를 지정하는 경우 자동화 실행 구성 의 ALLOW_JINJA_IN_EXTRA_VARS 변수 섹션을 참조하십시오.
작업 템플릿 추가 변수 사전은 설문 조사 변수와 병합됩니다.
다음은 YAML 및 JSON 형식의 extra_vars 의 몇 가지 간단한 예입니다.
- YAML 형식의 구성:
launch_to_orbit: true satellites: - sputnik - explorer - satcom
launch_to_orbit: true
satellites:
- sputnik
- explorer
- satcom
- JSON 형식의 구성:
{
"launch_to_orbit": true,
"satellites": ["sputnik", "explorer", "satcom"]
}
{
"launch_to_orbit": true,
"satellites": ["sputnik", "explorer", "satcom"]
}
다음 표에서는 Ansible의 변수 우선순위와 비교하여 자동화 컨트롤러에서 변수 우선순위의 동작(계층 구조)을 설명합니다.
| Ansible | 자동화 컨트롤러 |
|---|---|
| 역할 기본값 | 역할 기본값 |
| 동적 인벤토리 변수 | 동적 인벤토리 변수 |
| 인벤토리 변수 | 자동화 컨트롤러 인벤토리 변수 |
|
인벤토리 | 자동화 컨트롤러 그룹 변수 |
|
인벤토리 | 자동화 컨트롤러 호스트 변수 |
|
플레이북 |
플레이북 |
|
플레이북 |
플레이북 |
| 호스트 팩트 | 호스트 팩트 |
| 등록된 변수 | 등록된 변수 |
| 팩트 설정 | 팩트 설정 |
| 플레이 변수 | 플레이 변수 |
|
play | (지원되지 않음) |
|
play |
play |
| 역할 및 포함 변수 | 역할 및 포함 변수 |
| 블록 변수 | 블록 변수 |
| 작업 변수 | 작업 변수 |
| 추가 변수 | 작업 템플릿 추가 변수 |
| 작업 템플릿 설문 조사 (기본값) | |
| 작업 시작 추가 변수 |
6.17.1. 작업 템플릿 다시 시작 링크 복사링크가 클립보드에 복사되었습니다!
작업을 수동으로 다시 시작하는 대신 launch_type 을 다시 시작하여 다시 시작할 수 있습니다. 다시 시작 동작은 extra_vars 를 상속하지 않는다는 점에서 시작 동작과 다릅니다.
작업 다시 시작은 상속 논리를 거치지 않습니다. 다시 시작되는 작업에 대해 계산된 동일한 extra_vars 를 사용합니다.
예
extra_vars 없이 작업 템플릿을 시작하여 j1 이라는 작업이 생성됩니다. 그런 다음 작업 템플릿을 편집하고 extra_vars 를 추가합니다(예: "{ "hello": "world"}"추가 ).
j1 을 다시 시작하면 j2 가 생성되지만 상속 논리가 없고 j1 에는 extra_vars가 없으므로 j2 에는 extra_vars 가 없습니다.
j1 생성 후 추가한 extra_vars 로 작업 템플릿을 시작하면 생성된 다시 시작 작업(j3)에 extra_vars가 포함됩니다. j3 을 다시 시작하면 j4 가 생성되고 extra_vars 도 포함됩니다.
7장. 작업 분할 링크 복사링크가 클립보드에 복사되었습니다!
분할된 작업은 분산 작업의 개념을 나타냅니다. 다수의 호스트에서 작업을 실행하려면 분산 작업을 사용합니다. 그런 다음 클러스터 전체에서 병렬로 예약할 수 있는 인벤토리의 하위 집합에서 많은 ansible-playbook을 실행할 수 있습니다.
기본적으로 Ansible은 단일 제어 인스턴스의 작업을 실행합니다. 호스트 간 오케스트레이션이 필요하지 않은 작업의 경우 작업 분할은 자동화 컨트롤러의 기능을 활용하여 클러스터의 여러 노드에 작업을 분산합니다.
작업 분할은 Ansible 실행을 분할할 작업 수를 지정하는 Job_slice_count 를 추가하여 작동합니다. 이 숫자가 1 보다 크면 자동화 컨트롤러에서 작업이 아니라 작업 템플릿에서 워크플로를 생성합니다. 인벤토리는 슬라이스 작업에 균등하게 배포됩니다. 그러면 워크플로우 작업이 시작되고 일반 워크플로우처럼 진행됩니다.
작업을 시작할 때 API는 작업 리소스( job_slice_count = 1인 경우) 또는 워크플로우 작업 리소스를 반환합니다. 해당 UI(사용자 인터페이스)는 실행 상태를 표시하기 위해 적절한 화면으로 리디렉션됩니다.
7.1. 작업 슬라이스 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
작업 슬라이스를 설정할 때 다음을 고려하십시오.
- 분할된 작업은 워크플로우 작업을 생성한 다음 작업을 생성합니다.
- 작업 슬라이스는 작업 템플릿, 인벤토리, 슬라이스 수로 구성됩니다.
실행하면 분할된 작업이 각 인벤토리를 여러 "슬라이스 크기" 청크로 분할합니다. 그런 다음 적절한 인벤토리의 각 청크에서 ansible-playbook 실행 작업을 대기열에 넣습니다. ansible-playbook에 제공된 인벤토리는 해당 특정 슬라이스의 호스트만 있는 원래 인벤토리의 단축된 버전입니다. 작업 목록에 표시되는 완료된 분할된 작업에는 실행된 분할된 작업 수로 적절하게 레이블이 지정됩니다.
이러한 분할된 작업은 일반 스케줄링 동작(포크 수, 용량으로 인한 대기, 인벤토리 매핑을 기반으로 인스턴스 그룹에 할당)을 따릅니다.
참고작업 분할은 작업 실행을 수평으로 스케일링하기 위한 것입니다. 작업 템플릿에 분할하면 시작 시 구성된 슬라이스 수에 따라 인벤토리가 분할된 다음 각 슬라이스에 대한 작업이 시작됩니다.
일반적으로 슬라이스 수는 자동화 컨트롤러 노드 수보다 크거나 같습니다. 매우 많은 작업 슬라이스를 설정할 수 있지만 성능이 저하될 수 있습니다. 작업 스케줄러는 분할된 작업이 되는 수천 개의 워크플로우 노드를 동시에 예약하도록 설계되지 않았습니다.
- 프롬프트 또는 추가 변수가 있는 분할된 작업 템플릿은 표준 작업 템플릿과 동일하게 작동하여 결과 워크플로우 작업의 전체 슬라이스 작업 세트에 모든 변수 및 제한을 적용합니다. 그러나 분할된 작업에 제한을 전달할 때 제한으로 인해 호스트가 할당되지 않으면 해당 슬라이스가 실패하고 전체 작업이 실패합니다.
- 분산 작업의 작업 슬라이스 작업 상태는 워크플로우 작업과 동일한 방식으로 계산됩니다. 처리되지 않은 오류가 하위 작업에 있으면 실패합니다.
- (개인 호스트에 변경 사항만 적용하는 대신) 호스트 간에 오케스트레이션하려는 모든 작업을 슬라이스 작업으로 구성해서는 안 됩니다.
- 분할된 작업이 실패하면 자동화 컨트롤러에서 특정 실패한 플레이북을 검색하거나 고려하지 않습니다.
7.2. 작업 슬라이스 실행 동작 링크 복사링크가 클립보드에 복사되었습니다!
분할된 작업은 모든 노드에서 실행할 수 있습니다. 시스템에서 용량이 충분하지 않으면 다른 시간에 일부 실행이 발생할 수 있습니다. 슬라이스 작업이 실행 중인 경우 작업 세부 정보에 현재 실행 중인 워크플로우 및 작업 슬라이스와 세부 정보를 개별적으로 볼 수 있는 링크가 표시됩니다.
기본적으로 작업 템플릿은 일반적으로 동시에 실행되도록 구성되지 않습니다(API 또는 UI에서 allow_simultaneous 를 확인해야 함). 분할은 이 동작을 재정의하고 해당 설정이 명확한 경우에도 allow_simultaneous 를 의미합니다. 이 작업을 지정하는 방법과 작업 템플릿 구성의 작업 슬라이스 수에 대한 자세한 내용은 작업 템플릿을 참조하십시오.
작업 템플릿 섹션에서는 UI에서 다음 작업을 수행하는 방법에 대한 추가 세부 정보를 제공합니다.
- 슬라이스 번호가 1보다 큰 작업 템플릿을 사용하여 워크플로우 작업을 시작합니다.
- 슬라이스 작업 템플릿을 시작한 후 전체 워크플로우 또는 개별 작업을 취소합니다.
- 슬라이스 작업 실행이 완료된 후 전체 워크플로우 또는 개별 작업을 다시 시작합니다.
- 작업 템플릿을 시작한 후 워크플로우 및 슬라이스 작업에 대한 세부 정보를 확인합니다.
- 작업 슬라이스 검색 섹션에 따라 슬라이스 작업을 생성한 후 특별히 검색합니다.
7.3. 작업 슬라이스 검색 링크 복사링크가 클립보드에 복사되었습니다!
슬라이스 작업을 더 쉽게 찾으려면 검색 기능을 사용하여 다음에 검색 필터를 적용합니다.
- 슬라이스 작업만 표시하는 작업 목록
- 작업 슬라이스의 상위 워크플로우 작업만 표시하는 작업 목록
- 슬라이스 작업을 생성하는 작업 템플릿만 표시하는 작업 템플릿 목록
프로세스
다음 방법 중 하나를 사용하여 슬라이스 작업을 검색합니다.
대부분의 경우와 같이 작업 목록에 슬라이스 작업만 표시하려면 유형(여기에서 작업) 또는
unified_jobs에서 필터링할 수 있습니다./api/v2/jobs/?job_slice_count__gt=1
/api/v2/jobs/?job_slice_count__gt=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작업 슬라이스의 상위 워크플로우 작업만 표시하려면 다음을 실행합니다.
/api/v2/workflow_jobs/?job_template__isnull=false
/api/v2/workflow_jobs/?job_template__isnull=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 슬라이스 작업을 생성하는 작업 템플릿만 표시하려면 다음을 실행합니다.
/api/v2/job_templates/?job_slice_count__gt=1
/api/v2/job_templates/?job_slice_count__gt=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8장. 워크플로우 작업 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
템플릿에서 작업 템플릿과 워크플로우 작업 템플릿을 둘 다 생성할 수 있습니다.
작업 템플릿은 작업 템플릿을 참조하십시오.
워크플로 작업 템플릿은 릴리스 프로세스의 일부인 전체 작업 세트를 단일 단위로 추적하는 분산된 일련의 리소스를 함께 연결합니다. 이러한 리소스에는 다음이 포함됩니다.
- 작업 템플릿
- 워크플로우 작업 템플릿
- 프로젝트 동기화
- 인벤토리 소스 동기화
자동화 템플릿 페이지에는 현재 사용 가능한 워크플로우 및 작업 템플릿이 표시됩니다.
템플릿 이름을 선택하여 마지막으로 실행된 시기를 포함하여 템플릿에 대한 자세한 정보를 표시합니다. 이 목록은 이름에 따라 알파벳순으로 정렬되지만 다른 기준에 따라 정렬하거나 템플릿의 다양한 필드 및 속성으로 검색할 수 있습니다.
이 화면에서
를 시작하고,
를 편집하고,
워크플로우 작업 템플릿을 복제할 수 있습니다.
워크플로우 편집기에 액세스할 수 있는 바로 가기로 워크플로우 시각화 프로그램
아이콘이 워크플로우 템플릿에만 있습니다.
워크플로 템플릿은 다른 워크플로우 템플릿의 빌드 블록으로 사용할 수 있습니다. 워크플로우 작업 템플릿 수준에서 편집할 수 있는 워크플로우 템플릿에서 여러 설정을 설정하여 시작 시 프롬프트 를 활성화할 수 있습니다. 이는 개별 워크플로우 템플릿 수준에서 할당된 값에는 영향을 미치지 않습니다. 자세한 지침은 워크플로우 시각화 프로그램 섹션을 참조하십시오.
8.1. 워크플로우 작업 템플릿 생성 링크 복사링크가 클립보드에 복사되었습니다!
새 워크플로우 작업 템플릿을 생성하려면 다음 단계를 완료합니다.
워크플로우 템플릿에 제한을 설정하면 제한을 시작할 때 프롬프트 를 선택하지 않는 한 작업 템플릿에 전달되지 않습니다. 이 경우 실행 중인 플레이북에 제한이 필요한 경우 플레이북 오류가 발생할 수 있습니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 자동화 템플릿 페이지의 템플릿 생성 목록에서 워크플로 작업 템플릿 생성 을 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
참고필드에 시작 확인란이 선택되어 있거나 워크플로우 템플릿을 시작하거나 다른 워크플로우 템플릿 내에서 워크플로우 템플릿을 사용하는 경우 해당 필드에 대한 값을 입력하라는 메시지가 표시됩니다. 대부분의 프롬프트 값은 작업 템플릿에 설정된 모든 값을 재정의합니다. 다음 표에는 예외가 설명되어 있습니다.
Expand 필드 옵션 시작 시 프롬프트 이름
작업의 이름을 입력합니다.
해당 없음
설명
임의의 설명을 적절하게 입력합니다(선택 사항).
해당 없음
조직
로그인한 사용자에게 제공되는 조직에서 이 템플릿에 사용할 조직을 선택합니다.
해당 없음
인벤토리
선택적으로 로그인한 사용자에게 제공되는 인벤토리에서 이 템플릿에 사용할 인벤토리를 선택합니다.
제공됨
제한
플레이북에서 관리하거나 영향을 주는 호스트 목록을 추가로 제한하는 호스트 패턴입니다. 콜론(:)으로 많은 패턴을 분리할 수 있습니다. 핵심 Ansible과 마찬가지로:
- A:b는 "그룹 a 또는 b"를 의미합니다.
- A:b:&c는 "a 또는 b에 있지만 c에 있어야 함"를 의미합니다.
- A:!b는 "a에 있고 b에는 분명히 없음"을 의미합니다.
자세한 내용은 Patterns: targeting hosts and groups in the Ansible documentation에서 참조하십시오.
제공됨
선택하는 경우 기본값을 제공해도 시작 시 제한을 선택하라는 메시지가 표시됩니다.
소스 제어 분기
워크플로우의 분기를 선택합니다. 이 분기는 분기를 요청하는 모든 워크플로우 작업 템플릿 노드에 적용됩니다.
제공됨
라벨
-
선택적으로
dev또는test와 같은 이 워크플로 작업 템플릿을 설명하는 레이블을 제공합니다. 라벨을 사용하여 디스플레이에서 워크플로우 작업 템플릿 및 완료된 작업을 그룹화하고 필터링합니다. - 레이블은 워크플로우 템플릿에 추가할 때 생성됩니다. 레이블은 워크플로우 템플릿에 제공되는 프로젝트를 사용하여 단일 조직에 연결됩니다. 조직 멤버는 편집 권한이 있는 경우(예: 관리자 역할) 워크플로우 템플릿에 레이블을 생성할 수 있습니다.
- 작업 템플릿을 저장하면 워크플로우 작업 템플릿 세부 정보 보기에 레이블이 표시됩니다.
- 레이블은 워크플로우에 사용되는 작업 템플릿 노드가 아닌 워크플로우 템플릿에만 적용됩니다.
-
제거하려면 레이블 옆에 있는
를 선택합니다. 레이블이 제거되면 해당 특정 작업 또는 작업 템플릿과 더 이상 연결되지 않지만 이를 참조하는 다른 작업과 연결된 상태로 유지됩니다.
제공됨
선택하는 경우 기본값을 제공해도 필요한 경우 추가 레이블을 제공하라는 메시지가 표시됩니다. - 기존 레이블을 삭제할 수 없습니다.
를 선택하면 기존 기본 레이블만 제거되지 않습니다.
작업 태그
를 입력하고 생성 드롭다운을 선택하여 실행해야 하는 플레이북의 부분을 지정합니다. 자세한 내용 및 예제는 Ansible 문서의 태그 를 참조하십시오.
제공됨
건너뛰기 태그
생성 드롭다운을 입력하고 선택하여 건너뛸 플레이북의 특정 작업 또는 일부를 지정합니다. 자세한 내용 및 예제는 Ansible 문서의 태그 를 참조하십시오.
제공됨
추가 변수
- 플레이북에 추가 명령행 변수를 전달합니다.
이는 Ansible이 작동하는 방식 제어: 우선순위 규칙. - YAML 또는 JSON을 사용하여 Give 키 또는 값 쌍에 대한 Ansible 문서에 설명되어 있는 ansible-playbook의 "-e" 또는 "-extra-vars" 명령줄 매개변수입니다. 이러한 변수에는 우선순위 최대값이 있으며 다른 위치에 지정된 다른 변수를 덮어씁니다. 다음은
git_branch: production release_version: 1.5의 예입니다.제공됨
일정에
extra_vars를 지정하려면 워크플로우 작업 템플릿에서 추가 변수 시작 시 프롬프트 를 선택하거나 작업 템플릿에서 설문 조사를 활성화해야 합니다. 답변된 설문 조사 질문이extra_vars가 됩니다. 추가 변수에 대한 자세한 내용은 추가 변수를 참조하십시오. ???필요한 경우 이 템플릿을 시작하기 위해 다음 옵션을 지정합니다.
Webhook 활성화를 선택하여 워크플로우 작업 템플릿을 시작하는 데 사용되는 사전 정의된 SCM 시스템 웹 서비스와 연결하는 기능을 켭니다. GitHub 및 GitLab은 지원되는 SCM 시스템입니다.
Webhook를 활성화하면 다른 필드가 표시되면서 추가 정보를 요청합니다.
- Webhook 서비스: Webhook에서 수신 대기할 서비스를 선택합니다.
- Webhook URL: 요청을 POST하는 Webhook 서비스의 URL이 자동으로 채워집니다.
- Webhook 키: Webhook 서비스에서 자동화 컨트롤러로 전송된 페이로드에 서명하는 데 사용할 공유 시크릿을 생성합니다. 이 서비스의 Webhook가 자동화 컨트롤러에서 수락되도록 Webhook 서비스의 설정에서 이 구성을 구성해야 합니다. Webhook 설정에 대한 자세한 내용은 Webhook 작업을 참조하십시오.
- 동시 작업을 활성화 하여 이 워크플로우를 동시에 실행할 수 있는지 확인합니다. 자세한 내용은 자동화 컨트롤러 용량 결정 및 작업 영향을 참조하십시오.
- 워크플로우 템플릿 구성을 완료한 경우 워크플로우 작업 템플릿 을 클릭합니다.
템플릿을 저장하면 워크플로우 템플릿 페이지가 종료되고 워크플로우 시각화 프로그램이 열립니다. 워크플로우를 빌드할 수 있습니다. 자세한 내용은 워크플로우 시각화 프로그램 섹션을 참조하십시오. 그렇지 않으면 다음 방법 중 하나를 선택합니다.
워크플로우 시각화 프로그램을 종료하여 새로 저장된 템플릿의 세부 정보 탭으로 돌아갑니다. 여기에서 다음 작업을 완료할 수 있습니다.
- 검토, 편집, 권한, 알림, 일정 및 설문 조사
- 완료된 작업 보기
- 워크플로우 템플릿 빌드
시작을 클릭하여 워크플로를 시작합니다.
참고시작하기 전에 템플릿을 저장하거나 은 비활성화된 상태로 유지됩니다. 알림 탭은 템플릿을 저장한 후에만 표시됩니다.
8.2. 권한 작업 링크 복사링크가 클립보드에 복사되었습니다!
팀 액세스 또는 사용자 액세스 탭을 클릭하여 팀 멤버와 함께 사용자의 관련 권한을 검토, 대규모, 편집 및 제거합니다.
를 클릭하여 프롬프트에 따라 이 워크플로우 템플릿에 대한 새 권한을 생성합니다.
8.3. 알림 작업 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우 작업 템플릿에서 알림 작업 작업에 대한 자세한 내용은 알림 작업을 참조하십시오.
8.4. 완료된 워크플로우 작업 보기 링크 복사링크가 클립보드에 복사되었습니다!
Jobs (작업) 탭에는 실행된 작업 템플릿 목록이 있습니다. 각 작업 옆에 있는
아이콘을 클릭하여 각 작업의 세부 정보를 확인합니다.
이 보기에서 작업 ID, 워크플로우 작업의 이름을 클릭하고 해당 그래프를 볼 수 있습니다. 다음 예제에서는 워크플로우 작업의 세부 정보를 보여줍니다.
노드를 식별하는 데 도움이 되도록 라벨이 표시됩니다. 자세한 내용은 워크플로우 시각화 프로그램 섹션의 범례를 참조하십시오.
8.5. 워크플로우 작업 템플릿 예약 링크 복사링크가 클립보드에 복사되었습니다!
일정 탭을 선택하여 특정 워크플로우 작업 템플릿의 스케줄에 액세스합니다.
워크플로우 작업 템플릿 실행 예약에 대한 자세한 내용은 작업 템플릿 예약 섹션을 참조하십시오.
중첩된 워크플로우에 사용된 워크플로우 작업 템플릿에 설문 조사가 있거나 인벤토리 옵션에 대한 프롬프트 가 선택되어 있는 경우 일정 양식의 옵션 옆에 PROMPT 옵션이 표시됩니다. 를 클릭하여 인벤토리를 제공하거나 제거하거나 변경 사항 없이 단계를 건너뛸 수 있는 선택적 INVENTORY 단계를 표시합니다.
8.6. 워크플로우 작업 템플릿의 설문 조사 링크 복사링크가 클립보드에 복사되었습니다!
실행 또는 확인 작업 유형이 포함된 워크플로우에서는 워크플로우 작업 템플릿 생성 또는 편집 화면에서 설문 조사를 설정하는 방법을 제공합니다.
워크플로우 작업 템플릿에서 설문 조사 및 선택적 설문 조사를 생성하는 방법을 포함하여 작업 설문 조사에 대한 자세한 내용은 작업 템플릿의 설문 조사 섹션을 참조하십시오.
8.7. 워크플로우 시각화 프로그램 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우 시각화 도구를 사용하면 그래프를 사용해 작업 템플릿, 워크플로우 템플릿, 프로젝트 동기화, 인벤토리 동기화를 하나로 연결하여 워크플로우 템플릿을 빌드할 수 있습니다. 워크플로우 템플릿을 빌드하기 전에 상위 노드, 자식 노드 및 형제 노드 의 다양한 시나리오와 관련된 고려 사항은 자동화 컨트롤러의 워크플로우 섹션을 참조하십시오.
8.7.1. 워크플로우 빌드 링크 복사링크가 클립보드에 복사되었습니다!
다음 노드 유형 중 두 개 이상의 조합을 설정하여 워크플로우를 빌드할 수 있습니다.
- 템플릿(작업 템플릿 또는 워크플로우 작업 템플릿)
- 프로젝트 동기화
- 인벤토리 동기화
- 승인
프로세스
워크플로우 시각화 프로그램을 시작하려면 다음 방법 중 하나를 사용합니다.
탐색 패널에서 → 선택합니다.
- 워크플로우 템플릿을 선택하고 클릭합니다.
-
자동화 템플릿 목록 뷰에서 워크플로우 작업 템플릿 옆에 있는
아이콘을 클릭합니다.
- 를 클릭하여 워크플로우에 추가할 노드 목록을 표시합니다.
노드 유형 목록에서 추가할 노드 유형을 선택합니다.
승인 노드를 선택하는 경우 자세한 내용은 노드 승인을 참조하십시오.
노드를 선택하면 노드와 연결된 유효한 옵션이 제공됩니다.
참고워크플로우 그래프를 채울 때 기본 인벤토리가 없는 작업 템플릿을 선택하면 상위 워크플로우의 인벤토리가 사용됩니다. 작업 템플릿에는 인증 정보가 필요하지 않지만 암호가 필요한 인증 정보가 있는 경우 워크플로우의 작업 템플릿을 선택할 수 없습니다. 인증 정보가 프롬프트 인증 정보로 교체되는 경우가 아니면 됩니다.
- 노드 유형을 선택하면 워크플로우가 빌드되기 시작하고 선택한 노드에 수행할 작업 유형을 지정해야 합니다. 이 작업을 에지 유형이라고도 합니다.
노드가 루트 노드인 경우 기본적으로 에지 유형은 Always 로 설정되며 편집할 수 없습니다. 후속 노드의 경우 다음 시나리오(에지 유형) 중 하나를 선택하여 각각에 적용할 수 있습니다.
- Always run: 성공 또는 실패와 관계없이 계속 실행됩니다.
- 성공 시 실행: 성공적으로 완료되면 다음 템플릿을 실행합니다.
- 실패 시 실행: 실패 후 다른 템플릿을 실행합니다.
Convergence 필드에서 통합 노드인 경우 노드의 동작을 선택합니다.
- 이는 기본 동작이므로 다음 통합 노드를 트리거하기 전에 모든 노드를 지정된 대로 완료할 수 있습니다. 한 부모의 상태가 해당 실행 조건 중 하나를 충족하면 모든 하위 노드가 실행됩니다. 모든 노드에는 모든 노드를 완료해야 하지만 예상된 결과로 하나의 노드만 완료해야 합니다.
다음 노드를 통합하고 트리거하기 전에 모든 노드가 지정된 대로 완료되도록 All 을 선택합니다. 모든* 노드의 목적은 모든 부모가 자식 노드를 실행하기 위해 예상되는 결과를 충족하는지 확인하는 것입니다. 워크플로우는 모든 부모가 자식 노드를 실행하는 데 예상대로 작동하는지 확인합니다. 예상대로 작동하지 않았다면 자식 노드를 실행하지 않습니다.
선택하는 경우 그래픽 보기에서 노드에 ALL 으로 레이블이 지정됩니다.
참고노드가 루트 노드이거나 통합되는 노드가 없는 노드인 경우 Convergence 규칙을 설정하면 해당 동작이 이를 트리거하는 작업에 의해 결정되므로 적용되지 않습니다.
워크플로우 에 사용된 작업 템플릿에 해당 매개변수에 대해 프롬프트 가 선택되어 있는 경우 옵션이 표시되어 노드 수준에서 해당 값을 변경할 수 있습니다. 마법사를 사용하여 각 탭의 값을 변경하고 프리뷰 탭에서 을 클릭합니다.
워크플로우 에 사용된 워크플로우 템플릿에 인벤토리 옵션에 대해 시작 시 프롬프트 가 선택되어 있는 경우 마법사를 사용하여 프롬프트에서 인벤토리를 제공합니다. 상위 워크플로우에 자체 인벤토리가 있는 경우 여기에 제공된 인벤토리를 덮어씁니다.
참고세부 정보를 입력하라는 필수 필드가 있지만 기본값이 없는 워크플로우 작업 템플릿의 경우 SELECT 옵션이 활성화되기 전에 노드를 생성할 때 해당 값을 제공해야 합니다.
다음 두 가지 경우 옵션에서 값을 제공할 때까지 옵션을 비활성화합니다.
- 워크플로우 작업 템플릿에서 프롬프트 시작 확인란을 선택하지만 기본값을 제공하지는 않습니다.
- 필수이지만 기본 답변을 제공하지 않는 설문 조사 질문을 생성하는 경우
그러나 자격 증명의 경우는 그렇지 않습니다. 노드를 생성할 때 노드를 시작하는 데 필요한 모든 정보를 제공해야 하므로 시작 시 암호가 필요한 인증 정보는 워크플로우 노드를 생성할 때 허용되지 않습니다. 워크플로우 작업 템플릿에서 인증 정보를 입력하라는 메시지가 표시되면 자동화 컨트롤러에서 암호가 필요한 인증 정보를 선택할 수 없습니다.
프롬프트 마법사가 닫힐 때 을 클릭하여 해당 노드에서 변경 사항을 적용해야 합니다. 그렇지 않으면 작업 템플릿에 설정된 값으로 되돌립니다.
노드가 생성되면 해당 작업 유형으로 레이블이 지정됩니다. 각 워크플로우 노드와 연결된 템플릿은 진행하면서 선택한 실행 시나리오를 기반으로 실행됩니다. 를 클릭하여 각 실행 시나리오 및 해당 작업 유형에 대한 범례를 표시합니다.
노드 위로 마우스를 이동하여 노드를 편집하거나, 단계 및 링크를 추가하거나, 선택한 노드를 삭제합니다.
참고링크를 추가할 때 단계를 마우스로 가리키면 빨간색 테두리가 표시되면 이 두 단계를 함께 연결할 수 없습니다. 이는 사용자가 "회상 종속성"을 생성하는 것을 방지하기 위한 예방 조치이며, 이로 인해 무한 루프로 종료되고 완료되지 않는 워크플로우가 발생할 수 있습니다.
- 노드를 추가하거나 편집한 경우 를 클릭하여 수정 사항을 저장하고 그래프 뷰에서 렌더링합니다. 워크플로우를 빌드하는 방법은 노드 시나리오 빌드 를 참조하십시오.
- 워크플로우 작업 템플릿을 빌드한 경우 클릭하여 전체 워크플로우 템플릿을 저장하고 새 워크플로우 작업 템플릿 세부 정보 페이지로 돌아갑니다.
를 클릭하면 작업이 저장되지 않고 전체 워크플로우 시각화 도구가 종료되므로 다시 시작해야 합니다.
8.7.2. 승인 노드 링크 복사링크가 클립보드에 복사되었습니다!
승인 노드를 선택하려면 워크플로우를 진행하기 위한 개입이 필요합니다. 이 기능은 플레이북 간 워크플로우를 일시 중지하여 워크플로우의 다음 플레이북으로 계속 진행할 수 있는 승인을 제공할 수 있도록 합니다. 이렇게 하면 사용자가 개입할 수 있는 지정된 시간을 제공하지만 다른 트리거를 기다리지 않고도 최대한 빨리 계속할 수 있습니다.
시간 초과의 기본값은 none이지만 요청이 만료되고 자동으로 거부되기 전의 시간을 지정할 수 있습니다. 승인 노드에 대한 정보를 선택하고 제공하면 그래프 보기에 일시 중지 아이콘이 표시됩니다.
승인자는 다음 기준을 충족하는 모든 사람입니다.
- 승인 노드가 포함된 워크플로우 작업 템플릿을 실행할 수 있는 사용자입니다.
- 조직 관리자 또는 이상의 권한이 있는 사용자(해당 워크플로우 작업 템플릿과 연결된 조직의 경우)
- 해당 특정 워크플로우 작업 템플릿 내에서 승인 권한이 명시적으로 할당된 사용자입니다.
만료가 할당된 경우 지정된 제한 시간 내에 보류 중인 승인 노드가 승인되지 않거나 거부되는 경우 "시간 초과" 또는 "실패"로 표시되고 다음 "실패 시 노드" 또는 "항상 노드"로 이동합니다. 승인되면 "성공 시" 경로가 사용됩니다. API에서 이미 승인, 거부 또는 시간 초과된 노드에 POST 를 시도하면 이 작업이 중복되었음을 알리는 오류 메시지가 표시되고 추가 단계가 수행되지 않습니다.
다음 표에서는 승인 워크플로우에 허용되는 다양한 권한 수준을 보여줍니다.
8.7.3. 노드 시나리오 빌드 링크 복사링크가 클립보드에 복사되었습니다!
다음 시나리오에서 노드를 관리하는 방법을 알아봅니다.
프로세스
상위 노드 및 추가 단계에서 (
) 아이콘을 클릭하고 형제 노드를 추가할 수 있는 링크를 클릭합니다.
-
또는 (
) 및 추가 단계를 클릭하여 분할 시나리오를 표시할 루트 노드를 추가합니다.
-
분할 시나리오를 생성하려는 모든 노드에서 분할 시나리오가 시작되는 노드 위에 마우스를 올리고 상위 노드의 더하기(
) 아이콘을 클릭하고 단계 및 링크 추가. 그러면 동일한 부모 노드의 여러 노드가 추가되어 형제 노드를 생성합니다.
를 클릭하여 그래픽 표시와 연결된 기호 및 색상의 의미를 확인하여 키를 참조하십시오.
다양한 에지 유형이 있는 형제 노드 집합이 포함된 후속 노드가 워크플로우에 연결된 후속 노드가 있는 노드를 제거하면 연결된 노드가 자동으로 형제 노드 세트를 결합하고 해당 에지 유형을 유지합니다.
8.7.4. 노드 편집 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
다음 방법 중 하나를 사용하여 노드를 편집합니다.
- 노드를 편집하려면 노드의 아이콘을 클릭합니다. 창에 현재 선택 항목이 표시되고 을 클릭하여 변경합니다. 변경 후 를 클릭하여 그래프 보기에 적용합니다.
-
기존 링크의 에지 유형을 편집하려면 (성공 시 실행 중, 실패 시 실행, 항상 실행됨) 기존 상태에서
를 클릭합니다.
-
링크를 제거하려면 링크에 대해 (
)를 클릭하고 클릭합니다. 이 옵션은 대상 또는 자식 노드에 부모가 두 개 이상 있는 경우에만 창에 표시됩니다. 모든 노드는 항상 하나 이상의 다른 노드에 연결되어 있어야 하므로 이전 링크를 제거하기 전에 새 링크를 생성해야 합니다.
다음 방법 중 하나를 사용하여 워크플로우 다이어그램의 보기를 편집합니다.
-
확대/축소할 검사 아이콘(
)을 클릭합니다. 축소할 축소 아이콘(
), 화면에 맞게 확장 아이콘(
) 또는 뷰의 위치를 다시 지정할 재설정 아이콘(
)을 클릭합니다.
- 워크플로우 다이어그램을 드래그하여 화면에 재배치하거나 마우스의 스크롤을 사용하여 확대/축소합니다.
-
확대/축소할 검사 아이콘(
8.8. 워크플로우 작업 템플릿 시작 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
다음 방법 중 하나를 사용하여 워크플로우 작업 템플릿을 시작합니다.
-
탐색 패널에서 → 옆에 있는
아이콘을 클릭합니다.
- 의 세부 정보 탭에서 템플릿 시작을 클릭합니다.
-
탐색 패널에서 → 옆에 있는
워크플로우 작업 템플릿에 추가된 변수는 워크플로우 작업 템플릿 및 설문 조사에 설정된 추가 변수와 함께 시작 시 자동화 컨트롤러에 자동으로 추가됩니다.
워크플로우 승인과 관련된 이벤트는 승인 요청에 대한 자세한 정보와 함께 활동 스트림(
)에 표시됩니다.
8.9. 워크플로우 작업 템플릿 중복 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러를 사용하면 워크플로우 작업 템플릿을 복제할 수 있습니다. 워크플로우 작업 템플릿을 복제하면 연결된 일정, 알림 또는 권한이 중복되지 않습니다. 스케줄 및 알림은 워크플로우 템플릿의 중복을 생성하는 사용자 또는 시스템 관리자가 다시 생성해야 합니다. 워크플로우 템플릿을 분할하는 사용자에게는 관리자 권한이 부여되지만 워크플로우 템플릿에는 권한이 할당(복사됨)되지 않습니다.
프로세스
- 탐색 패널에서 → 선택합니다.
복제하려는 템플릿과 연결된
) 아이콘을 클릭하고
중복 템플릿 아이콘을 선택합니다.
- 복제한 템플릿의 이름과 타임스탬프가 있는 새 템플릿이 템플릿 목록에 표시됩니다.
- 새 템플릿을 열고 클릭합니다.
- Name 필드의 내용을 새 이름으로 바꾸고 다른 필드의 항목을 제공하거나 변경하여 이 페이지를 완료합니다.
- 클릭합니다.
리소스에 적절한 수준의 권한이 없는 관련 리소스가 있는 경우 리소스를 복제할 수 없습니다. 예를 들어 프로젝트에서 현재 사용자에게 읽기 액세스 권한만 있는 인증 정보를 사용하는 경우입니다. 그러나 워크플로우 작업 템플릿의 경우 권한이 없는 작업 템플릿, 인벤토리 또는 인증 정보를 사용하는 노드가 있는 경우에도 워크플로우 템플릿을 복제할 수 있습니다. 그러나 중복된 워크플로우 작업 템플릿에는 워크플로우 템플릿 노드의 해당 필드가 없습니다.
8.10. 워크플로우 작업 템플릿 추가 변수 링크 복사링크가 클립보드에 복사되었습니다!
자세한 내용은 Extra variables 섹션을 참조하십시오.
9장. 자동화 컨트롤러의 워크플로우 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우를 사용하면 인벤토리, 플레이북 또는 권한을 공유하거나 공유하지 않을 수 있는 일련의 분산된 작업 템플릿(또는 워크플로우 템플릿)을 구성할 수 있습니다.
워크플로우에는 작업 템플릿과 유사하게 권한이 있습니다. 워크플로우는 릴리스 프로세스에 속한 전체 작업 세트를 단일 단위로 추적하는 작업을 수행합니다.
관리자 및 실행
작업 또는 워크플로우 템플릿은 노드라는 그래프와 같은 구조를 사용하여 함께 연결됩니다. 이러한 노드는 작업, 프로젝트 동기화 또는 인벤토리 동기화일 수 있습니다. 템플릿은 다른 워크플로우의 일부이거나 동일한 워크플로우에서 여러 번 사용할 수 있습니다. 워크플로우를 시작할 때 그래프 구조의 복사본이 워크플로우 작업에 저장됩니다.
다음 예제에서는 세 가지와 워크플로우 작업 템플릿이 모두 있는 워크플로우를 보여줍니다.
워크플로우가 실행되면 노드의 연결된 템플릿에서 작업이 생성됩니다. 프롬프트 기반 필드(job_type, job_tags, skip_tags, limit)가 있는 작업 템플릿에 연결하는 노드는 해당 필드를 포함할 수 있으며 시작 시 메시지가 표시되지 않습니다. 기본값 없이 인증 정보 또는 인벤토리를 요청하는 작업 템플릿은 워크플로우에 포함할 수 없습니다.
9.1. 워크플로우 시나리오 및 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우를 빌드할 때 다음을 고려하십시오.
- 루트 노드는 기본적으로 항상 설정되어 있으며 편집할 수 없습니다.
- 노드에 상위가 여러 개 있을 수 있으며, 자식은 성공, 실패 또는 항상 상태와 연결될 수 있습니다. 항상 경우 상태는 성공도 실패도 아닙니다. 상태는 워크플로우 작업 템플릿 수준이 아닌 노드 수준에서 적용됩니다. 워크플로우 작업은 취소되거나 오류가 발생하지 않는 한 성공으로 표시됩니다.
- 워크플로우 내에서 작업 또는 워크플로우 템플릿을 제거하면 이전에 삭제된 노드에 연결된 노드가 자동으로 업스트림에 연결되고 다음 예와 같이 에지 유형을 유지합니다.
여러 작업이 하나로 통합되는 통합 워크플로를 사용할 수 있습니다. 이 시나리오에서는 다음 예와 같이 다음 작업이 실행되기 전에 모든 작업 또는 모든 작업을 완료해야 합니다.
- 이 예제에서 자동화 컨트롤러는 처음 두 개의 작업 템플릿을 병렬로 실행합니다. 지정된 대로 둘 다 완료하고 성공하면 세 번째 다운스트림(통합 노드)이 트리거됩니다.
- 워크플로우 작업 템플릿의 워크플로우 노드에 적용되는 인벤토리 및 설문 조사의 프롬프트입니다.
-
API에서 시작하는 경우
get명령을 실행하면 경고 목록이 표시되고 누락된 구성 요소가 강조 표시됩니다. 다음 이미지는 워크플로우 작업 템플릿의 기본 워크플로우를 보여줍니다.
- 여러 워크플로우를 동시에 시작하고 시작 스케줄을 설정할 수 있습니다. 작업 템플릿과 유사하게 워크플로우에 대한 알림(예: 작업 완료 시)을 설정할 수 있습니다.
작업 분할은 작업 실행을 수평으로 스케일링하기 위한 것입니다.
작업 템플릿에서 작업 분할을 활성화하면 시작 시 구성된 슬라이스 수에 따라 인벤토리를 나눕니다. 그런 다음 각 슬라이스에 대한 작업을 시작합니다.
자세한 내용은 작업 분할 섹션을 참조하십시오.
- 재귀 워크플로를 빌드할 수 있지만 자동화 컨트롤러에서 오류를 감지하면 중첩된 워크플로우가 실행하려고 할 때 중지됩니다.
- 하위 워크플로우에서 작업에 수집된 아티팩트는 다운스트림 노드로 전달됩니다.
- 인벤토리는 워크플로우 수준에서 설정하거나 시작 시 인벤토리를 입력하도록 요청할 수 있습니다.
-
시작된 경우
ask_inventory_on_launch=true가 있는 워크플로우의 모든 작업 템플릿은 워크플로우 수준 인벤토리를 사용합니다. - 인벤토리를 입력하라는 메시지가 표시되지 않는 작업 템플릿은 워크플로우 인벤토리를 무시하고 자체 인벤토리에 대해 실행합니다.
- 워크플로우에서 인벤토리를 입력하라는 메시지를 표시하는 경우 스케줄 및 기타 워크플로우 노드에서 인벤토리를 제공할 수 있습니다.
-
워크플로우 통합 시나리오에서는
set_stats데이터가 정의되지 않은 방식으로 병합되므로 고유한 키를 설정해야 합니다.
9.2. 워크플로우 추가 변수 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우에서는 설문 조사를 사용하여 워크플로우의 플레이북에서 사용할 extra_vars 라는 변수를 지정합니다. 설문 조사 변수는 워크플로우 작업 템플릿에 정의된 extra_vars 와 결합되고 워크플로우 작업 extra_vars 에 저장됩니다. 워크플로우 작업의 extra_vars 는 워크플로우 내에서 작업을 생성할 때 작업 템플릿 변수와 결합됩니다.
워크플로우는 세 개의 추가 변수를 제외하고 작업 템플릿과 동일한 변수 우선순위 동작(계층 구조)을 사용합니다. 작업 템플릿의 추가 변수 섹션에서 자동화 컨트롤러 변수 계층 구조를 참조하십시오. 세 가지 추가 변수는 다음과 같습니다.
- 워크플로우 작업 템플릿 추가 변수
- 워크플로우 작업 템플릿 설문 조사 (기본값)
- 워크플로우 작업 시작 추가 변수
워크플로우에 포함된 워크플로우는 동일한 변수 우선 순위를 따르며 특별히 요청하거나 설문 조사의 일부로 정의된 경우에만 변수를 상속합니다.
워크플로우 extra_vars 외에도 워크플로우의 일부로 실행되는 작업과 워크플로우는 워크플로우에서 상위 작업의 아티팩트 사전의 변수를 상속할 수 있습니다(해당 분기의 상위 항목과도 결합). set_stats Ansible 모듈에서 정의할 수 있습니다.
플레이북에서 set_stats 모듈을 사용하는 경우 다른 작업에서 다운스트림을 사용할 수 있는 결과를 생성할 수 있습니다.
예
사용자에게 통합 실행의 성공 또는 실패에 대해 알립니다. 이 예제에는 아티팩트를 전달하도록 워크플로우에 결합할 수 있는 두 개의 플레이북이 있습니다.
- invoke_set_stats.yml: 워크플로우의 첫 번째 플레이북:
- use_set_stats.yml: 워크플로우의 두 번째 플레이북:
set_stats 모듈은 이 워크플로우를 다음과 같이 처리합니다.
- 통합 결과의 콘텐츠가 웹에 업로드됩니다.
-
그러면
invoke_set_stats플레이북을 통해set_stats가 호출되어 업로드된integration_results.txt의 URL을 Ansible 변수integration_results_url로 아티팩트합니다. -
워크플로우의 두 번째 플레이북은 Ansible 추가 변수
integration_results_url을 사용합니다. URI 모듈을 사용하여 이전 작업 템플릿 작업에서 업로드한 파일의 내용을 가져와서 웹을 호출합니다. 그런 다음 가져온 파일의 내용을 출력합니다.
아티팩트가 작동하려면 set_stats 모듈에 기본 설정 per_host = False 를 유지합니다.
9.3. 워크플로우 상태 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우 작업에는 다음과 같은 상태가 있을 수 있습니다(실패 상태 없음).
- 대기 중
- 실행 중
- 성공(완료)
- 취소
- 오류
- 실패
워크플로우 구성에서 작업을 취소하면 분기가 취소되고, 워크플로우 작업을 취소하면 전체 워크플로우가 취소됩니다.
9.4. 역할 기반 액세스 제어 링크 복사링크가 클립보드에 복사되었습니다!
워크플로우 작업 템플릿을 편집하고 삭제하려면 관리자 역할이 있어야 합니다. 워크플로우 작업 템플릿을 생성하려면 조직 관리자 또는 시스템 관리자여야 합니다. 그러나 권한이 없는 작업 템플릿이 있는 워크플로우 작업 템플릿을 실행할 수 있습니다. 시스템 관리자는 빈 워크플로를 생성한 다음 낮은 수준의 사용자에게 admin_role 을 부여하면 더 많은 액세스 권한을 위임하고 그래프를 빌드할 수 있습니다. 워크플로우 작업 템플릿에 추가하려면 작업 템플릿에 대한 실행 액세스 권한이 있어야 합니다.
사용자에게 부여된 권한에 따라 중복 복사 또는 워크플로우 다시 시작과 같은 기타 작업을 수행할 수도 있습니다. 작업 템플릿을 다시 시작하거나 복사하기 전에 워크플로우에 사용된 모든 리소스에 대한 권한이 있어야 합니다.
자세한 내용은 역할 기반 액세스 제어를 사용하여 액세스 관리를 참조하십시오.
설명된 작업을 수행하는 방법에 대한 자세한 내용은 워크플로우 작업 템플릿을 참조하십시오.
10장. 스케줄 링크 복사링크가 클립보드에 복사되었습니다!
탐색 패널에서 → 을 클릭하여 구성된 일정에 액세스합니다. 스케줄 목록은 방향 화살표를 사용하여 각 열의 특성에 따라 정렬할 수 있습니다. 이름, 날짜 또는 스케줄이 실행되는 월로 검색할 수도 있습니다.
On 또는 Off 토글을 사용하여 활성 일정을 중지하거나 중지된 일정을 활성화합니다.
아이콘 편집을 클릭하여 스케줄을 편집합니다.
템플릿, 프로젝트 또는 인벤토리 소스를 설정하는 경우 해당 리소스의 세부 정보 페이지에서 스케줄 탭을 클릭하여 이러한 리소스에 대한 스케줄을 구성합니다. 일정을 생성할 때 다음과 같은 매개변수가 있습니다.
- 이름
- 일정 이름을 클릭하여 세부 정보를 엽니다.
- 관련 리소스
- 일정의 기능을 설명합니다.
- 유형
- 이는 일정이 소스 제어 업데이트 또는 시스템 관리 작업 스케줄과 연결되어 있는지 여부를 식별합니다.
- 다음 실행
- 다음으로 예약된 이 작업의 실행입니다.
10.1. 새 일정 추가 링크 복사링크가 클립보드에 복사되었습니다!
템플릿, 프로젝트 또는 인벤토리 소스에서 스케줄을 생성하고 기본 일정 페이지에서 직접 생성할 수 있습니다.
일정 페이지에서 새 일정을 생성하려면 다음을 수행합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 클릭합니다. 그러면 일정 생성 창이 열립니다.
이 일정이 적용되는 리소스 유형을 선택합니다.
다음 중 선택:
작업 템플릿
- 작업 템플릿 의 경우 메뉴에서 작업 템플릿을 선택합니다.
워크플로우 작업 템플릿
- 워크플로우 작업 템플릿 의 경우 메뉴에서 워크플로 작업 템플릿을 선택합니다.
인벤토리 소스
- 인벤토리 소스 의 경우 적절한 메뉴에서 인벤토리 및 인벤토리 소스 를 선택합니다.
프로젝트 동기화
- 프로젝트 동기화 의 경우 메뉴에서 프로젝트를 선택합니다.
관리 작업 템플릿
- 관리 작업 템플릿 은 메뉴에서 워크플로 작업 템플릿을 선택합니다.
작업 템플릿 및 프로젝트 동기화 의 경우 다음 필드에 적절한 세부 정보를 입력합니다.
- schedule name: 이름을 입력합니다.
- 선택 사항: 설명을 입력합니다.
- 시작일/시간: 일정을 시작할 날짜와 시간을 입력합니다.
시간대: 시간대 를 선택합니다. 입력하는 시작 날짜/시간은 이 시간대에 있어야 합니다.
일정을 설정할 때 스케줄 세부 정보가 표시되어 선택한 현지 시간대 에서 일정 설정 및 스케줄링된 발생 목록을 검토할 수 있습니다.
중요작업은 UTC로 스케줄링됩니다. 특정 시간에 실행되는 반복 작업은 일광 절약 시간 변경이 발생할 때 현지 시간대를 기준으로 이동할 수 있습니다. 스케줄을 저장하면 현지 시간대 기반 시간이 UTC로 해석됩니다. 일정이 올바르게 작성되도록 하려면 UTC 시간으로 일정을 설정합니다.
- 를 클릭합니다. 규칙 정의 페이지가 표시됩니다.
10.2. 리소스 페이지에서 새 일정 추가 링크 복사링크가 클립보드에 복사되었습니다!
리소스 페이지에서 새 일정을 생성하려면 다음을 수행합니다.
프로세스
- 구성 중인 리소스의 스케줄 탭을 클릭합니다. 템플릿, 프로젝트 또는 인벤토리 소스일 수 있습니다.
- 클릭합니다. 그러면 일정 생성 창이 열립니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- schedule name: 이름을 입력합니다.
- 선택 사항: 설명을 입력합니다.
- 시작일/시간: 일정을 시작할 날짜와 시간을 입력합니다.
시간대: 시간대 를 선택합니다. 입력하는 시작 날짜/시간은 이 시간대에 있어야 합니다.
일정을 설정할 때 스케줄 세부 정보가 표시되어 선택한 현지 시간대 에서 일정 설정 및 스케줄링된 발생 목록을 검토할 수 있습니다.
중요작업은 UTC로 스케줄링됩니다. 특정 시간에 실행되는 반복 작업은 일광 절약 시간 변경이 발생할 때 현지 시간대를 기준으로 이동할 수 있습니다. 스케줄을 저장하면 현지 시간대 기반 시간이 UTC로 해석됩니다. 일정이 올바르게 작성되도록 하려면 UTC 시간으로 일정을 설정합니다.
- 를 클릭합니다. 규칙 정의 페이지가 표시됩니다.
10.2.1. 스케줄에 대한 규칙 정의 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
다음 정보를 입력합니다.
- frequency: 일정이 실행되는 빈도 를 입력합니다.
- interval: 규칙을 반복할 간격을 선택합니다.
- 주 시작: 주를 시작할 요일을 선택합니다.
- minutes of the hour: 이 필드를 사용하여 스케줄을 실행해야 하는 시간의 분을 선언합니다.
- 시간: 이 필드를 사용하여 일정이 실행되어야 하는 요일을 선언합니다.
- 요일: 일정을 실행할 요일을 선택합니다.
- 일수: 일정을 실행할 연도의 월 을 선택합니다.
- 연중 몇 주: 이 필드를 사용하여 일정이 실행되어야 하는 해의 수주를 선언합니다.
- 월: 이 필드를 사용하여 일정이 실행되어야 하는 월의 서수 수를 선언합니다.
- 일 년: 이 필드를 사용하여 일정이 실행되어야 하는 연도의 서수 수를 선언합니다.
- occurrences: Rule 섹션의 양식 필드를 사용하여 선언된 규칙에 따라 인덱싱된 규칙을 필터링하려면 이 필드를 사용합니다.
schedule ending type : 일정이 종료되도록 설정된 시기를 선택하려면 이 필드를 사용합니다.
자세한 내용은 일정에 대한 규칙을 설정한 경우
i Cryostat 문서의 bysetpos 필드에 대한 i Cryostat RFC링크를 참조하십시오.
- 를 클릭합니다. 일정 규칙 요약 페이지가 표시됩니다.
- 규칙을 추가하려면 를 클릭합니다.
를 클릭합니다.
Schedule Exceptions 페이지가 표시됩니다.
10.2.2. 스케줄에 예외 설정 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
Schedule Exceptions 페이지에서 을 클릭합니다.
일정 규칙에 대해 일정 예외를 생성하려면 동일한 형식을 사용합니다.
- 클릭하여 일정과 예외를 모두 저장하고 검토합니다.
11장. 프로젝트 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트는 자동화 컨트롤러에 표시되는 Ansible 플레이북의 논리 컬렉션입니다. 플레이북 및 플레이북 디렉터리를 다양한 방법으로 관리할 수 있습니다.
- 자동화 컨트롤러 서버의 프로젝트 기본 경로 아래에 수동으로 배치하여 다음을 수행합니다.
- 플레이북을 자동화 컨트롤러에서 지원하는 SCM(소스 코드 관리) 시스템에 배치하여 다음을 수행합니다. 여기에는 Git, Subversion, Mercurial 및 Red Hat Insights가 포함됩니다.
Red Hat Insights 프로젝트 생성에 대한 자세한 내용은 Red Hat Ansible Automation Platform 수정을 위한 Red Hat Insights 설정을 참조하십시오.
프로젝트 기본 경로는 /var/lib/awx/projects 입니다. 그러나 시스템 관리자가 수정할 수 있습니다. /etc/tower/conf.d/custom.py 에 구성됩니다.
잘못 설정하면 설치가 비활성화될 수 있으므로 이 파일을 편집할 때 주의하십시오.
프로젝트 페이지에는 현재 사용 가능한 프로젝트 목록이 표시됩니다.
처음에 사용할 수 있는 데모 프로젝트 가 제공됩니다.
나열된 각 프로젝트에 대해 각 프로젝트 옆에 있는 아이콘을 사용하여 최신 SCM 버전
을 가져오거나, 프로젝트를 편집하거나
프로젝트 속성을 복제할 수 있습니다.
관련 작업이 실행되는 동안 프로젝트를 업데이트할 수 있습니다.
대규모 프로젝트(약 10GB)가 있는 경우 /tmp 의 디스크 공간이 문제가 될 수 있습니다.
Status 는 프로젝트의 상태를 나타내며 다음 중 하나일 수 있습니다(특정 상태 유형에 따라 뷰를 필터링할 수도 있음).
보류 중 - 소스 제어 업데이트가 생성되었지만 아직 대기열에 추가되거나 시작되지 않았습니다. 모든 작업(소스 제어 업데이트뿐만 아니라)은 시스템에서 실행할 준비가 될 때까지 보류 중 상태로 유지됩니다. 준비되지 않은 이유는 다음과 같습니다.
- 현재 실행 중인 종속 항목이 있으므로 완료될 때까지 기다려야 합니다.
- 구성된 위치에서 실행할 수 있는 용량이 충분하지 않습니다.
- waiting - 소스 제어 업데이트가 대기열에 있으며 실행 대기 중입니다.
- Running - 현재 소스 제어 업데이트가 진행 중입니다.
- 성공 - 이 프로젝트의 마지막 소스 제어 업데이트가 성공했습니다.
- Failed - 이 프로젝트의 마지막 소스 제어 업데이트가 실패했습니다.
- 오류 - 마지막 소스 제어 업데이트 작업이 전혀 실행되지 않았습니다.
- 취소됨 - 프로젝트의 마지막 소스 제어 업데이트가 취소되었습니다.
- 업데이트되지 않음 - 프로젝트가 소스 제어용으로 구성되어 있지만 업데이트되지 않았습니다.
- OK - 프로젝트가 소스 제어용으로 구성되지 않았으며 올바르게 설치되어 있습니다.
-
누락됨 - 프로젝트가
/var/lib/awx/projects의 프로젝트 기본 경로에 없습니다. 이는 수동 또는 소스 제어 관리 프로젝트에 적용됩니다.
인증 정보 유형 Manual 의 프로젝트는 SCM 유형 인증 정보로 재구성하지 않고 소스 제어 기반 작업을 업데이트하거나 예약할 수 없습니다.
11.1. 새 프로젝트 추가 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 projects라고 하는 플레이북의 논리 컬렉션을 생성할 수 있습니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 프로젝트 페이지에서 프로젝트 창을 시작합니다.
다음 필수 필드에 적절한 세부 정보를 입력합니다.
- 이름 (필수)
- 선택 사항: 설명
- 조직 (필수): 프로젝트에는 하나 이상의 조직이 있어야 합니다. 프로젝트를 생성할 하나의 조직을 선택합니다. 프로젝트가 생성되면 조직을 추가할 수 있습니다.
- 선택 사항: 실행 환경: 실행 환경의 이름을 입력하거나 이 프로젝트를 실행할 기존 실행 환경 목록에서 검색합니다. 자세한 내용은 실행 환경 생성 및 사용을 참조하십시오.
- 소스 제어 유형 (필수): 메뉴에서 이 프로젝트와 관련된 SCM 유형을 선택합니다. 다음 섹션의 옵션은 선택한 유형에 따라 사용할 수 있습니다. 자세한 내용은 소스 제어를 사용하여 플레이북을 수동으로 관리하거나 플레이북 관리를 참조하십시오.
- 선택 사항: 콘텐츠 서명 검증 인증 정보: 이 필드를 사용하여 콘텐츠 확인을 활성화합니다. 프로젝트 동기화 중에 콘텐츠 서명을 확인하는 데 사용할 GPG 키를 지정합니다. 콘텐츠가 변조된 경우 작업이 실행되지 않습니다. 자세한 내용은 프로젝트 서명 및 확인을 참조하십시오.
- 클릭합니다.
추가 리소스
다음은 프로젝트를 소싱하는 방법을 설명합니다.
11.1.1. 플레이북 수동 관리 링크 복사링크가 클립보드에 복사되었습니다!
일반적으로 버전 제어 및 협업 개발에 소스 코드 관리(SCM) 시스템을 통합하는 것이 좋지만 플레이북 파일을 직접 관리해야 하는 경우가 있을 수 있습니다. 이 접근 방식에서는 로컬 파일 시스템에서 플레이북 디렉터리 및 파일을 생성 및 구성하여 적절한 소유권 및 실행 권한을 보장합니다.
프로세스
-
프로젝트 기본 경로 아래에 플레이북을 저장할 하나 이상의 디렉터리를 생성합니다(예:
/var/lib/awx/projects/). - 플레이북 파일을 생성하거나 플레이북 디렉터리에 복사합니다.
- 서비스가 실행되는 것과 동일한 UNIX 사용자 및 그룹이 플레이북 디렉터리 및 파일을 소유하고 있는지 확인합니다.
- 권한이 플레이북 디렉터리 및 파일에 적합한지 확인합니다.
문제 해결
Ansible Playbook 디렉터리를 기본 프로젝트 경로에 추가하지 않은 경우 오류 메시지가 표시됩니다. 이 오류 문제를 해결하려면 다음 옵션 중 하나를 선택합니다.
- 적절한 플레이북 디렉터리를 생성하고 SCM에서 플레이북을 확인합니다.
- 플레이북을 적절한 플레이북 디렉터리에 복사합니다.
11.1.2. 소스 제어를 사용하여 플레이북 관리 링크 복사링크가 클립보드에 복사되었습니다!
소스 제어를 사용하여 플레이북을 관리할 때 다음 옵션 중 하나를 선택합니다.
11.1.2.1. SCM 유형 - Git 및 Subversion을 사용하도록 플레이북 구성 링크 복사링크가 클립보드에 복사되었습니다!
Git 및 Subversion과 같은 SCM(소스 코드 관리) 시스템에서 Ansible 플레이북을 동기화하도록 프로젝트를 구성합니다. SCM과 통합은 자동화 코드에 대한 버전 제어, 협업 기능 및 중앙 집중식 리포지토리를 제공하므로 플레이북을 관리하는 모범 사례입니다. 이러한 단계를 수행하면 사용자 환경이 항상 선택한 SCM에서 직접 최신 버전의 플레이북을 사용하도록 할 수 있습니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 사용할 프로젝트 이름을 클릭합니다.
- 프로젝트 세부 정보 탭에서 클릭합니다.
- 소스 제어 유형 메뉴에서 적절한 옵션(Git 또는 Subversion)을 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- 소스 제어 URL - 툴팁에서 예제를 참조하십시오.
-
선택 사항: 소스 제어 분기/태그/커밋: 체크아웃할 소스 제어(Git 또는 Subversion)의 SCM 분기, 태그, 커밋 해시, 임의의 refs 또는 버전 번호(해당하는 경우)를 입력합니다. 다음 필드에 사용자 정의 refspec을 지정하지 않는 한 일부 커밋 해시 및 참조를 사용할 수 없습니다. 비워 두는 경우 기본값은
HEAD이며 이 프로젝트에 대해 마지막으로 체크아웃된 분기, 태그 또는 커밋입니다. - 소스 제어 참조 사양 - 이 필드는 Git 소스 제어와 관련된 옵션이며, Git에 익숙하고 편안한 고급 사용자만 원격 리포지토리에서 다운로드할 참조를 지정해야 합니다. 자세한 내용은 작업 분기 덮어쓰기를 참조하십시오.
- 소스 제어 인증 정보 - 인증이 필요한 경우 적절한 소스 제어 인증 정보를 선택합니다.
선택 사항: 옵션 - 해당하는 경우 시작 동작을 선택합니다.
- clean - 업데이트를 수행하기 전에 로컬 수정 사항을 제거합니다.
- delete - 업데이트를 수행하기 전에 전체 로컬 리포지토리를 삭제합니다. 리포지토리 크기에 따라 업데이트를 완료하는 데 필요한 시간이 크게 증가할 수 있습니다.
-
하위 모듈 추적 - 최신 커밋을 추적합니다. 툴팁
에 자세한 정보가 있습니다.
- 시작 시 버전 업데이트 - 프로젝트의 버전을 원격 소스 제어의 현재 버전으로 업데이트하고 Ansible Galaxy 지원 또는 컬렉션 지원 에서 역할 디렉터리를 캐싱합니다. 자동화 컨트롤러를 사용하면 로컬 버전이 일치하고 역할 및 컬렉션이 마지막 업데이트와 함께 최신 상태인지 확인합니다. 또한 프로젝트가 동기화할 수 있는 것보다 작업이 더 빨리 생성되는 경우 작업 오버플로를 방지하기 위해 이를 선택하면 캐시 제한 시간을 구성하여 지정된 초 동안 이전 프로젝트 동기화를 캐시할 수 있습니다.
- 분기 덮어쓰기 허용 - 이 프로젝트를 사용하여 프로젝트의 해당 항목 이외의 지정된 SCM 분기 또는 버전으로 시작하는 작업 템플릿 또는 인벤토리 소스를 활성화합니다. 자세한 내용은 작업 분기 덮어쓰기를 참조하십시오.
- 클릭합니다.
11.1.2.2. SCM 유형 - Red Hat Insights를 사용하도록 플레이북 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Insights에서 직접 Ansible 플레이북을 검색하도록 프로젝트를 구성합니다. Red Hat Insights와 통합하면 Red Hat Enterprise Linux 환경에 대한 분석을 통해 식별된 수정 플레이북을 관리하고 배포할 수 있습니다. 이 통합은 식별된 취약점을 해결하고 시스템 구성을 최적화하는 프로세스를 간소화하여 자동화가 모범 사례 및 보안 권장 사항에 맞게 조정되도록 합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 사용할 프로젝트 이름을 클릭합니다.
- 프로젝트 세부 정보 탭에서 클릭합니다.
- 소스 제어 유형 메뉴에서 Red Hat Insights 를 선택합니다.
- Insights 인증 정보 필드에서 Red Hat Insights에 인증을 위한 인증 정보가 필요하므로 Insights와 함께 사용할 적절한 인증 정보를 선택합니다.
선택 사항: 옵션 필드에서 해당하는 경우 시작 동작을 선택합니다.
- clean - 업데이트를 수행하기 전에 로컬 수정 사항을 제거합니다.
- delete - 업데이트를 수행하기 전에 전체 로컬 리포지토리를 삭제합니다. 리포지토리 크기에 따라 업데이트를 완료하는 데 필요한 시간이 크게 증가할 수 있습니다.
- 시작 시 버전 업데이트 - 프로젝트의 버전을 원격 소스 제어의 현재 버전으로 업데이트하고 Ansible Galaxy 지원 또는 컬렉션 지원 의 역할 디렉터리를 캐시합니다. 자동화 컨트롤러를 사용하면 로컬 버전이 일치하고 역할 및 컬렉션이 최신 상태인지 확인합니다. 프로젝트가 동기화할 수 있는 것보다 작업이 더 빨리 생성되는 경우 이를 선택하면 작업 오버플로를 방지하기 위해 특정 시간(초)에 대한 이전 프로젝트 동기화를 캐시하도록 Cache Timeout을 구성할 수 있습니다.
- 클릭합니다.
11.1.2.3. SCM 유형 - 원격 아카이브를 사용하도록 플레이북 구성 링크 복사링크가 클립보드에 복사되었습니다!
원격 아카이브를 사용하는 플레이북을 사용하면 버전이 지정된 아티팩트 또는 릴리스를 생성하는 빌드 프로세스를 기반으로 프로젝트가 단일 아카이브에 해당 프로젝트의 모든 요구 사항을 포함할 수 있습니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 사용할 프로젝트 이름을 클릭합니다.
- 프로젝트 세부 정보 탭에서 클릭합니다.
- 소스 제어 유형 메뉴에서 원격 아카이브 를 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- 소스 제어 URL - GitHub 릴리스 또는 Artifactory 에 저장된 빌드 아티팩트와 같은 원격 아카이브에 대한 URL이 필요하며 사용할 프로젝트 경로에 압축을 풉니다.
- 소스 제어 인증 정보 - 인증이 필요한 경우 적절한 소스 제어 인증 정보를 선택합니다.
선택 사항: 옵션 필드에서 해당하는 경우 시작 동작을 선택합니다.
- clean - 업데이트를 수행하기 전에 로컬 수정 사항을 제거합니다.
- delete - 업데이트를 수행하기 전에 전체 로컬 리포지토리를 삭제합니다. 리포지토리 크기에 따라 업데이트를 완료하는 데 필요한 시간이 크게 증가할 수 있습니다.
- 시작 시 버전 업데이트 - 권장되지 않습니다. 이 옵션은 프로젝트의 버전을 원격 소스 제어의 현재 버전으로 업데이트하고 Ansible Galaxy 지원 또는 컬렉션 지원 의 역할 디렉터리를 캐시합니다.
분기 덮어쓰기 허용 - 권장되지 않습니다. 이 옵션을 사용하면 이 프로젝트를 사용하는 작업 템플릿이 프로젝트의 해당 항목 이외에 지정된 SCM 분기 또는 버전을 사용하여 시작할 수 있습니다.
참고이 소스 제어 유형은 변경되지 않는 아티팩트 개념을 지원하기 위한 것이므로 Galaxy 통합을 비활성화하는 것이 좋습니다(역할의 경우 최소한).
- 클릭합니다.
11.2. 소스 제어를 통한 프로젝트 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트를 정기적으로 업데이트하면 Git, Subversion 또는 기타 통합 SCM 리포지토리에서 변경한 내용을 반영하여 환경에서 플레이북, 역할 및 컬렉션의 최신 버전에 액세스할 수 있습니다. 이 프로세스는 SCM과 Ansible Automation Platform 간의 동기화를 유지 관리하는 데 중요합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
업데이트할 프로젝트 옆에 있는 동기화
아이콘을 클릭합니다.
참고소스 제어를 사용하도록 프로젝트 설정을 추가하면 구성된 소스 제어에서 프로젝트 세부 정보를 가져오는 동기화가 시작됩니다.
- 업데이트 프로세스에 대한 자세한 내용은 Status 열에서 프로젝트의 상태를 클릭합니다. 그러면 작업 섹션의 출력 탭으로 이동합니다.
11.3. 권한 작업 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트(역할 기반 액세스 제어)에 할당되어 프로젝트, 인벤토리, 작업 템플릿 및 기타 요소를 읽고, 변경하고, 관리하는 기능을 제공하는 권한 세트는 권한입니다.
프로젝트 권한에 액세스하려면 프로젝트 페이지의 사용자 액세스 또는 팀 액세스 탭을 선택합니다. 이 화면에는 현재 이 프로젝트에 대한 권한이 있는 사용자 목록이 표시됩니다.
사용자 이름, 이름 또는 성으로 이 목록을 정렬하고 검색할 수 있습니다.
11.3.1. 프로젝트 권한 추가 링크 복사링크가 클립보드에 복사되었습니다!
사용자와 팀이 프로젝트에 액세스해야 하는 권한을 관리합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 업데이트할 프로젝트를 선택하고 User Access 또는 Team Access 탭을 클릭합니다.
- 클릭합니다.
- 추가할 사용자 또는 팀을 선택하고 클릭합니다.
- 이름 옆에 있는 확인란을 클릭하여 목록에서 하나 이상의 사용자 또는 팀을 선택하여 멤버로 추가합니다.
- 를 클릭합니다.
- 선택한 사용자 또는 팀에 부여할 역할을 선택합니다. 리소스에 따라 다양한 옵션을 사용할 수 있습니다.
- 를 클릭하여 선택한 사용자 또는 팀에 역할을 적용하고 멤버로 추가합니다. 각 사용자 및 팀에 할당된 업데이트된 역할이 표시됩니다.
11.3.2. 프로젝트에서 권한 제거 링크 복사링크가 클립보드에 복사되었습니다!
특정 사용자의 역할을 제거합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 업데이트할 프로젝트를 선택하고 User Access 또는 Team Access 탭을 클릭합니다.
-
역할 열에서 사용자 역할 옆에 있는
아이콘을 클릭합니다.
- 확인 창에서 를 클릭하여 연결을 해제합니다.
11.4. Ansible Galaxy 지원 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트 업데이트가 끝나면 자동화 컨트롤러는 < project-top-level-directory>/ 파일을 검색합니다.
roles /requirements.yml 에 있는 roles 디렉터리에서 requirements.yml
이 파일이 있으면 다음 명령이 자동으로 실행됩니다.
ansible-galaxy role install -r roles/requirements.yml -p <project-specific cache location>/requirements_roles -vvv
ansible-galaxy role install -r roles/requirements.yml -p <project-specific cache location>/requirements_roles -vvv
이 파일을 사용하면 자체 프로젝트와 함께 확인할 수 있는 다른 리포지토리 내의 Ansible Galaxy 역할 또는 역할을 참조할 수 있습니다. Ansible Galaxy 액세스를 추가하면 이 결과를 얻기 위해 git 하위 모듈을 생성할 필요가 없습니다. 역할 또는 컬렉션과 함께 SCM 프로젝트를 개인 작업 환경으로 가져와 실행하는 경우 /tmp 내의 프로젝트와 관련된 < private 작업 디렉터리 >가 기본적으로 생성됩니다.
캐시 디렉터리는 글로벌 프로젝트 폴더 내부의 하위 디렉터리입니다. 캐시 위치의 콘텐츠를 < job 개인 디렉터리>/requirements_roles 에 복사할 수 있습니다.
기본적으로 자동화 컨트롤러에는 SCM 프로젝트의 roles/requirements.yml 파일에서 역할을 동적으로 다운로드할 수 있는 시스템 전체 설정이 있습니다. 역할 다운로드 사용 확인란을 선택 해제하여 탐색 패널에서 화면에서 이 설정을 끌 수 있습니다.
프로젝트 동기화가 실행될 때마다 자동화 컨트롤러에서 프로젝트 소스 및 Galaxy 또는 Collections의 역할이 프로젝트에서 최신 상태가 아닌지를 결정합니다. 프로젝트 업데이트는 업데이트 내의 역할을 다운로드합니다.
작업에서 업스트림 역할에 대한 변경 사항을 선택해야 하는 경우 프로젝트를 업데이트하면 이러한 상황이 발생합니다. 역할에 대한 변경 사항은 새 커밋이 provision-role 소스 제어로 푸시되었음을 의미합니다.
이 변경 사항을 작업에 적용하기 위해 새 커밋을 playbooks 리포지토리로 푸시할 필요가 없습니다. 역할을 로컬 캐시에 다운로드하는 프로젝트를 업데이트해야 합니다.
예를 들어, 소스 제어에 두 개의 Git 리포지터리가 있다고 가정합니다. 첫 번째는 플레이북 이며 자동화 컨트롤러의 프로젝트는 이 URL을 가리킵니다. 두 번째는 provision-role 이며 Playbook Git 리포지토리 내부의 roles/requirements.yml 파일에서 참조합니다.
작업은 모든 작업을 실행하기 전에 최신 역할을 다운로드합니다. 역할 및 컬렉션은 성능상의 이유로 로컬로 캐시됩니다. 프로젝트 옵션에서 시작 시 버전 업데이트를 선택하여 각 작업을 실행하기 전에 업스트림 역할을 다시 다운로드해야 합니다.
업데이트는 프로세스에서 동기화보다 훨씬 일찍 수행되므로 오류 및 세부 정보가 더 논리적인 위치에서 더 빠르게 식별됩니다.
requirements.yml 파일의 구문에 대한 자세한 내용 및 예제는 Ansible 문서의 역할 요구 사항 섹션을 참조하십시오.
특별히 노출해야 하는 디렉터리가 있는 경우 탐색 패널 설정 작업의 작업 설정 화면에서 해당 디렉터리를 분리된 작업에 노출하는 경로로 지정할 수 있습니다. 설정 파일에서 다음 항목을 업데이트할 수도 있습니다.
AWX_ISOLATION_SHOW_PATHS = ['/list/of/', '/paths']
AWX_ISOLATION_SHOW_PATHS = ['/list/of/', '/paths']
플레이북에서 AWX_ISOLATION_SHOW_PATHS 에 정의된 키 또는 설정을 사용해야 하는 경우 AWX_ISOLATION_SHOW_PATHS 를 /var/lib/awx/.ssh 에 추가해야 합니다.
설정 파일을 변경한 경우 변경 사항을 저장한 후 automation-controller-service restart 명령을 사용하여 서비스를 다시 시작하십시오.
UI의 작업 설정 창에서 이러한 설정을 구성할 수 있습니다.
11.5. 컬렉션 지원 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 작업 실행에서 프로젝트별 Ansible 컬렉션을 지원합니다. collections/requirements.yml 에서 SCM에 컬렉션 요구 사항 파일을 지정하는 경우 자동화 컨트롤러는 작업을 실행하기 전에 암시적 프로젝트 동기화에 해당 파일에 컬렉션을 설치합니다.
자동화 컨트롤러에는 SCM 프로젝트의 collections/requirements.yml 파일에서 컬렉션을 동적으로 다운로드할 수 있는 시스템 전체 설정이 있습니다. 탐색 패널에서 작업 설정 화면의 → → 에서는 컬렉션 다운로드 사용 확인란을 선택 취소하여 이 설정을 끌 수 있습니다.
역할 및 컬렉션은 성능상의 이유로 로컬로 캐시되고 프로젝트 옵션에서 시작 시 버전 업데이트를 선택하여 다음을 확인합니다.
실행 환경에 컬렉션도 설치된 경우 작업을 실행할 때 프로젝트의 requirements.yml 파일에 지정된 컬렉션이 우선합니다. 이 우선순위는 컬렉션의 버전에 관계없이 적용됩니다. 예를 들어 requirements.yml 에 지정된 컬렉션이 실행 환경 내의 컬렉션보다 오래된 경우 requirements.yml 에 지정된 컬렉션이 사용됩니다.
11.5.1. 자동화 허브와 함께 컬렉션 사용 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 컬렉션 콘텐츠의 기본 소스로 자동화 허브를 사용하려면 자동화 허브 UI에서 API 토큰을 생성해야 합니다. 그런 다음 자동화 컨트롤러에서 이 토큰을 지정합니다.
다음 절차에 따라 프라이빗 자동화 허브 또는 자동화 허브에 연결합니다. 유일한 차이점은 지정하는 URL입니다.
프로세스
- https://console.redhat.com/ansible/automation-hub/token 로 이동합니다.
- 을 클릭합니다.
-
복사
아이콘을 클릭하여 API 토큰을 클립보드에 복사합니다.
다음 옵션 중 하나를 선택하여 인증 정보를 생성합니다.
자동화 허브를 사용하려면 복사된 토큰을 사용하고 토큰 페이지의 서버 URL 및 SSO URL 필드에 표시된 URL 을 가리켜 자동화 허브 인증 정보를 생성합니다.
-
Galaxy 서버 URL =
https://console.redhat.com/ansible/automation-hub/token
-
Galaxy 서버 URL =
프라이빗 자동화 허브를 사용하려면 다음과 같이 프라이빗 자동화 허브의 Repo Management 대시보드에서 검색된 토큰을 사용하여 자동화 허브 인증 정보를 생성합니다.
다른 네임스페이스 또는 컬렉션을 사용하여 다른 리포지토리를 생성할 수 있습니다. 자동화 허브의 리포지토리마다 다른 인증 정보를 생성해야 합니다.
/https://$<hub_url>/api/galaxy/content/<repo 형식으로 UI의 Ansible CLI URL 을인증 정보 생성 의 Galaxy Server URL 필드로 복사합니다.UI 관련 지침은 자동화 허브의 Red Hat 인증, 검증 및 Ansible Galaxy 콘텐츠를 참조하십시오.
콘텐츠를 동기화할 조직으로 이동하여 새 인증 정보를 조직에 추가합니다. 이를 통해 각 조직을 콘텐츠를 사용하려는 인증 정보 또는 리포지토리와 연결할 수 있습니다.
예
두 개의 리포지토리가 있습니다.
-
prod:
네임스페이스 1및네임스페이스 2, 각각 컬렉션A및B를 사용하므로namespace1.collectionA:v2.0.0및namespace2.collectionB:v2.0.0 Stage
:A만 컬렉션이 있는네임스페이스 1이므로, Prod 및 Stage 에 대한 리포지토리 URL이 있습니다.각각에 대한 인증 정보를 생성할 수 있습니다.
그런 다음 다양한 조직에 서로 다른 수준의 액세스 권한을 할당할 수 있습니다. 예를 들어 운영 조직은 Prod 리포지토리에만 액세스할 수 있는 반면 두 리포지토리에 모두 액세스할 수 있는
Developers조직을 생성할 수 있습니다.UI별 지침은 프라이빗 자동화 허브의 컨테이너 리포지토리에 대한 사용자 액세스 구성 을 참조하십시오.
-
prod:
- 자동화 허브에 자체 서명된 인증서가 있는 경우 토글을 사용하여 작업 설정에서 Ignore Ansible Galaxy SSL Certificate Verification 설정을 활성화합니다. 서명된 인증서를 사용하는 자동화 허브의 경우 토글을 사용하여 대신 비활성화합니다. 이는 글로벌 설정입니다.
-
소스 리포지토리가
collections/requirements.yml파일에 있는 요구 사항 파일의 필수 컬렉션을 지정하는 프로젝트를 생성합니다. 사용할 구문에 대한 자세한 내용은 Ansible 문서 의 Ansible 컬렉션 사용을 참조하십시오. -
프로젝트 목록 보기에서 동기화
아이콘을 클릭하여 이 프로젝트를 업데이트합니다. 자동화 컨트롤러는 collections/requirements.yml파일에서 Galaxy 컬렉션을 가져와서 변경된 것으로 보고합니다. 컬렉션은 이 프로젝트를 사용하는 모든 작업 템플릿에 설치됩니다.
Galaxy 또는 Collections의 업데이트가 필요한 경우 필요한 역할을 다운로드하는 동기화가 수행되어 /tmp 파일에 더 많은 공간이 사용됩니다. 대규모 프로젝트(약 10GB)가 있는 경우 /tmp 의 디스크 공간이 문제가 될 수 있습니다.
추가 리소스
컬렉션에 대한 자세한 내용은 Ansible 컬렉션 사용을 참조하십시오.
Red Hat이 직접 설치를 자동화하는 데 사용할 수 있는 이러한 공식 컬렉션 중 하나를 게시하는 방법에 대한 자세한 내용은 AWX Ansible Collection 설명서를 참조하십시오.
12장. 프로젝트 서명 및 확인 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트 서명 및 확인을 통해 프로젝트 디렉터리의 파일에 서명한 다음 내용이 어떤 방식으로든 변경되었는지 또는 프로젝트에서 파일이 예기치 않게 추가 또는 제거되었는지 확인할 수 있습니다. 이렇게 하려면 서명을 위한 개인 키와 확인을 위한 일치하는 공개 키가 필요합니다.
12.1. 프로젝트 서명 정보 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트 유지 관리자의 경우 콘텐츠에 서명하는 데 지원되는 방법은 제공된 CLI( 명령줄 인터페이스)를 사용하여 ansible- sign 유틸리티를 사용하는 것입니다.
CLI는 GPG( GNU Privacy Guard )와 같은 암호화 기술을 사용하여 프로젝트 내의 파일이 어떤 방식으로든 변조되지 않았는지 확인하는 것을 목표로 합니다. 현재 GPG는 서명 및 유효성 검사에 지원되는 유일한 수단입니다.
자동화 컨트롤러는 서명된 콘텐츠를 확인하는 데 사용됩니다. 일치하는 공개 키가 서명된 프로젝트와 연결되면 자동화 컨트롤러에서 서명 중에 포함된 파일이 변경되지 않았는지 확인하고 파일이 예기치 않게 추가 또는 제거되었는지 확인합니다. 서명이 유효하지 않거나 파일이 변경된 경우 프로젝트가 업데이트되지 않고 프로젝트를 사용하는 작업이 시작되지 않습니다. 프로젝트의 확인 상태는 수정되지 않은 안전한 콘텐츠만 작업에서 실행할 수 있도록 합니다.
리포지토리가 이미 서명 및 확인을 위해 구성된 경우 프로젝트 변경을 위한 일반적인 워크플로는 다음과 같습니다.
- 프로젝트 리포지토리가 이미 설정되어 있으며 파일을 변경하려고 합니다.
다음 명령을 변경하고 실행합니다.
ansible-sign project gpg-sign /path/to/project
ansible-sign project gpg-sign /path/to/projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 체크섬 매니페스트를 업데이트하고 서명합니다.
- 변경 사항, 업데이트된 체크섬 매니페스트, 서명을 리포지토리에 커밋합니다.
프로젝트를 동기화하고 자동화 컨트롤러에서 새 변경 사항을 가져오고, 자동화 컨트롤러의 프로젝트와 연결된 공개 키가 체크섬 매니페스트가 서명된 개인 키와 일치하는지 확인한 다음(이렇게 하면 체크섬 매니페스트 자체를 변조하지 않음) 매니페스트에서 각 파일의 체크섬을 다시 계산하여 체크섬이 변경되지 않았는지 확인합니다(따라서 파일이 변경되지 않음). 또한 모든 파일이 다음에 대한 책임이 있는지 확인합니다.
파일은 MANIFEST.in 파일에 포함되거나 제외되어야 합니다. 이 파일에 대한 자세한 내용은 프로젝트 서명 을 참조하십시오. 파일이 예기치 않게 추가되거나 제거된 경우 확인에 실패합니다.
12.2. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
RHEL 노드를 다음과 같이 올바르게 구독해야 합니다.
- baseos 및 appstream 리포지토리가 포함된 RHEL 서브스크립션을 활성화해야 합니다.
Red Hat Ansible Automation Platform 서브스크립션 및 적절한 채널을 활성화해야 합니다.
ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms for RHEL 8 ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms for RHEL 9
ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms for RHEL 8 ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms for RHEL 9Copy to Clipboard Copied! Toggle word wrap Toggle overflow
콘텐츠에 서명하려면 유효한 GPG 공용 또는 개인 키 쌍이 필요합니다. 자세한 내용은 GPG 키 쌍을 만드는 방법을 참조하십시오.
GPG 키에 대한 자세한 내용은 GnuPG 설명서 를 참조하십시오.
다음 명령을 사용하여 기본 GnuPG 인증 키에 유효한 GPG 키 쌍이 있는지 확인합니다.
gpg --list-secret-keys
gpg --list-secret-keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령에서 출력을 생성하지 않거나 한 줄의 출력을 생성하지 않으면
trustdb가 생성된후 기본 키링에 시크릿 키가 없습니다. 이 경우 GPG 키 쌍을 만드는 방법을 참조하여 진행하기 전에 새 키 쌍을 만드는 방법을 알아봅니다. 다른 출력을 생성하는 경우 유효한 시크릿 키가 있으며ansible-sign을 사용할 준비가 된 것입니다.
12.3. 자동화 컨트롤러에 GPG 키 추가 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 콘텐츠 서명 및 검증에 GPG 키를 사용하려면 CLI에서 다음 명령을 실행하여 추가합니다.
gpg --list-keys gpg --export --armour <key fingerprint> > my_public_key.asc
$ gpg --list-keys
$ gpg --export --armour <key fingerprint> > my_public_key.asc
- 탐색 패널에서 → 선택합니다.
- 클릭합니다.
- 새 인증 정보에 의미 있는 이름을 지정합니다(예: "인프라 팀 공개 GPG 키").
- Credential type 필드에서 GPG 공개 키 를 선택합니다.
-
찾아보기 를 클릭하여 공개 키 파일을 찾아서 선택합니다(예:
my_public_key.asc). 클릭합니다.
프로젝트 <
ug_projects_add>에서 이 인증 정보를 선택할 수 있으며 콘텐츠 확인은 향후 프로젝트 동기화에서 자동으로 수행됩니다.
프로젝트 캐시 SCM 시간 초과를 사용하여 자동화 컨트롤러에서 서명된 콘텐츠를 다시 검증할 빈도를 제어합니다. 시작 시(해당 프로젝트를 사용하도록 구성된 작업 템플릿의 경우) 캐시 시간 초과 설정을 활성화하여 마지막 업데이트 이후 N 초가 경과한 후 업데이트하도록 설정할 수 있습니다. 유효성 검사가 너무 자주 실행되는 경우 프로젝트의 옵션 세부 정보 보기의 캐시 제한 시간 필드에 시간을 지정하여 프로젝트 업데이트 발생 빈도를 줄일 수 있습니다.
12.4. ansible-sign CLI 유틸리티 설치 링크 복사링크가 클립보드에 복사되었습니다!
ansible-sign 유틸리티를 사용하여 프로젝트에 서명하고 프로젝트의 서명 여부를 확인할 수 있는 옵션을 제공합니다.
프로세스
다음 명령을 실행하여
ansible-sign을 설치합니다.dnf install ansible-sign
$ dnf install ansible-signCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여
ansible-sign이 성공적으로 설치되었는지 확인합니다.ansible-sign --version
$ ansible-sign --versionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 유사한 출력은
ansible-sign을 성공적으로 설치했음을 나타냅니다.ansible-sign 0.1
ansible-sign 0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. 프로젝트에 서명 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트에 서명하려면 Ansible 프로젝트 디렉터리가 필요합니다. 프로젝트 디렉터리 구조에 대한 자세한 내용은 Ansible 문서의 샘플 Ansible 설정을 참조하십시오.
다음 샘플 프로젝트에는 인벤토리 파일과 플레이북 디렉터리에 있는 두 개의 작은 플레이북이라는 매우 간단한 구조가 있습니다.
사용된 명령은 작업 디렉터리가 프로젝트의 루트라고 가정합니다. Ansible-sign 프로젝트 명령은 프로젝트 루트 디렉터리를 마지막 인수로 사용합니다.
현재 작업 디렉터리를 표시하려면 . 를 사용합니다.
Ansible-sign 은 프로젝트의 모든 보안 파일의 체크섬(SHA256)을 사용하고 체크섬 매니페스트 파일로 컴파일한 다음 해당 매니페스트 파일에 서명하여 콘텐츠를 변조하지 않도록 보호합니다.
콘텐츠에 서명하려면 프로젝트 루트 디렉터리에 보호할 파일을 ansible-sign 에 알리는 MANIFEST.in 파일을 생성합니다.
내부적으로 ansible-sign 은 Python의 distlib 라이브러리의 distlib.manifest 모듈을 사용하므로 MANIFEST.in 은 이 라이브러리에서 지정하는 구문을 따라야 합니다. MANIFEST.in 파일 지시문에 대한 설명은 Python 패키징 사용자 가이드를 참조하십시오.
샘플 프로젝트에서 두 개의 지시문이 포함되어 결과적으로 다음 MANIFEST.in 파일이 생성됩니다.
include inventory recursive-include playbooks *.yml
include inventory
recursive-include playbooks *.yml
이 파일을 사용하여 체크섬 매니페스트 파일을 생성하고 서명하십시오. 다음 두 단계는 모두 단일 ansible-sign 명령으로 수행됩니다.
ansible-sign project gpg-sign .
$ ansible-sign project gpg-sign .
실행에 성공하면 다음과 유사한 출력이 표시됩니다.
[OK ] GPG signing successful! [NOTE ] Checksum manifest: ./.ansible-sign/sha256sum.txt [NOTE ] GPG summary: signature created
[OK ] GPG signing successful!
[NOTE ] Checksum manifest: ./.ansible-sign/sha256sum.txt
[NOTE ] GPG summary: signature created
이제 프로젝트에 서명되었습니다.
gpg-sign 하위 명령은 project 하위 명령에 있습니다.
프로젝트 콘텐츠에 서명하기 위해 모든 명령은 ansible-sign 프로젝트 로 시작합니다.
모든 ansible-sign 프로젝트 명령은 프로젝트 루트 디렉터리 . 를 최종 인수로 사용합니다.
Ansible-sign 은 기본 인증 키를 사용하고 프로젝트에 서명하기 위해 찾을 수 있는 첫 번째 사용 가능한 시크릿 키를 찾습니다. --fingerprint 옵션과 함께 사용할 특정 시크릿 키를 지정하거나 --gnupg-home 옵션을 사용하여 완전히 독립적인 GPG 홈 디렉터리도 지정할 수 있습니다.
데스크탑 환경을 사용하는 경우 GnuPG는 시크릿 키의 암호를 자동으로 입력하라는 메시지를 표시합니다.
이 기능이 작동하지 않거나 데스크탑 환경(예: SSH를 통해) 없이 작업하는 경우 gpg-sign 후 -p --prompt-passphrase 플래그를 사용하면 ansible-sign 이 대신 암호를 입력하라는 메시지가 표시됩니다.
.ansible-sign 디렉터리가 프로젝트 디렉터리에 생성되었습니다. 이 디렉터리에는 체크섬 매니페스트 및 GPG 분리 서명이 포함되어 있습니다.
12.6. 프로젝트 확인 링크 복사링크가 클립보드에 복사되었습니다!
서명된 Ansible 프로젝트가 변경되지 않았는지 확인하려면 ansible-sign 을 사용하여 서명이 유효한지 여부와 파일의 체크섬이 해당 체크섬 매니페스트와 일치하는지 확인할 수 있습니다. ansible-sign 프로젝트 gpg-verify 명령을 사용하여 이러한 두 조건을 자동으로 확인할 수 있습니다.
ansible-sign project gpg-verify . [OK ] GPG signature verification succeeded. [OK ] Checksum validation succeeded.
$ ansible-sign project gpg-verify .
[OK ] GPG signature verification succeeded.
[OK ] Checksum validation succeeded.
기본적으로 ansible-sign 에서는 기본 GPG 인증 키를 사용하여 일치하는 공개 키를 찾습니다. --keyring 옵션을 사용하여 인증 키 파일을 지정하거나 --gnugpg-home 옵션을 사용하여 다른 GPG 홈을 지정할 수 있습니다.
어떤 이유로든 확인이 실패하면 원인을 디버깅하는 데 도움이 되는 정보가 표시됩니다. 명령에서 ansible-sign 직후 글로벌 --debug 플래그를 전달하여 더 자세한 정보를 활성화할 수 있습니다.
GPG 인증 정보가 프로젝트에서 사용되는 경우 향후 프로젝트 동기화에서 콘텐츠 확인이 자동으로 수행됩니다.
12.7. 자동화 서명 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 또는 Jenkins와 같은 신뢰할 수 있는 CI( 지속적 통합 ) 환경이 있는 환경에서는 서명 프로세스를 자동화할 수 있습니다.
예를 들어 선택한 CI 플랫폼에 GPG 개인 키를 시크릿으로 저장하고 CI 환경에서 GnuPG로 가져올 수 있습니다. 그런 다음 일반 CI 환경 내에서 서명 워크플로를 통해 실행할 수 있습니다.
GPG를 사용하여 프로젝트에 서명할 때 ANSIBLE_SIGN_GPG_PASSPHRASE 환경 변수를 서명 키의 암호로 설정할 수 있습니다. 이는 CI 파이프라인에서 삽입 및 마스크 또는 보안될 수 있습니다.
시나리오에 따라 ansible-sign 은 서명 및 확인 중에 다른 종료 코드로 돌아갑니다. CI 환경이 실패에 따라 다르게 작동할 수 있으므로 이는 CI 및 자동화의 맥락에서도 유용할 수 있습니다. 예를 들어 일부 오류에 대한 경고를 보낼 수 있지만 다른 오류에는 자동으로 실패합니다.
다음은 ansible-sign 에서 사용되는 현재 종료 코드이며 안정적인 것으로 간주될 수 있습니다.
| 종료 코드 | 대략적인 의미 | 시나리오 예 |
|---|---|---|
| 0 | 성공 |
|
| 1 | 일반적인 실패 |
|
| 2 | 체크섬 확인 실패 |
|
| 3 | 서명 확인 실패 |
|
| 4 | 서명 프로세스 실패 |
|
13장. 토폴로지 보기 링크 복사링크가 클립보드에 복사되었습니다!
메시 토폴로지가 이미 배포된 경우 토폴로지 보기를 사용하여 노드 유형, 노드 상태 및 각 노드에 대한 특정 세부 정보를 확인합니다.
자동화 컨트롤러 UI에서 토폴로지 뷰어에 액세스하려면 시스템 관리자 권한이 있어야 합니다.
VM 기반 설치의 자동화 메시에 대한 자세한 내용은 VM 환경의 자동화 메시를 참조하십시오.
Operator 기반 설치의 자동화 메시에 대한 자세한 내용은 관리 클라우드 또는 운영자 환경에 대한 자동화 메시를 참조하십시오.
13.1. 토폴로지 뷰어 액세스 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차를 사용하여 자동화 컨트롤러 UI에서 토폴로지 뷰어에 액세스합니다.
프로세스
- 탐색 패널에서 → → 선택합니다. 토폴로지 보기 가 열리고 각 수신기 노드가 서로 연결되는 방법에 대한 그래픽 표현이 표시됩니다.
확대/축소 수준을 조정하거나 그래픽 보기를 조작하려면 제어 아이콘(
), 확대/축소(
), 펼치기(
)를 사용하고 툴바에서
)을 설정합니다.
또한 클릭하고 드래그하여 회전할 수 있습니다. 마우스 또는 트랙패드를 사용하여 확대/축소할 수 있습니다. 화면 맞춤 기능은 화면에 맞게 그래픽의 크기를 자동으로 조정하고 중앙에 배치합니다. 이는 전체 메시를 보고 싶은 경우 특히 유용합니다.
뷰를 기본 뷰로 재설정하려면 재설정 보기(
) 아이콘을 클릭합니다.
표시되는 노드 유형을 확인하려면 범례 를 참조하십시오.
VM 기반 설치의 경우 컨트롤 및 실행 플레인 을 참조하십시오.
Operator 기반 설치의 경우 각 노드 유형에 대한 자세한 내용은 컨트롤 및 실행 플레인 을 참조하십시오.
범례는
노드 상태를 노드의 상태를 나타내는 색상으로 <node_statuses>를 표시합니다. 범례의 오류 상태에는 Unavailable 상태(인스턴스 목록 보기에 표시됨)와 이후 버전의 자동화 컨트롤러에서 발생하는 모든 향후 오류 조건이 포함됩니다.다음 링크 상태도 범례에 표시됩니다.
- 설정됨: 준비, 사용 불가능 또는 비활성화 된 노드 간 피어 연결을 나타내는 링크 상태입니다.
- 추가: 메시 토폴로지에 선택한 노드 간 피어 연결을 나타내는 링크 상태입니다.
- 제거: 토폴로지에서 제거되도록 선택한 노드 간 피어 연결을 나타내는 링크 상태입니다.
- 노드 위로 마우스를 가져가면 즉시 연결된 노드(피어)를 표시하거나 노드를 클릭하여 호스트 이름, 노드 유형 및 상태와 같은 세부 정보를 검색합니다.
다음 예제와 같이 해당 노드에 대한 자세한 정보를 제공하는 세부 정보 페이지로 리디렉션되도록 표시된 세부 정보 페이지에서 인스턴스 호스트 이름에 대한 링크를 클릭합니다.
세부 정보 페이지를 사용하여 인스턴스를 제거하거나 필요에 따라 인스턴스에서 상태 점검을 실행하거나 인스턴스에서 작업을 할당 해제할 수 있습니다. 기본적으로 작업을 각 노드에 할당할 수 있습니다. 그러나 노드에서 실행 중인 작업이 없는 경우 해당 노드를 비활성화하여 제외할 수 있습니다.
- 새 노드 생성 및 메시 스케일링에 대한 자세한 내용은 인스턴스를 사용하여 용량 관리를 참조하십시오.
14장. 인벤토리 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Ansible Automation Platform은 인벤토리 파일을 사용하여 논리적으로 구성된 인프라의 관리 노드 또는 호스트 목록에 대해 작동합니다. Red Hat Ansible Automation Platform 설치 프로그램 인벤토리 파일을 사용하여 설치 시나리오를 지정하고 Ansible에 대한 호스트 배포를 설명할 수 있습니다. 인벤토리 파일을 사용하면 Ansible에서 단일 명령으로 많은 수의 호스트를 관리할 수 있습니다. 또한 인벤토리를 사용하면 지정해야 하는 명령줄 옵션 수를 줄임으로써 Ansible을 더 효율적으로 사용할 수 있습니다. 인벤토리는 그룹으로 나뉩니다. 이러한 그룹에는 호스트가 포함됩니다.
그룹은 자동화 컨트롤러에 호스트 이름을 입력하거나 지원되는 클라우드 공급자 중 하나에서 수동으로 가져올 수 있습니다.
사용자 지정 동적 인벤토리 스크립트 또는 자동화 컨트롤러에서 아직 지원되지 않는 클라우드 공급자가 있는 경우 이를 자동화 컨트롤러로 가져올 수도 있습니다.
자세한 내용은 자동화 실행 구성에서 인벤토리 파일 가져오기 를 참조하십시오.
탐색 패널에서 → → 를 선택합니다. 인벤토리 창에는 현재 사용 가능한 인벤토리 목록이 표시됩니다.
인벤토리 세부 정보 페이지에는 다음이 포함됩니다.
- name: 인벤토리 이름입니다.
상태
상태는 다음과 같습니다.
- 성공: 인벤토리 소스 동기화가 성공적으로 완료되면
- disabled: 인벤토리에 인벤토리 소스가 추가되지 않음
- 오류: 인벤토리 소스 동기화가 오류와 함께 완료된 경우
- 유형: 표준 인벤토리, 스마트 인벤토리 또는 구성된 인벤토리인지를 나타냅니다.
Organization: 인벤토리가 속한 조직입니다. 선택한 인벤토리에 다음 작업을 수행할 수 있습니다.
-
편집
: 선택한 인벤토리의 속성 편집
-
중복
: 새 인벤토리를 생성하기 위한 템플릿으로 기존 인벤토리 복사본 만들기
- 인벤토리 삭제: 선택한 인벤토리 삭제
-
편집
인벤토리 이름을 클릭하여 선택한 인벤토리에 대한 세부 정보 페이지를 표시합니다. 이 페이지가 인벤토리의 그룹 및 호스트를 표시합니다.
14.1. 스마트 인벤토리 링크 복사링크가 클립보드에 복사되었습니다!
스마트 인벤토리는 저장된 검색으로 정의된 호스트 컬렉션으로, 표준 인벤토리처럼 볼 수 있으며 작업 실행과 함께 쉽게 사용할 수 있습니다. 조직 관리자에게는 조직의 인벤토리에 대한 관리자 권한이 있으며 스마트 인벤토리를 생성할 수 있습니다.
스마트 인벤토리는 KIND=smart 로 식별됩니다.
검색에 사용되는 것과 동일한 방법을 사용하여 스마트 인벤토리를 정의할 수 있습니다. 인벤토리 소스 는 인벤토리와 직접 연결됩니다.
스마트 인벤토리는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 개선 사항 및 교체를 위해 구성된 인벤토리로 이동하는 것이 좋습니다.
인벤토리 모델에는 기본적으로 비어 있지만 스마트 인벤토리에 대해 적절하게 설정된 다음과 같은 새 필드가 있습니다.
-
스마트 인벤토리에 대해
kind가smart로 설정됩니다. -
host_filter가 AND로 설정되어 스마트 인벤토리에 대해smart로 설정됩니다.
호스트 모델에는 호스트가 연결된 모든 스마트 인벤토리 세트를 식별하는 관련 끝점인 smart_inventories 가 있습니다. 멤버십 테이블은 작업이 스마트 인벤토리에 대해 실행될 때마다 업데이트됩니다.
멤버십을 더 자주 업데이트하려면 AWX_REBUILD_SMART_MEMBERSHIP 파일 기반 설정을 True 로 변경할 수 있습니다. (기본값은 False입니다.) 이렇게 하면 다음 이벤트가 발생하는 경우 멤버십이 업데이트됩니다.
- 새 호스트가 추가됨
- 기존 호스트가 수정됨(업데이트 또는 삭제됨)
- 새 스마트 인벤토리가 추가됨
- 기존 스마트 인벤토리가 수정됨(업데이트 또는 삭제됨)
편집할 수 없는 인벤토리를 볼 수 있습니다.
- 인벤토리 소스 동기화로 생성된 호스트 및 그룹의 이름입니다.
- 그룹 레코드는 편집하거나 이동할 수 없습니다.
일반 인벤토리와 마찬가지로 스마트 인벤토리 호스트 끝점(/inventories/N/hosts/)에서 호스트를 생성할 수 없습니다. 스마트 인벤토리 관리자는 이름, 설명, 변수, 삭제 기능과 같은 필드를 편집할 수 있는 권한이 있지만, 이는 스마트 인벤토리에 포함된 호스트(다른 인벤토리에 기본 멤버십이 있는)에 영향을 미치기 때문에 host_filter 를 수정할 수 있는 권한이 없습니다.
host_filter 는 스마트 인벤토리 조직 내부의 인벤토리 내부의 호스트에만 적용됩니다.
host_filter 를 수정하려면 인벤토리 조직의 조직 관리자여야 합니다. 조직 관리자에게는 조직 내부의 모든 인벤토리에 대한 암시적 "관리자" 액세스 권한이 있으므로 아직 소유하지 않은 권한은 전달되지 않습니다.
스마트 인벤토리 관리자는 다른 사용자(조직 관리자가 아닌 사용자)에게 스마트 인벤토리에 대한 "사용" 및 "임시"와 같은 권한을 부여할 수 있습니다. 이러한 작업에서는 다른 표준 인벤토리와 마찬가지로 역할에 표시된 작업을 허용합니다. 그러나 (다른 인벤토리에 있는) 호스트에는 특별한 권한을 부여하지 않습니다. 호스트에 대한 직접 읽기 권한을 허용하지 않거나 스마트 인벤토리 호스트 목록에 있는 호스트를 계속 볼 수 있지만 /#/hosts/ 아래의 추가 호스트를 볼 수 있도록 허용하지 않습니다.
경우에 따라 다음을 수정할 수 있습니다.
- 인벤토리 소스를 사용하여 인벤토리에 수동으로 생성된 새 호스트입니다.
- 인벤토리 소스 동기화로 생성된 그룹입니다.
- 호스트 및 그룹의 변수는 로컬 시스템 관리자로도 변경할 수 없습니다.
스마트 인벤토리와 연결된 호스트는 조회 시 표시됩니다. 스마트 인벤토리 결과에 호스트 이름이 동일한 호스트가 두 개 이상 포함된 경우 일치하는 호스트 중 하나만 호스트 ID로 정렬되어 스마트 인벤토리의 일부로 포함됩니다.
14.1.1. 스마트 호스트 필터 링크 복사링크가 클립보드에 복사되었습니다!
검색 필터를 사용하여 인벤토리의 호스트를 채울 수 있습니다. 이 기능은 팩트 검색 기능을 사용합니다.
자동화 컨트롤러는 use_fact_cache=True 가 작업별 템플릿을 설정할 때마다 데이터베이스에 Ansible 플레이북에서 생성한 팩트를 저장합니다. 새 사실은 기존 사실과 병합되고 호스트별로 제공됩니다. 이러한 저장된 팩트는 GET 쿼리 매개변수 host_filter 를 사용하여 /api/v2/hosts 엔드포인트로 호스트를 필터링하는 데 사용할 수 있습니다.
예를 들면 다음과 같습니다.
/api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8
/api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8
host_filter 매개변수는 다음을 허용합니다.
- ()로 그룹화
부울 및 연산자 사용
-
__관계형 필드에서 관련 필드를 참조 -
__은 JSON 키 경로에서 키를 분리하기 위해 ansible_facts에 사용됩니다. - '[]는 경로 사양에서 json 배열을 표시하는 데 사용됩니다.
-
""는 값에 공백이 필요한 경우 값에 사용할 수 있습니다.
-
-
"classic" Django 쿼리가
host_filter에 포함될 수 있습니다.
예:
호스트 이름 , 그룹 이름, Ansible 팩트 로 host _filter 를 검색할 수 있습니다.
그룹 검색 형식은 다음과 같습니다.
groups.name:groupA
groups.name:groupA
사실 검색 형식은 다음과 같습니다.
ansible_facts.ansible_fips:false
ansible_facts.ansible_fips:false
호스트 이름 및 호스트 설명으로 구성된 스마트 검색을 수행할 수도 있습니다.
host_filter=name=my_host
host_filter=name=my_host
host_filter 의 검색 용어가 문자열 유형인 경우 값을 숫자(예: 2.66) 또는 JSON 키워드(예: null,true 또는 false)로 만들려면 컨트롤러에서 문자열을 구문 분석하지 못하도록 값 주위에 큰따옴표를 추가합니다.
host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"
host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"
14.2. 구성된 인벤토리 링크 복사링크가 클립보드에 복사되었습니다!
입력 인벤토리 목록에서 새 인벤토리(구성된 인벤토리)를 생성할 수 있습니다.
구성된 인벤토리에는 입력 인벤토리에 호스트 및 그룹의 사본이 있어 많은 인벤토리에서 서버 그룹을 대상으로 하는 작업을 수행할 수 있습니다. 그룹 및 hostvars는 인벤토리 콘텐츠에 추가할 수 있으며 호스트를 필터링하여 구성된 인벤토리의 크기를 제한할 수 있습니다.
구성된 인벤토리는 ansible.builtin.constructed 인벤토리 모델을 사용합니다.
구성된 인벤토리의 주요 요소는 다음과 같습니다.
- 일반 Ansible hostvars 네임스페이스를 사용할 수 있습니다.
- 그룹 제공
구성된 인벤토리는 source_vars 를 입력으로 사용하고 input_inventories 를 새 인벤토리로 변환하고 그룹으로 완료합니다. 그런 다음 제한 필드에서 그룹(기존 또는 생성)을 참조하여 생성된 호스트 수를 줄일 수 있습니다.
이러한 호스트 속성을 기반으로 그룹을 구성할 수 있습니다.
- RHEL 메이저 또는 마이너 버전
- Windows 호스트
- 특정 지역에 태그된 클라우드 기반 인스턴스
- 기타
이후 섹션에 설명된 예제는 입력 인벤토리 구조로 구성됩니다.
14.2.1. 그룹 이름 및 변수 필터링 링크 복사링크가 클립보드에 복사되었습니다!
그룹 및 변수 조합을 필터링할 수 있습니다. 예를 들어 그룹 변수 값과 일치하고 호스트 변수 값과 일치하는 호스트를 필터링할 수 있습니다.
이 필터를 실행하는 방법은 다음 두 가지가 있습니다.
-
두 개의 그룹(그룹 변수 및 호스트 변수 값과 일치하는 다른 그룹)을 정의합니다.
제한패턴을 사용하여 두 그룹에 있는 호스트를 반환합니다. 권장되는 접근 방식입니다. -
하나의 그룹을 정의합니다. 정의에 그룹 및 호스트 변수가 특정 값과 일치해야 하는 조건을 포함합니다.
제한패턴을 사용하여 새 그룹의 모든 호스트를 반환합니다.
예 14.1. 예
다음 인벤토리 파일은 4개의 호스트를 정의하고 그룹 및 호스트 변수를 설정합니다. 제품 그룹, 유지 그룹을 정의하고 두 호스트를 종료 상태로 설정합니다.
목표는 종료되는 프로덕션 호스트만 반환하는 필터를 생성하는 것입니다.
여기에서 목표는 account_alias 변수가 product_dev 인 그룹에 존재하는 종료 호스트만 반환하는 것입니다. 여기에는 두 가지 방법이 있으며, 둘 다 YAML 형식으로 표시됩니다. 제안 된 첫 번째 것이 권장됩니다.
2 개의 그룹을 구성, 교집합으로 제한:
source_vars:plugin: constructed strict: true groups: is_shutdown: state | default("running") == "shutdown" product_dev: account_alias == "product_dev"plugin: constructed strict: true groups: is_shutdown: state | default("running") == "shutdown" product_dev: account_alias == "product_dev"Copy to Clipboard Copied! Toggle word wrap Toggle overflow limit:is_shutdown:&product_dev이 구성된 인벤토리 입력은 두 카테고리 모두에 대한 그룹을 생성하고
제한(호스트 패턴)을 사용하여 두 그룹의 교차점에 있는 호스트만 반환합니다. 이 항목은 패턴(대상 호스트 및 그룹 )에 설명되어 있습니다.변수가 정의되거나 정의되지 않은 경우(호스트에 따라) 기본값을 지정할 수 있습니다. 예를 들어 정의하지 않을 때 사용해야 하는 값을 알고 있는 경우
| default("running")을 사용합니다. 이 방법은 디버깅 팁에 설명된 대로 디버깅 에 도움이 됩니다.1 그룹을 구성, 그룹으로 제한:
source_vars:plugin: constructed strict: true groups: shutdown_in_product_dev: state | default("running") == "shutdown" and account_alias == "product_dev"plugin: constructed strict: true groups: shutdown_in_product_dev: state | default("running") == "shutdown" and account_alias == "product_dev"Copy to Clipboard Copied! Toggle word wrap Toggle overflow limit:shutdown_in_product_dev이 입력은 두 기준과 일치하는 호스트만 포함하는 하나의 그룹을 생성합니다. 제한은 자체적으로 그룹 이름일 뿐이며 host2 를 반환합니다. 이전 방식과 동일합니다.
14.2.2. 디버깅 팁 링크 복사링크가 클립보드에 복사되었습니다!
템플릿 문제를 디버깅할 수 있도록 strict 매개변수를 true 로 설정하는 것이 중요합니다. 템플릿이 렌더링되지 않으면 구성된 인벤토리에 대한 연결된 인벤토리 업데이트에서 오류가 발생합니다.
오류가 발생하면 상세 정보를 늘리십시오.
| default("running") 과 같은 기본값을 제공하는 것은 Ansible에서 Jinja2 템플릿을 일반적으로 사용합니다. 이렇게 하면 strict: true 를 설정할 때 템플릿의 오류가 발생하지 않습니다.
strict: false 에서도 설정할 수 있으므로 템플릿이 오류를 생성하도록 활성화하여 호스트가 해당 그룹에 포함되지 않도록 할 수도 있습니다. 그러나 이 작업을 수행하면 템플릿이 계속해서 복잡성이 증가함에 따라 향후 문제를 디버깅하기가 어렵습니다.
예상 인벤토리 콘텐츠를 생성하지 않는 경우 템플릿의 의도된 기능을 디버깅해야 할 수 있습니다. 예를 들어, groups 그룹에 복잡한 필터(예: shutdown_in_product_dev)가 있지만 결과 구성된 인벤토리에 호스트가 포함되지 않은 경우 compose 매개변수를 사용하여 디버그를 지원합니다.
예 14.2. 예
제한이 비어 있는 상태에서 실행하면 모든 호스트가 반환됩니다. 이를 사용하여 특정 호스트의 특정 변수를 검사하여 그룹의 문제가 있는 위치에 대한 통찰력을 제공할 수 있습니다.
14.2.3. 중첩 그룹 링크 복사링크가 클립보드에 복사되었습니다!
중첩된 그룹은 두 개의 그룹으로 구성되며, 하나는 다른 그룹의 자식입니다. 다음 예에서 하위 그룹에는 다른 호스트가 있고 상위 그룹에 변수가 정의되어 있습니다.
Ansible 코어가 작동하는 방식 때문에 상위 그룹의 변수는 플레이북이 실행 중이므로 네임스페이스에서 사용할 수 있으며 필터링에 사용할 수 있습니다.
다음 예제 인벤토리 파일 nested.yml 은 YAML 형식으로 되어 있습니다.
host1 은 groupB 에 있으므로 groupA 에도 있습니다.
중첩된 그룹 이름 필터링
다음 YAML 형식을 사용하여 중첩된 그룹 이름을 필터링합니다.
`source_vars`: plugin: constructed `limit`: `groupA`
`source_vars`:
plugin: constructed
`limit`: `groupA`
중첩된 그룹 속성 필터링
호스트가 간접적으로 해당 그룹의 멤버가더라도 다음 YAML 형식을 사용하여 그룹 변수를 필터링합니다.
인벤토리 콘텐츠에서 host2 에는 그룹 filter가 없으므로 filter_var 이 정의되어 있지 않아야 합니다. strict: true 가 사용되므로 해당 변수가 없는 호스트가 정의되도록 기본값을 사용합니다. 이 값을 사용하면 host2 에서 오류를 생성하는 대신 표현식에서 false 를 반환합니다. host1 은 해당 그룹에서 변수를 상속하고 반환됩니다.
14.2.4. Ansible 팩트 링크 복사링크가 클립보드에 복사되었습니다!
Ansible 팩트를 사용하여 인벤토리를 생성하려면 gather_facts: true 설정이 있는 인벤토리에 대해 플레이북을 실행해야 합니다. 사실은 시스템 간마다 다릅니다. 다음 예제는 알려진 모든 시나리오를 해결하기 위한 것은 아닙니다.
14.2.4.1. 환경 변수 필터링 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 YAML 형식을 사용하여 환경 변수를 필터링하는 것입니다.
14.2.4.2. 프로세서 유형으로 호스트 필터링 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 YAML 형식을 사용하여 Intel(프로세서 유형)으로 호스트를 필터링하는 것입니다.
구성된 인벤토리의 호스트는 원래 인벤토리 호스트를 참조하기 때문에 라이센스 할당에 대해 계산되지 않습니다. 또한 원래 인벤토리에서 비활성화된 호스트는 구성된 인벤토리에 포함되지 않습니다.
ansible-inventory 를 사용하여 실행되는 인벤토리 업데이트는 구성된 인벤토리 콘텐츠를 생성합니다.
이 값은 항상 작업보다 먼저 업데이트하도록 구성되지만 시간이 너무 오래 걸리는 경우 캐시 제한 시간 값을 계속 선택할 수 있습니다.
구성된 인벤토리를 생성할 때 API는 항상 연결된 인벤토리 소스가 하나만 있는지 확인합니다. 모든 인벤토리 업데이트에는 연결된 인벤토리 소스가 있으며 구성된 인벤토리(source_vars 및 제한)에 필요한 필드는 인벤토리 소스 모델에 이미 존재하는 필드입니다.
14.3. 인벤토리 플러그인 링크 복사링크가 클립보드에 복사되었습니다!
인벤토리 업데이트는 인벤토리 플러그인으로 구문 분석되는 동적으로 생성된 YAML 파일을 사용합니다. 자동화 컨트롤러 v4.4에서는 다음 인벤토리 소스에 인벤토리 source_vars 를 사용하여 인벤토리 플러그인 구성을 자동화 컨트롤러에 직접 제공할 수 있습니다.
인벤토리 소스에 대해 새로 생성된 구성에는 기본 플러그인 구성 값이 포함되어 있습니다. 새로 생성된 인벤토리 소스가 레거시 소스의 출력과 일치하도록 하려면 해당 소스에 대한 특정 구성 값 세트를 적용해야 합니다. 이전 버전과의 호환성을 보장하기 위해 자동화 컨트롤러는 이러한 소스 각각에 "templates"를 사용하여 인벤토리 플러그인의 출력을 기존 형식으로 강제 실행합니다.
소스 및 해당 템플릿에 대한 자세한 내용은 지원되는 인벤토리 플러그인 템플릿을 참조하십시오.
플러그인을 포함하는 는 source_vars: 최상위 키로 foo.bar.bazInventorySource 소스를 기반으로 런타임 시 정규화된 인벤토리 플러그인 이름으로 교체됩니다. 예를 들어 InventorySource 에 대해 ec2를 선택하면 런타임 시 플러그인이 amazon.aws.aws_ec2 로 설정됩니다.
14.4. 새 인벤토리 추가 링크 복사링크가 클립보드에 복사되었습니다!
새 인벤토리를 추가하려면 다음 구성 요소가 필요합니다.
다음 절차에 따라 인벤토리를 생성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다. 인벤토리 창에는 현재 사용 가능한 인벤토리 목록이 표시됩니다.
- 를 클릭하고 생성할 인벤토리 유형을 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- name: 이 인벤토리에 적합한 이름을 입력합니다.
- 선택 사항: 설명: 임의의 설명을 적절하게 입력합니다.
- 조직: 필수 항목입니다. 사용 가능한 조직 중에서 선택합니다.
스마트 인벤토리에만 적용 가능: 스마트 호스트 필터: 검색 필터를 사용하여 이 인벤토리의 호스트를 채웁니다.
예: "name__icontains=RedHat".
해당 옵션은 선택한 조직에 따라 다릅니다.
필터는 태그가 해당 이름을 포함하는 특정 호스트를 필터링하는 데 사용된다는 점에서 태그와 유사합니다. 따라서 스마트 호스트 필터 필드를 채우려면 호스트 자체가 아니라 원하는 호스트가 있는 태그를 지정합니다.
필터는 대소문자를 구분합니다.
인스턴스 그룹: 이 인벤토리를 실행할 인스턴스 그룹 또는 그룹을 선택합니다.
많은 인스턴스 그룹을 선택하고 실행 순서대로 정렬할 수 있습니다.
- 선택 사항: 이 인벤토리를 설명하는 레이블을 제공하여 인벤토리 및 작업을 그룹화하고 필터링할 수 있습니다.
- 구성된 인벤토리에만 적용 가능: 입력 인벤토리: 이 구성된 인벤토리에 포함할 소스 인벤토리를 지정합니다. 입력 인벤토리의 빈 그룹은 구성된 인벤토리에 복사됩니다.
- 선택 사항:(구성된 인벤토리에만 적용): 캐시된 타임아웃(초): 캐시 플러그인 데이터를 시간 초과로 설정할 시간을 설정합니다.
구성된 인벤토리에만 적용 가능: Verbosity: 구성된 인벤토리와 관련된 인벤토리 소스와 관련하여 플레이북을 실행할 때 Ansible에서 생성하는 출력 수준을 제어합니다.
상세 정보 표시 선택:
- Normal
- 상세 정보
- 더 자세한 정보
- debug
- 연결 디버그
WinRM 디버그
- 상세 로깅에는 모든 명령의 출력이 포함됩니다.
- 자세한 내용은 Verbose 보다 자세히 설명합니다.
- 디버그 로깅은 매우 상세하며 특정 지원 인스턴스에서 유용할 수 있는 SSH 작업에 대한 정보를 포함합니다. 대부분의 사용자는 디버그 모드 출력을 볼 필요가 없습니다.
- 연결 디버그 를 사용하면 SSH 연결 진행 상황에 대한 디버깅 정보를 제공하여 자세한 정보 표시 모드로 SSH를 실행할 수 있습니다.
Windows 원격 관리와 관련된 상세 정보 표시에 사용되는 WinRM 디버그
구성된 인벤토리 플러그인을 사용하는 방법에 대한 자세한 내용은
아이콘을 클릭합니다.
- 구성된 인벤토리에만 적용 가능: 제한: 구성된 인벤토리와 연결된 인벤토리 소스에 대해 반환된 호스트 수를 제한합니다. 그룹 이름을 제한 필드에 붙여넣어 해당 그룹에 호스트만 포함할 수 있습니다. 자세한 내용은 Source vars 설정을 참조하십시오.
- 표준 인벤토리에만 적용 가능: 옵션: Prevent Instance Group Fallback 옵션을 선택하여 인스턴스 그룹 필드에 나열된 인스턴스 그룹 만 작업을 실행할 수 있도록 합니다. 선택 해제된 경우 실행 풀에서 사용 가능한 모든 인스턴스가 작업이 실행되는 위치 제어에 설명된 계층에 따라 사용됩니다.
구성된 인벤토리의소스 변수 (구성된 인벤토리의 소스 변수):
- 이 인벤토리의 모든 호스트에 적용할 변수 변수 정의 및 값입니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다.
-
구성된 인벤토리의 소스 변수는 특히 데이터의
그룹 키 아래에 그룹을생성합니다. Jinja2 템플릿 구문을 수락하고 모든 호스트에 대해 렌더링하고,true또는false평가를 수행하고, 결과가true인 경우 그룹에 호스트를 포함합니다. 이 기능은 해당 그룹에 호스트만 포함하도록 제한 필드에 해당 그룹 이름을 붙여넣을 수 있기 때문에 특히 유용합니다.
- 클릭합니다.
다음 단계
새 인벤토리를 저장하고 나면 인벤토리 유형에 해당하는 경우 권한, 그룹, 호스트, 소스 구성을 진행하고 완료된 작업을 볼 수 있습니다.
14.4.1. 인벤토리에 권한 추가 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 인벤토리에 권한을 추가합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 템플릿을 선택하고 User Access 또는 Team Access 탭에서 를 클릭합니다.
- 추가할 사용자 또는 팀을 선택하고 클릭합니다.
- 이름 옆에 있는 체크박스를 선택하여 목록에서 members로 하나 이상의 사용자 또는 팀을 추가합니다.
- 를 클릭합니다.
- 선택한 사용자 또는 팀에 부여할 역할을 선택합니다. 리소스에 따라 다양한 옵션을 사용할 수 있습니다.
- 를 클릭하여 선택한 사용자 또는 팀에 역할을 적용하고 멤버로 추가합니다. 각 사용자 및 팀에 할당된 업데이트된 역할이 표시됩니다.
14.4.2. 권한 제거 링크 복사링크가 클립보드에 복사되었습니다!
리소스와 연결된 사용자의 특정 권한을 제거합니다. 역할을 연결 해제하면 더 이상 필요하지 않은 기능 또는 데이터에 대한 사용자 액세스가 제한됩니다.
프로세스
-
특정 사용자의 역할을 제거하려면 리소스 옆에 있는
아이콘을 클릭합니다. 그러면 연결 해제를 확인하라는 확인 창이 시작됩니다.
14.4.3. 인벤토리에 그룹 추가 링크 복사링크가 클립보드에 복사되었습니다!
인벤토리는 호스트 및 기타 그룹을 포함할 수 있는 그룹으로 나뉩니다. 그룹은 표준 인벤토리에만 적용할 수 있으며 스마트 인벤토리를 통해 직접 구성할 수 없습니다. 표준 인벤토리와 함께 사용되는 호스트를 통해 기존 그룹을 연결할 수 있습니다.
다음 작업은 표준 인벤토리에 사용할 수 있습니다.
- 새 그룹 생성
- 새 호스트 생성
- 선택한 인벤토리에서 명령 실행
- 인벤토리 속성 편집
- 그룹 및 호스트에 대한 활동 스트림 보기
- 인벤토리 빌드에 대한 도움 받기
인벤토리 소스는 그룹과 연결되어 있지 않습니다. 생성된 그룹은 최상위 수준이며 여전히 하위 그룹이 있을 수 있습니다. 생성된 이러한 모든 그룹에는 호스트가 있을 수 있습니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 그룹을 추가할 인벤토리 이름을 선택합니다.
- 인벤토리 세부 정보 페이지에서 그룹 탭을 선택합니다.
- 클릭합니다.
적절한 세부 정보를 입력합니다.
- 이름: 필수
- 선택 사항: 설명을 적절하게 입력합니다.
- 선택 사항: 변수: 이 그룹의 모든 호스트에 적용할 정의 및 값을 입력합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다.
- 클릭합니다.
결과
템플릿에 그룹을 추가하면 그룹 세부 정보 페이지가 표시됩니다.
14.4.3.1. 그룹 내에 그룹 추가 링크 복사링크가 클립보드에 복사되었습니다!
템플릿에 그룹을 추가하면 그룹 세부 정보 페이지가 표시됩니다.
프로세스
- 관련 그룹 탭을 선택합니다.
- to add a group that already exists in your configuration or to create a new group을 클릭합니다.
새 그룹을 생성하는 경우 필수 및 선택 필드에 적절한 세부 정보를 입력합니다.
- 이름 (필수):
- 선택 사항: 설명을 적절하게 입력합니다.
- 선택 사항: 변수: 이 그룹의 모든 호스트에 적용할 정의 및 값을 입력합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다.
- 클릭합니다.
- 그룹 만들기 창이 닫히고 새로 생성된 그룹이 생성된 해당 그룹과 연결된 그룹 목록에 항목으로 표시됩니다.
다음 단계
기존 그룹을 추가하도록 선택하면 사용 가능한 그룹이 별도의 선택 창에 표시됩니다. 그룹을 선택하면 그룹과 연결된 그룹 목록에 표시됩니다.
- 하위 그룹 아래에 추가 그룹 및 호스트를 구성하려면 그룹 목록에서 하위 그룹의 이름을 클릭하고 앞에 나열된 단계를 반복합니다.
14.4.3.2. 인벤토리 그룹 보기 또는 편집 링크 복사링크가 클립보드에 복사되었습니다!
그룹 목록 보기는 모든 인벤토리 그룹을 표시하거나 루트 그룹만 표시하도록 필터링할 수 있습니다. 다른 그룹의 하위 집합이 아닌 인벤토리 그룹은 루트 그룹으로 간주됩니다.
자동화 컨트롤러는 하위 그룹 또는 호스트와 같은 종속 항목을 찾기 때문에 종속 항목에 대한 관심 없이 하위 그룹을 삭제할 수 있습니다. 존재하는 경우 루트 그룹 및 모든 하위 그룹 및 호스트를 삭제할지 아니면 하위 그룹을 승격하여 호스트와 함께 최상위 인벤토리 그룹이 되도록 선택할 수 있는 확인 창이 표시됩니다.
14.4.4. 인벤토리에 호스트 추가 링크 복사링크가 클립보드에 복사되었습니다!
인벤토리 및 그룹 내의 그룹 및 그룹에 대한 호스트를 구성할 수 있습니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 그룹을 추가할 인벤토리 이름을 선택합니다.
- 인벤토리 세부 정보 페이지에서 호스트 탭을 선택합니다.
- 클릭합니다.
- 구성에 이미 존재하는 호스트를 추가할지 아니면 새 호스트를 생성할지 선택합니다.
- 새 호스트를 생성하는 경우 작업을 실행하는 동안 이 호스트를 포함하도록 토글을 On 으로 설정합니다.
적절한 세부 정보를 입력합니다.
- 이름 (필수):
- 선택 사항: 설명을 적절하게 입력합니다.
선택 사항: 변수: 다음 예제와 같이 이 그룹의 모든 호스트에 적용할 정의 및 값을 입력합니다.
{ ansible_user : <username to ssh into> ansible_ssh_pass : <password for the username> ansible_become_pass: <password for becoming the root> }{ ansible_user : <username to ssh into> ansible_ssh_pass : <password for the username> ansible_become_pass: <password for becoming the root> }Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다.
- 클릭합니다.
호스트 생성 창이 닫히고 새로 생성된 호스트가 생성된 해당 그룹과 연결된 호스트 목록에 표시됩니다.
기존 호스트를 추가하도록 선택하면 사용 가능한 호스트가 별도의 선택 창에 표시됩니다.
호스트를 선택하면 그룹과 연결된 호스트 목록에 표시됩니다.
호스트를 선택하고
아이콘을 클릭하여 이 화면에서 호스트를 연결 해제할 수 있습니다.
참고이 화면에서 임시 명령을 실행할 수도 있습니다. 자세한 내용은 임시 명령 실행을 참조하십시오.
호스트에 추가 그룹을 구성하려면 호스트 목록에서 호스트 이름을 클릭합니다.
그러면 선택한 호스트의 세부 정보 탭이 열립니다.
- Groups 탭을 선택하여 호스트에 대한 그룹을 구성합니다.
- (연결 그룹)를 클릭하여 호스트를 기존 그룹과 연결합니다. 사용 가능한 그룹이 별도의 선택 창에 나타납니다.
호스트와 연결할 그룹을 선택하고 클릭합니다.
그룹이 연결되면 호스트와 연결된 그룹 목록에 표시됩니다.
- 호스트를 사용하여 작업을 실행하는 경우 호스트의 완료된 작업 탭에서 해당 작업에 대한 세부 정보를 볼 수 있습니다.
- 를 클릭하여 각 작업에 대한 세부 정보를 봅니다.
API에서 새로 추가된 엔드포인트를 사용하여 /api/v2/bulk/host_create 를 사용하여 호스트를 대량으로 생성할 수 있습니다. 이 끝점은 JSON을 수락하고 대상 인벤토리와 인벤토리에 추가할 호스트 목록을 지정할 수 있습니다. 이러한 호스트는 인벤토리 내에서 고유해야 합니다. 모든 호스트가 추가되거나 작업을 완료할 수 없는 이유를 나타내는 오류가 반환됩니다. OPTIONS 요청을 사용하여 관련 스키마를 반환합니다.
14.4.5. 소스 추가 링크 복사링크가 클립보드에 복사되었습니다!
인벤토리 소스는 그룹과 연결되어 있지 않습니다. 생성된 그룹은 최상위 수준이며 여전히 하위 그룹이 있을 수 있습니다. 생성된 이러한 모든 그룹에는 호스트가 있을 수 있습니다. 인벤토리에 소스를 추가하는 작업은 표준 인벤토리에만 적용됩니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 추가할 인벤토리 이름을 선택합니다.
- 인벤토리 세부 정보 페이지에서 소스 탭을 선택합니다.
- 클릭합니다.
적절한 세부 정보를 입력합니다.
- 선택한 인벤토리 소스에 대한 정보가 완료되면 상세 정보 표시, 호스트 필터 및 변수와 같은 기타 공통 매개변수를 선택적으로 지정할 수 있습니다.
- Verbosity 메뉴를 사용하여 인벤토리 소스 업데이트 작업의 출력 수준을 선택합니다.
- Host filter 필드를 사용하여 자동화 컨트롤러로 가져올 일치하는 호스트 이름만 지정합니다.
Enabled 변수 필드에서 자동화 컨트롤러에서 호스트 변수 사전에서 enabled 상태를 검색하도록 지정합니다. 'foo.bar'로 점 표기법을 사용하여 활성화된 변수를 지정할 수 있습니다. 이 경우 조회는
from_dict.get('foo', {}).get('bar', default)과 동일한 중첩된 사전을 검색합니다.Enabled 변수 필드를 설정하지 않는 한 Enabled value 필드는 무시됩니다. 활성화된 변수가 이 값과 일치하면 호스트는 가져오기 시 활성화됩니다.
Enabled 변수 필드에서 호스트 변수 사전을 지정한 경우 가져오기에 사용할 값을 제공할 수 있습니다. 예를 들어 다음 호스트 변수에서
enabled_var='status.power_state'및'enabled_value='powered_on'의 경우 호스트는enabled:로 표시됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow power_state가powered_on이 아닌 값인 경우 자동화 컨트롤러로 가져올 때 호스트가 비활성화됩니다. 키를 찾을 수 없으면 호스트가 활성화됩니다.모든 클라우드 인벤토리 소스에는 다음과 같은 업데이트 옵션이 있습니다.
overwrite: 선택되면 외부 소스에 이전에 존재했지만 현재는 제거된 모든 호스트와 그룹이 자동화 컨트롤러 인벤토리에서 제거됩니다. 인벤토리 소스에서 관리하지 않은 호스트 및 그룹은 수동으로 생성한 다음 그룹으로 승격되거나 승격할 수동으로 생성한 그룹이 없는 경우 인벤토리의 "전체" 기본 그룹에 남아 있습니다.
선택하지 않으면 외부 소스에서 찾을 수 없는 로컬 하위 호스트 및 그룹은 인벤토리 업데이트 프로세스에 의해 변경되지 않은 상태로 유지됩니다.
덮어쓰기 변수: 이 옵션을 선택하면 하위 그룹 및 호스트의 모든 변수가 제거되고 외부 소스에 있는 변수로 교체됩니다.
선택하지 않으면 병합이 수행되어 로컬 변수와 외부 소스에 있는 변수를 결합합니다.
시작 시 업데이트: 이 인벤토리를 사용하여 작업을 실행할 때마다 작업 작업을 실행하기 전에 선택한 소스에서 인벤토리를 새로 고칩니다.
인벤토리에서 동기화할 수 있는 것보다 작업이 더 빨리 생성되는 경우 작업 오버플로를 방지하기 위해 이를 선택하면 캐시 시간 초과 를 특정 시간(초) 동안 이전 캐시 인벤토리 동기화로 구성할 수 있습니다.
시작 시 업데이트 설정은 프로젝트와 인벤토리의 종속성 시스템을 참조하며, 두 작업이 동시에 실행되지 않도록 특별히 제외되지 않습니다.
캐시 시간 초과가 지정되면 두 번째 작업의 종속 항목이 생성되고 첫 번째 작업에서 생성한 프로젝트와 인벤토리 업데이트를 사용합니다.
그런 다음 두 작업 모두 해당 프로젝트 또는 인벤토리 업데이트가 완료될 때까지 기다린 후 계속합니다. 서로 다른 작업 템플릿의 경우 시스템에 수행할 용량이 있으면 동시에 시작하여 실행할 수 있습니다. 동적 인벤토리 소스에 자동화 컨트롤러의 프로비저닝 콜백 기능을 사용하려면 인벤토리 그룹에 대해 시작 시 업데이트를 설정해야 합니다.
Update On 시작이 설정된 프로젝트를 사용하는 인벤토리 소스를 동기화하면 인벤토리 업데이트가 시작되기 전에 프로젝트가 자동으로 (캐시 시간 초과 규칙에 따라) 업데이트될 수 있습니다.
템플릿에서 사용하는 동일한 프로젝트의 소스를 사용하는 인벤토리를 사용하는 작업 템플릿을 생성할 수 있습니다. 이러한 경우 프로젝트가 업데이트되고 인벤토리가 업데이트됩니다(업데이트가 아직 진행 중이거나 캐시 시간 초과가 아직 만료되지 않은 경우).
- 항목 및 선택을 검토합니다. 이를 통해 일정 및 알림과 같은 추가 세부 정보를 구성할 수 있습니다.
이 인벤토리 소스와 관련된 스케줄을 구성하려면 스케줄 탭을 클릭합니다.
- 스케줄이 이미 설정되어 있는 경우 스케줄 기본 설정을 검토, 편집, 활성화 또는 비활성화합니다.
- 일정이 설정되지 않은 경우 일정 설정에 대한 자세한 내용은 일정을 참조하십시오. ???
14.4.6. 소스에 대한 알림 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 소스에 대한 알림을 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 알림을 구성할 인벤토리 이름을 선택합니다.
인벤토리 세부 정보 페이지에서 알림 탭을 선택합니다.
참고알림 탭은 새로 생성된 소스를 저장한 경우에만 표시됩니다.
- 알림이 이미 설정된 경우 토글을 사용하여 특정 소스에 사용할 알림을 활성화하거나 비활성화합니다. 자세한 내용은 알림 활성화 및 비활성화를 참조하십시오.
- 알림을 설정하지 않은 경우 자세한 내용은 알림 을 참조하십시오.
- 항목 및 선택을 검토합니다.
- 을 클릭합니다.
다음 단계
소스를 정의하면 인벤토리와 연결된 소스 목록에 표시됩니다. 소스 탭에서는 단일 소스에서 동기화를 수행하거나 한 번에 모두 동기화할 수 있습니다. 동기화 프로세스 스케줄링이나 소스를 편집하고 삭제하는 등 추가 작업을 수행할 수 있습니다.
14.4.7. 인벤토리 소스 링크 복사링크가 클립보드에 복사되었습니다!
호스트를 입력할 수 있는 인벤토리 유형과 일치하는 소스를 선택합니다.
14.4.7.1. 프로젝트에서 소싱 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트에서 소싱된 인벤토리는 연결된 프로젝트의 SCM 유형을 사용한다는 것을 의미합니다. 예를 들어 프로젝트의 소스가 GitHub에 있는 경우 인벤토리는 동일한 소스를 사용합니다.
다음 절차에 따라 프로젝트 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 프로젝트를 선택합니다.
추가 필드에 다음 세부 정보를 입력합니다.
선택 사항: 소스 제어 분기/태그/커밋: 체크아웃할 소스 제어(Git 또는 Subversion)의 SCM 분기, 태그, 커밋 해시, 임의의 refs 또는 버전 번호(해당하는 경우)를 입력합니다.
이 필드는 소싱된 프로젝트에 Allow branch override 옵션이 선택된 경우에만 표시됩니다. 자세한 내용은 SSCM 유형 - Git 및 Subversion을 사용하도록 플레이북 구성을 참조하십시오.
다음 필드에 사용자 정의 refspec을 지정하지 않는 한 일부 커밋 해시 및 참조는 사용할 수 없습니다. 비워 두는 경우 기본값은 HEAD인데, 이는 이 프로젝트에 대해 마지막으로 체크아웃된 분기/태그/커밋입니다.
- 선택 사항: 인증 정보: 이 소스에 사용할 인증 정보를 지정합니다.
-
프로젝트 (필수): 기본 프로젝트로 사전 채워집니다. 그러지 않으면 인벤토리에서 소스로 사용하는 프로젝트를 지정합니다.
아이콘을 클릭하여 프로젝트 목록에서 선택합니다. 목록이 긴 경우 검색을 사용하여 옵션 범위를 좁힙니다.
인벤토리 파일 (필수): 소싱된 프로젝트와 관련된 인벤토리 파일을 선택합니다. 아직 채워지지 않은 경우 메뉴 내의 텍스트 필드에 입력하여 불필요한 파일 유형을 필터링할 수 있습니다. 플랫 파일 인벤토리 외에도 디렉터리 또는 인벤토리 스크립트를 가리킬 수 있습니다.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수/값, 업데이트 옵션을 지정할 수 있습니다.
- 선택 사항: 사용자 정의 인벤토리 스크립트에 전달하려면 소스 변수 필드에서 환경 변수를 설정할 수 있습니다. 인벤토리 스크립트를 소스 제어에 배치한 다음 프로젝트에서 실행할 수도 있습니다. 자세한 내용은 자동화 실행 구성에서 인벤토리 파일 가져오기 를 참조하십시오.
문제 해결
SCM에서 사용자 지정 인벤토리 스크립트를 실행하는 경우 업스트림 소스 제어에서 스크립트에 대한 실행 비트(chmod +x)를 설정해야 합니다.
그러지 않으면 자동화 컨트롤러에서 실행 시 [오류 13] Permission denied 오류가 발생합니다.
14.4.7.2. Amazon Web Services EC2 링크 복사링크가 클립보드에 복사되었습니다!
AWS EC2-sourced 인벤토리를 구성하려면 다음 절차를 사용하십시오.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 Amazon EC2 를 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
선택 사항: 인증 정보: 기존 AWS 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
자동화 컨트롤러가 IAM 역할이 할당된 EC2 인스턴스에서 실행 중인 경우 인증 정보를 생략할 수 있으며 인스턴스 메타데이터의 보안 인증 정보가 대신 사용됩니다. IAM 역할 사용에 대한 자세한 내용은 Amazon에서 Amazon EC2_documentation_at_Amazon 설명서의 IAM 역할을 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
aws_ec2인벤토리 플러그인에서 사용하는 변수를 덮어쓰려면 Source variables 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 aws 인벤토리 플러그인 설명서를 참조하십시오.
문제 해결
include_filters 만 사용하는 경우 AWS 플러그인은 항상 모든 호스트를 반환합니다. 이를 올바르게 사용하려면 또는 의 첫 번째 조건이 필터에 있고 나머지 OR 조건을 include_filters 목록에 빌드해야 합니다.
14.4.7.3. Google Compute Engine 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 Google 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 새 소스 추가 페이지의 소스 목록에서 Google Compute Engine 을 선택합니다.
- 소스 생성 창이 확장되어 필요한 인증 정보 필드가 표시됩니다. 기존 GCE 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
소스 변수 필드를 사용하여
gcp_compute인벤토리 플러그인에서 사용하는 변수를 재정의합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 gcp_compute 인벤토리 플러그인 설명서를 참조하십시오.
14.4.7.4. Microsoft Azure 리소스 관리자 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 Microsoft Azure Resource Manager 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 Microsoft Azure Resource Manager 를 선택합니다.
- 추가 필드에 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 Azure 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
Source variables 필드를 사용하여
azure_rm인벤토리 플러그인에서 사용하는 변수를 재정의합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 azure_rm 인벤토리 플러그인 설명서를 참조하십시오.
14.4.7.5. VMware vCenter 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 VMWare 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 VMware vCenter 를 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 VMware 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
vmware_ inventory인벤토리 플러그인에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 vmware_inventory 인벤토리 플러그인 을 참조하십시오.
문제 해결
VMware 속성이 소문자에서 camel 케이스로 변경되었습니다. 자동화 컨트롤러는 최상위 키에 대한 별칭을 제공하지만 중첩된 속성의 소문자 키는 중단되었습니다. 유효한 지원 속성 목록은 VMware 동적 인벤토리 플러그인에서 가상 시스템 속성 사용을 참조하십시오.
14.4.7.6. VMware ESXi 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 VMWare-ESXI 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 추가할 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스의 이름 (필수)을 입력합니다.
- 소스 생성 페이지의 소스 목록에서 VMware ESXi 를 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 인증 정보: 기존 VMware 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- Verbosity 메뉴를 사용하여 인벤토리 소스 업데이트 작업의 출력 수준을 선택합니다.
- 선택 사항: 호스트 필터, 활성화된 변수 또는 값을 지정하고 소스 추가 에 설명된 대로 옵션을 업데이트할 수 있습니다.
-
vmware_ inventory인벤토리 플러그인에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다.
문제 해결
VMware 속성이 소문자에서 camel 케이스로 변경되었습니다. 자동화 컨트롤러는 최상위 키에 대한 별칭을 제공하지만 중첩된 속성의 소문자 키는 중단되었습니다. 유효한 지원 속성 목록은 VMware 동적 인벤토리 플러그인에서 가상 시스템 속성 사용을 참조하십시오.
추가 리소스
14.4.7.7. Red Hat Satellite 6 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Satellite 소싱 인벤토리를 구성하려면 다음 절차를 사용하십시오.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 Red Hat Satellite 6 을 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 Satellite 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
Source Variables 필드를 사용하여
foreman인벤토리 소스에서 사용하는 매개변수를 지정합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 Ansible 문서의 Foreman 인벤토리 소스 를 참조하십시오.
문제 해결
자동화 컨트롤러 인벤토리에 Satellite의 "관련 그룹"이 없는 문제를 해결하는 경우 인벤토리 소스에 이러한 변수를 정의해야 할 수 있습니다. 자세한 내용은 Red Hat Satellite 6 을 참조하십시오.
인벤토리를 동기화할 때 "foreman.id" 변수 없음이라는 메시지가 표시되면 Red Hat 고객 포털( https://access.redhat.com/solutions/5826451)의 솔루션을 참조하십시오. 전체 문서에 액세스하려면 고객 인증 정보로 로그인해야 합니다.
14.4.7.8. Red Hat Insights 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Insights 소싱 인벤토리를 구성하려면 다음 절차를 사용하십시오.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 Red Hat Insights 를 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 Red Hat Insights 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
Insights인벤토리 플러그인 에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 Insights 인벤토리 플러그인 을 참조하십시오.
14.4.7.9. OpenStack 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 OpenStack 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 OpenStack 을 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 OpenStack 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
openstackinventory 플러그인 에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 openstack inventory plugin 을 참조하십시오.
14.4.7.10. Red Hat Virtualization 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 가상화 소싱 인벤토리를 구성하려면 다음 절차를 사용하십시오.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 Red Hat Virtualization 을 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 Red Hat Virtualization 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
ovirt인벤토리 플러그인 에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 ovirt 인벤토리 플러그인을 참조하십시오.
Red Hat Virtualization(ovirt) 인벤토리 소스 요청은 기본적으로 안전합니다. 이 기본 설정을 변경하려면 source_variables 에서 key ovirt_insecure 를 true 로 설정합니다. 이 키는 /api/v2/inventory_sources/N/ 끝점에 있는 인벤토리 소스의 API 세부 정보에서만 사용할 수 있습니다.
14.4.7.11. Red Hat Ansible Automation Platform 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 자동화 컨트롤러 소싱 인벤토리를 구성합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 원하는 인벤토리 이름을 선택하고 소스 탭을 클릭합니다.
- 클릭합니다.
- 소스 생성 페이지의 소스 목록에서 Red Hat Ansible Automation Platform 을 선택합니다.
소스 생성 창이 확장되고 추가 필드가 표시됩니다. 다음 세부 정보를 입력합니다.
- 선택 사항: 인증 정보: 기존 Red Hat Ansible Automation Platform 인증 정보에서 선택합니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 선택 사항: 소스 추가 에 설명된 대로 상세 정보 표시, 호스트 필터, 활성화된 변수 또는 값 및 업데이트 옵션을 지정할 수 있습니다.
-
컨트롤러인벤토리 플러그인 에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 컨트롤러 인벤토리 플러그인 을 참조하십시오. 이를 위해서는 Red Hat 고객 로그인이 필요합니다.
14.4.7.12. Terraform 상태 링크 복사링크가 클립보드에 복사되었습니다!
이 인벤토리 소스는 cloud.terraform 컬렉션의 terraform_state 인벤토리 플러그인을 사용합니다. 플러그인은 테라폼 상태 파일을 구문 분석하고 AWS EC2, GCE 및 Microsoft Azure 인스턴스의 호스트를 추가합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
프로젝트 페이지에서 프로젝트 창을 시작합니다.
- 새 프로젝트 추가 의 단계에 따라 적절한 세부 정보를 입력합니다.
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 추가할 인벤토리를 선택합니다.
- 소스 탭에서 을 클릭합니다.
메뉴에서 Terraform State 를 선택합니다.
소스 생성 창이 확장되어 선택적 인증 정보 필드가 표시됩니다.
기존 Terraform 백엔드 구성 인증 정보를 선택합니다. 자세한 내용은 Terraform 백엔드 구성 을 참조하십시오.
- 시작 시 덮어쓰기 및 업데이트 옵션을 활성화합니다.
Source variables 필드를 사용하여
terraform_state인벤토리 플러그인에서 사용하는 변수를 재정의합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 terraform_state 파일을 참조하십시오.backend_type변수는 Terraform State 인벤토리 플러그인에 필요합니다. 이는 Terraform 백엔드 인증 정보에 구성된 원격 백엔드 와 일치해야 합니다. 다음은 Amazon S3 백엔드의 예입니다.backend_type: s3
backend_type: s3Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Terraform 바이너리가 있는 실행 환경을 선택합니다. 이는 인벤토리 플러그인이 Terraform 상태 파일에서 인벤토리 데이터를 읽는 Terraform 명령을 실행하는 데 필요합니다.
Ansible Automation Platform 인벤토리의 Terraform 공급자는 Terraform에 의해 관리되며 Terraform 배포에 대한 드리프트를 도입할 수 있으므로 Ansible Automation Platform에서 편집해서는 안 됩니다.
14.4.7.13. OpenShift Virtualization 링크 복사링크가 클립보드에 복사되었습니다!
이 인벤토리 소스는 Red Hat OpenShift Container Platform Virtualization을 배포할 수 있는 클러스터를 사용합니다. Red Hat OpenShift Container Platform Virtualization을 구성하려면 특정 네임스페이스 및 OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보에 배포된 가상 머신이 필요합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 소스를 추가할 인벤토리를 선택합니다.
- 소스 탭에서 를 클릭합니다.
메뉴에서 OpenShift Virtualization 을 선택합니다.
새 소스 추가 창이 확장되어 필요한 인증 정보 필드가 표시됩니다.
기존 Kubernetes API 전달자 토큰 인증 정보에서 선택합니다. 자세한 내용은 OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보 유형을 참조하십시오. 이 예에서는
cmv2. Cryostating.redhat.com인증 정보가 사용됩니다.
- 선택적으로 소스 추가 단계에 설명된 대로 Verbosity, Host Filter, Enabled Variable/Value 및 Update 옵션을 지정할 수 있습니다.
kubernetes인벤토리 플러그인 에서 사용하는 변수를 덮어쓰려면 소스 변수 필드를 사용합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다. 이러한 변수에 대한 자세한 내용은 kubevirt.core.kubevirt 인벤토리 소스 설명서를 참조하십시오.다음 예에서 connections 변수는 클러스터의 특정 네임스페이스에 대한 액세스를 지정하는 데 사용됩니다.
--- connections: - namespaces: - hao-test
--- connections: - namespaces: - hao-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 클릭한 다음 를 클릭하여 인벤토리를 동기화합니다.
14.4.7.14. 사용자 정의 인벤토리 플러그인 사용 링크 복사링크가 클립보드에 복사되었습니다!
이는 servicenow.itsm 컬렉션 인벤토리 플러그인을 사용하여 Ansible Automation Platform에서 인벤토리를 동기화하는 방법을 설명합니다.
프로세스
다음 파일이 포함된 소스 제어 Git 리포지토리를 사용하여 프로젝트를 생성하고 동기화합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고servicenow.itsm.now플러그인 사용 및 구성에 대한 자세한 지침은 공식 Ansible 설명서 를 참조하십시오.-
프로젝트에서 소싱 할 소스를 설정하고 새 프로젝트를 선택하고 인벤토리 파일 섹션에서
/(프로젝트 루트)를 선택하여 인벤토리를 생성합니다. - 인벤토리의 소스를 동기화합니다.
14.4.7.15. 이전 인벤토리 스크립트 내보내기 링크 복사링크가 클립보드에 복사되었습니다!
사용자 정의 인벤토리 스크립트 API를 제거해도 스크립트는 여전히 데이터베이스에 저장됩니다. 다음 명령을 사용하여 나중에 소스 제어를 확인하는 데 적합한 형식으로 데이터베이스에서 스크립트를 복구합니다.
다음 명령을 사용합니다.
awx-manage export_custom_scripts --filename=my_scripts.tar Dump of old custom inventory scripts at my_scripts.tar
$ awx-manage export_custom_scripts --filename=my_scripts.tar
Dump of old custom inventory scripts at my_scripts.tar
출력 사용:
mkdir my_scripts tar -xf my_scripts.tar -C my_scripts
$ mkdir my_scripts
$ tar -xf my_scripts.tar -C my_scripts
스크립트 이름은 < pk>_ <name> 형식으로 되어 있습니다. 이는 프로젝트 폴더에 사용되는 이름 지정 체계입니다.
ls my_scripts 10inventory_script_rawhook _19 _30inventory_script_listenhospital _11inventory_script_upperorder _1inventory_script_commercialinternet45 _4inventory_script_whitestring _12inventory_script_eastplant _22inventory_script_pinexchange _5inventory_script_literaturepossession _13inventory_script_governmentculture _23inventory_script_brainluck _6inventory_script_opportunitytelephone _14inventory_script_bottomguess _25inventory_script_buyerleague _7inventory_script_letjury _15inventory_script_wallisland _26inventory_script_lifesport _8random_inventory_script 16inventory_script_wallisland _27inventory_script_exchangesomewhere _9random_inventory_script _17inventory_script_bidstory _28inventory_script_boxchild _18p _29__inventory_script_wearstress
$ ls my_scripts
10inventory_script_rawhook _19 _30inventory_script_listenhospital _11inventory_script_upperorder _1inventory_script_commercialinternet45 _4inventory_script_whitestring _12inventory_script_eastplant _22inventory_script_pinexchange _5inventory_script_literaturepossession _13inventory_script_governmentculture _23inventory_script_brainluck _6inventory_script_opportunitytelephone _14inventory_script_bottomguess _25inventory_script_buyerleague _7inventory_script_letjury _15inventory_script_wallisland _26inventory_script_lifesport _8random_inventory_script
16inventory_script_wallisland _27inventory_script_exchangesomewhere _9random_inventory_script _17inventory_script_bidstory _28inventory_script_boxchild _18p _29__inventory_script_wearstress
각 파일에는 스크립트가 포함되어 있습니다. 스크립트는 bash/python/ruby/more 일 수 있으므로 확장이 포함되지 않습니다. 모두 직접 실행 가능합니다. 스크립트를 실행하면 인벤토리 데이터가 덤프됩니다.
ansible-inventory 를 사용하여 기능을 확인할 수 있습니다. 이렇게 하면 동일한 데이터가 제공되지만 다시 포맷됩니다.
ansible-inventory -i ./my_scripts/_11__inventory_script_upperorder --list --export
$ ansible-inventory -i ./my_scripts/_11__inventory_script_upperorder --list --export
위 예제에서는 my_scripts 로 cd 를 수행한 다음 git init 명령을 실행하고 원하는 스크립트를 추가하고 소스 제어로 푸시한 다음 사용자 인터페이스에서 SCM 인벤토리 소스를 생성할 수 있습니다.
사용자 정의 인벤토리 스크립트를 동기화하거나 사용하는 방법에 대한 자세한 내용은 자동화 실행 구성에서 인벤토리 파일을 참조하십시오.
14.5. 완료된 작업 보기 링크 복사링크가 클립보드에 복사되었습니다!
인벤토리를 사용하여 작업을 실행하는 경우 인벤토리의 작업 탭에서 해당 작업에 대한 세부 정보를 보고 Expanded 를 클릭하여 각 작업에 대한 세부 정보를 볼 수 있습니다.
14.6. 임시 명령 실행 링크 복사링크가 클립보드에 복사되었습니다!
애드혹 은 Ansible을 사용하여 오케스트레이션 언어(/usr/bin/ansible-playbook) 대신 /usr/bin/ansible을 사용하여 빠른 명령을 수행합니다. 임시 명령의 예로는 인프라에서 50대의 머신을 재부팅하는 작업이 있습니다. 임시로 수행할 수 있는 작업은 플레이북을 작성하여 수행할 수 있습니다. 플레이북은 다른 많은 작업을 함께 추가할 수도 있습니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 애드혹 명령을 실행할 인벤토리 이름을 선택합니다.
- 호스트 또는 그룹 탭에서 인벤토리 소스를 선택합니다. 인벤토리 소스는 단일 그룹 또는 호스트, 선택한 여러 호스트 또는 여러 그룹일 수 있습니다.
- 클릭합니다. 실행 명령 창이 열립니다.
다음 정보를 입력합니다.
module : 에서 명령 실행을 지원하는 모듈 중 하나를 선택합니다.
Expand command
apt_repository
mount
win_service
shell
apt_rpm
ping
win_updates
yum
서비스
SELinux
win_group
apt
group
setup
win_user
apt_key
user
win_ping
win_user
- arguments: 선택한 모듈과 함께 사용할 인수 를 제공합니다.
-
limit : 인벤토리의 호스트를 대상으로 지정하는 데 사용되는 제한을 입력합니다. 인벤토리의 모든 호스트를 대상으로 지정하려면
all또는*를 입력하거나 필드를 비워 둡니다. 시작 버튼을 클릭하기 전에 이전 보기에서 선택한 모든 항목이 자동으로 채워집니다. - Machine Credential: 명령을 실행하기 위해 원격 호스트에 액세스할 때 사용할 인증 정보를 선택합니다. Ansible이 원격 호스트에 로그인하는 데 필요한 사용자 이름 및 SSH 키 또는 암호가 포함된 인증 정보를 선택합니다.
- 상세 정보 표시: 표준 출력에 대한 상세 정보 표시 수준을 선택합니다.
- 포크: 필요한 경우 명령을 실행하는 동안 사용할 병렬 또는 동시 프로세스 수를 선택합니다.
- show Changes: 표준 출력에 Ansible 변경 사항을 표시하려면 선택합니다. 기본값은 OFF입니다.
-
Enable Privilege Escalation: 활성화된 경우 플레이북이 관리자 권한으로 실행됩니다. 이는
--become옵션을ansible명령에 전달하는 것과 동일합니다. - 추가 변수: 이 인벤토리를 실행할 때 적용할 추가 명령행 변수를 제공합니다. JSON 또는 YAML 구문을 사용하여 변수를 입력합니다. 둘 사이를 전환하려면 라디오 버튼을 사용합니다.
- 클릭하여 임시 명령을 실행할 실행 환경을 선택합니다.
- 클릭하여 사용할 인증 정보를 선택합니다.
- 시작을 . 모듈의 작업 창 출력 탭에 결과가 표시됩니다.
15장. 지원되는 인벤토리 플러그인 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
4.x로 업그레이드한 후 기존 구성이 이전 버전과 호환되는 인벤토리 출력을 생성하는 새 형식으로 마이그레이션됩니다. 다음 템플릿을 사용하여 인벤토리를 새 스타일 인벤토리 플러그인 출력으로 마이그레이션하는 데 도움이 됩니다.
15.1. Amazon Web Services EC2 링크 복사링크가 클립보드에 복사되었습니다!
15.2. Google Compute Engine 링크 복사링크가 클립보드에 복사되었습니다!
15.3. Microsoft Azure Resource Manager 링크 복사링크가 클립보드에 복사되었습니다!
15.4. VMware vCenter 링크 복사링크가 클립보드에 복사되었습니다!
15.5. VMWare ESXI 링크 복사링크가 클립보드에 복사되었습니다!
15.6. Red Hat Satellite 6 링크 복사링크가 클립보드에 복사되었습니다!
15.7. OpenStack 링크 복사링크가 클립보드에 복사되었습니다!
expand_hostvars: true fail_on_errors: true inventory_hostname: uuid plugin: openstack.cloud.openstack
expand_hostvars: true
fail_on_errors: true
inventory_hostname: uuid
plugin: openstack.cloud.openstack
15.8. Red Hat Virtualization 링크 복사링크가 클립보드에 복사되었습니다!
15.9. Red Hat Ansible Automation Platform 링크 복사링크가 클립보드에 복사되었습니다!
include_metadata: true inventory_id: <inventory_id or url_quoted_named_url> plugin: awx.awx.tower validate_certs: <true or false>
include_metadata: true
inventory_id: <inventory_id or url_quoted_named_url>
plugin: awx.awx.tower
validate_certs: <true or false>
16장. 호스트 링크 복사링크가 클립보드에 복사되었습니다!
호스트는 Ansible Automation Platform에서 관리하는 시스템으로, 물리적, 가상, 클라우드 기반 서버 또는 기타 장치를 포함할 수 있습니다.
일반적으로 호스트는 운영 체제 인스턴스입니다.
호스트는 인벤토리로 그룹화되며 "노드"라고도 합니다.
Ansible은 인벤토리라는 목록 또는 목록 그룹을 사용하여 인프라의 여러 관리 노드 또는 "호스트"에 대해 동시에 작동합니다.
인벤토리가 정의되면 패턴을 사용하여 Ansible을 실행할 호스트 또는 그룹을 선택합니다.
16.1. 호스트 생성 링크 복사링크가 클립보드에 복사되었습니다!
새 호스트를 생성하려면 다음을 수행합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다.
- 클릭합니다.
Create Host 페이지에서 다음 정보를 입력합니다.
- 이름: 호스트의 이름을 입력합니다.
- (선택 사항) 설명: 호스트에 대한 설명을 입력합니다.
- inventory: 이 호스트가 속할 인벤토리를 선택합니다.
- variables : 호스트와 연결된 인벤토리 파일 변수를 입력합니다.
- 를 클릭하여 변경 사항을 저장합니다.
16.2. 호스트 세부 정보 보기 링크 복사링크가 클립보드에 복사되었습니다!
작업 실행에 대한 호스트 세부 정보를 보려면 다음을 수행합니다.
프로세스
- 탐색 패널에서 → → 를 선택합니다. 호스트 페이지에는 최근 작업 실행의 영향을 받는 호스트 또는 호스트에 대한 다음 정보가 표시됩니다.
특정 호스트를 선택하면 다음 정보와 함께 해당 호스트의 세부 정보 페이지가 표시됩니다.
- 호스트 이름입니다.
- 해당 호스트와 연결된 인벤토리 입니다. 이 인벤토리를 선택하면 인벤토리의 세부 정보가 표시됩니다.
- 호스트가 생성되었을 때 그리고 누가 할 수 있습니까. 작성자를 선택하면 작성자의 세부 정보가 표시됩니다.
- 호스트를 마지막으로 수정한 시간 . 작성자를 선택하면 작성자의 세부 정보가 표시됩니다.
- 호스트와 연결된 변수. YAML 또는 JSON 형식으로 변수를 표시할 수 있습니다.
클릭하여 호스트의 세부 정보를 편집합니다.
- 팩트 탭을 선택하여 호스트와 연결된 팩트를 표시합니다.
Groups 탭을 선택하여 호스트와 연결된 그룹을 표시합니다.
- (그룹 연결)를 클릭하여 호스트와 그룹을 연결합니다.
Jobs 탭을 선택하여 호스트에서 실행된 작업을 표시합니다.
아이콘을 클릭하여 작업 세부 정보를 표시합니다.
17장. 인스턴스 그룹 관리 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스 그룹을 사용하면 클러스터형 환경에서 인스턴스를 그룹화할 수 있습니다. 정책은 인스턴스 그룹이 작동하는 방식과 작업이 실행되는 방식을 나타냅니다. 다음 뷰에는 정책 알고리즘에 따른 용량 수준이 표시되어 있습니다.
자세한 내용은 다음을 참조하십시오.
17.1. 인스턴스 그룹 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 새 인스턴스 그룹을 생성합니다.
프로세스
- 탐색 패널에서 → → 선택합니다.
- 을 클릭하고 목록에서 Create instance group 을 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- name: 이름은 고유해야 하며 "controller"로 이름이 지정해서는 안 됩니다.
- 정책 인스턴스 최소: 새 인스턴스가 온라인 상태가 되면 이 그룹에 자동으로 할당할 최소 인스턴스 수를 입력합니다.
정책 인스턴스 백분율: 슬라이더를 사용하여 새 인스턴스가 온라인 상태가 되면 이 그룹에 자동으로 할당할 최소 인스턴스 백분율을 선택합니다.
참고정책 인스턴스 필드는 새 인스턴스 그룹을 생성하는 데 필요하지 않습니다. 값을 지정하지 않으면 최소 정책 인스턴스 및 정책 인스턴스 백분율 의 기본값은 0입니다.
- 최대 동시 작업: 지정된 작업에 대해 실행할 수 있는 최대 포크 수를 지정합니다.
Max forks: 지정된 작업에 대해 실행할 수 있는 최대 동시 작업 수를 지정합니다.
참고최대 동시 작업 의 기본값 0과 최대 포크 는 제한이 없음을 나타냅니다. 자세한 내용은 인스턴스 그룹 용량 제한을 참조하십시오.
- 기존 을 클릭하거나 인스턴스 그룹 클릭합니다.
다음 단계
인스턴스 그룹을 성공적으로 생성하면 새로 생성된 인스턴스 그룹의 세부 정보 탭을 통해 인스턴스 그룹 정보를 검토하고 편집할 수 있습니다.
인스턴스를 편집하고 이 인스턴스 그룹과 연결된 작업을 검토할 수도 있습니다.
17.1.1. 인스턴스를 인스턴스 그룹에 연결 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 인스턴스 그룹의 세부 정보 페이지에서 인스턴스 탭을 선택합니다.
- 를 클릭합니다.
- 목록에서 하나 이상의 사용 가능한 인스턴스 옆에 있는 체크박스를 클릭하여 인스턴스 그룹과 연결할 인스턴스를 선택하고 클릭합니다.
17.1.2. 인스턴스 그룹과 연결된 작업 보기 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 인스턴스 그룹 창의 작업 탭을 선택합니다.
작업 옆에 있는 화살표
아이콘을 클릭하여 보기를 확장하고 각 작업에 대한 세부 정보를 표시합니다.
각 작업에는 다음 세부 정보가 표시됩니다.
- 작업 상태
- ID 및 이름
- 작업 유형
- 시작 및 완료 시간
- 템플릿, 인벤토리, 프로젝트, 실행 환경과 같이 작업 및 해당 리소스와 연결된 적용 가능한 리소스
추가 리소스
18장. 인스턴스 및 컨테이너 그룹 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러를 사용하면 필요한 서비스 계정이 프로비저닝된 상태에서 클러스터 또는 OpenShift 클러스터의 네임스페이스에서 직접 Ansible 플레이북을 통해 작업을 실행할 수 있습니다. 이를 컨테이너 그룹이라고 합니다.
컨테이너 그룹에서 플레이북당 필요한 만큼만 작업을 실행할 수 있습니다. 자세한 내용은 컨테이너 그룹을 참조하십시오.
실행 환경의 경우 실행 환경을 참조하십시오.
18.1. 인스턴스 그룹 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스를 하나 이상의 인스턴스 그룹으로 그룹화할 수 있습니다. 다음 나열된 리소스 중 하나에 인스턴스 그룹을 할당할 수 있습니다.
- 조직
- 인벤토리
- 작업 템플릿
리소스 중 하나와 연결된 작업이 실행되면 해당 리소스와 연결된 인스턴스 그룹에 할당됩니다. 실행 프로세스 중에 작업 템플릿과 연결된 인스턴스 그룹이 인벤토리와 연결된 인스턴스 그룹보다 먼저 확인됩니다. 인벤토리와 연결된 인스턴스 그룹은 조직과 연결된 인스턴스 그룹보다 먼저 확인됩니다. 따라서 세 가지 리소스에 대한 인스턴스 그룹 할당은 계층 구조를 형성합니다.
작업 템플릿 > 인벤토리 > 조직
인스턴스 그룹으로 작업할 때는 다음을 고려하십시오.
-
해당 그룹에서 다른 그룹 및 그룹 인스턴스를 정의할 수 있습니다. 이러한 그룹의 접두사는
instance_group_이어야 합니다. 다른instance_group_그룹과 함께 Automationcontroller또는execution_nodes그룹에 인스턴스가 있어야 합니다. 클러스터형 설정에서는 API 인스턴스 그룹에컨트롤 플레인으로 표시되는 Automationcontroller그룹에 하나 이상의 인스턴스가 있어야 합니다. 자세한 내용 및 예제 시나리오는자동화 컨트롤러에대한 그룹 정책을 참조하십시오. controlplane인스턴스 그룹을 수정할 수 없으며 이 작업을 시도하면 모든 사용자에 대한 permission denied 오류가 발생합니다.따라서 Disassociate 옵션은
컨트롤 플레인의 Instances 탭에서 사용할 수 없습니다.-
기본API 인스턴스 그룹은 작업을 실행할 수 있는 모든 노드를 사용하여 자동으로 생성됩니다. 다른 인스턴스 그룹과 유사하지만 특정 인스턴스 그룹이 특정 리소스와 연결되지 않은 경우 작업 실행은 항상 기본 인스턴스 그룹으로 대체됩니다. 기본 인스턴스 그룹이 항상 존재하며, 삭제하거나 이름을 변경할 수 없습니다. -
instance_group_default라는 그룹을 생성하지 마십시오. - 그룹 이름과 동일한 인스턴스 이름을 지정하지 마십시오.
18.1.1. 자동화 컨트롤러에대한 그룹 정책 링크 복사링크가 클립보드에 복사되었습니다!
노드를 정의할 때는 다음 기준을 사용합니다.
-
Automation
controller 그룹의 노드는node_typehostvar을하이브리드(기본값) 또는제어로 정의할 수 있습니다. -
execution_nodes 그룹의 노드는node_typehostvar을실행(기본값) 또는홉으로 정의할 수 있습니다.
instance_group_* 로 그룹 이름을 지정하여 인벤토리 파일에서 사용자 지정 그룹을 정의할 수 있습니다. 여기서 * 는 API에서 그룹 이름이 됩니다. 설치가 완료된 후 API에 사용자 지정 인스턴스 그룹을 생성할 수도 있습니다.
현재 동작에서는 instance_group_* 의 멤버가 Automation controller 또는 execution_nodes 그룹의 일부가 될 것으로 예상합니다.
예 18.1. 인스턴스 그룹 정의
설치 프로그램을 실행하면 다음 오류가 표시됩니다.
TASK [ansible.automation_platform_installer.check_config_static : Validate mesh topology] ***
fatal: [126-addr.tatu.home -> localhost]: FAILED! => {"msg": "The host '110-addr.tatu.home' is not present in either [automationcontroller] or [execution_nodes]"}
TASK [ansible.automation_platform_installer.check_config_static : Validate mesh topology] ***
fatal: [126-addr.tatu.home -> localhost]: FAILED! => {"msg": "The host '110-addr.tatu.home' is not present in either [automationcontroller] or [execution_nodes]"}
이 문제를 해결하려면 다음과 같이 110-addr.tatu.home 상자를 execution_node 그룹으로 이동합니다.
결과는 다음과 같습니다.
TASK [ansible.automation_platform_installer.check_config_static : Validate mesh topology] ***
ok: [126-addr.tatu.home -> localhost] => {"changed": false, "mesh": {"110-addr.tatu.home": {"node_type": "execution", "peers": [], "receptor_control_filename": "receptor.sock", "receptor_control_service_name": "control", "receptor_listener": true, "receptor_listener_port": 8928, "receptor_listener_protocol": "tcp", "receptor_log_level": "info"}, "126-addr.tatu.home": {"node_type": "control", "peers": ["110-addr.tatu.home"], "receptor_control_filename": "receptor.sock", "receptor_control_service_name": "control", "receptor_listener": false, "receptor_listener_port": 27199, "receptor_listener_protocol": "tcp", "receptor_log_level": "info"}}}
TASK [ansible.automation_platform_installer.check_config_static : Validate mesh topology] ***
ok: [126-addr.tatu.home -> localhost] => {"changed": false, "mesh": {"110-addr.tatu.home": {"node_type": "execution", "peers": [], "receptor_control_filename": "receptor.sock", "receptor_control_service_name": "control", "receptor_listener": true, "receptor_listener_port": 8928, "receptor_listener_protocol": "tcp", "receptor_log_level": "info"}, "126-addr.tatu.home": {"node_type": "control", "peers": ["110-addr.tatu.home"], "receptor_control_filename": "receptor.sock", "receptor_control_service_name": "control", "receptor_listener": false, "receptor_listener_port": 27199, "receptor_listener_protocol": "tcp", "receptor_log_level": "info"}}}
자동화 컨트롤러 4.0 또는 이전 버전에서 업그레이드한 후 레거시 instance_group_ 멤버에 awx 코드가 설치되어 있을 가능성이 큽니다. 그러면 해당 노드가 Automation controller 그룹에 배치됩니다.
18.1.2. API에서 인스턴스 그룹 구성 링크 복사링크가 클립보드에 복사되었습니다!
시스템 관리자로 /api/v2/instance_groups 에 POST를 수행하여 인스턴스 그룹을 생성할 수 있습니다.
생성되면 다음을 사용하여 인스턴스를 인스턴스 그룹과 연결할 수 있습니다.
HTTP POST /api/v2/instance_groups/x/instances/ {'id': y}`
HTTP POST /api/v2/instance_groups/x/instances/ {'id': y}`
인스턴스 그룹에 추가된 인스턴스는 그룹의 작업 큐에서 수신 대기하도록 자동으로 재구성됩니다. 자세한 내용은 인스턴스 그룹 정책을 참조하십시오.
18.1.3. 인스턴스 그룹 정책 링크 복사링크가 클립보드에 복사되었습니다!
정책을 정의하여 온라인 상태가 되면 인스턴스 그룹에 자동으로 참여하도록 자동화 컨트롤러 인스턴스를 구성할 수 있습니다. 이러한 정책은 온라인 상태의 모든 새 인스턴스를 대상으로 평가됩니다.
인스턴스 그룹 정책은 인스턴스 그룹의 다음 세 개의 선택적 필드에 의해 제어됩니다.
-
policy_instance_percentage: 0에서 100 사이의 숫자입니다. 이 백분율의 활성 자동화 컨트롤러 인스턴스가 이 인스턴스 그룹에 추가됩니다. 새 인스턴스가 온라인 상태가 되면 총 인스턴스 수에 비해 이 그룹의 인스턴스 수가 지정된 백분율보다 작으면 백분율 조건이 충족될 때까지 새 인스턴스가 추가됩니다. -
policy_instance_minimum: 이 정책은 인스턴스 그룹에서 이 많은 인스턴스를 유지하려고 합니다. 사용 가능한 인스턴스 수가 이 최소값보다 작으면 모든 인스턴스가 이 인스턴스 그룹에 배치됩니다. -
policy_instance_list: 이 인스턴스 그룹에 항상 포함할 인스턴스 이름의 고정 목록입니다.
자동화 컨트롤러 UI(사용자 인터페이스)의 인스턴스 그룹 목록 보기는 인스턴스 그룹 정책에 따라 각 인스턴스 그룹의 용량 수준을 요약합니다.
추가 리소스
자세한 내용은 인스턴스 그룹 관리 섹션을 참조하십시오.
18.1.4. 주요 정책 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
다음 정책 고려 사항을 고려하십시오.
policy_instance_percentage및policy_instance_minimum모두 최소 할당을 설정합니다. 그룹에 더 많은 인스턴스가 할당되도록 하는 규칙이 적용됩니다.예를 들어
policy_instance_percentage가 50%이고policy_instance_minimum이 2인 경우 6개의 인스턴스를 시작하면 인스턴스 그룹 3개가 할당됩니다.클러스터의 총 인스턴스 수를 2로 줄이면
policy_instance_minimum을 충족하기 위해 두 인스턴스 모두 인스턴스 그룹에 할당됩니다. 이를 통해 사용 가능한 리소스 양에 더 낮은 제한을 설정할 수 있습니다.정책을 적용해도 인스턴스가 여러 인스턴스 그룹과 연결되는 것을 적극적으로 차단하지는 않지만 백분율을 100으로 추가하면 됩니다.
4개의 인스턴스 그룹이 있는 경우 각각 백분율 값 25를 할당하고 인스턴스가 겹치지 않고 해당 그룹 간에 배포됩니다.
18.1.5. 인스턴스를 특정 그룹에 수동으로 고정 링크 복사링크가 클립보드에 복사되었습니다!
특정 인스턴스 그룹에만 할당되어야 하는 특수 인스턴스가 있지만 "percentage" 또는 "최소" 정책으로 다른 그룹에 자동으로 참여하지 않도록 하려면 다음을 수행합니다.
프로세스
-
하나 이상의 인스턴스 그룹의
policy_instance_list에 인스턴스를 추가합니다. -
인스턴스의
managed_by_policy속성을False로 업데이트합니다.
이렇게 하면 백분율 및 최소 정책에 따라 인스턴스가 다른 그룹에 자동으로 추가되지 않습니다. 이는 수동으로 할당한 그룹에만 속합니다.
18.1.6. 작업 런타임 동작 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스 그룹과 연결된 작업을 실행하는 경우 다음 동작을 기록해 둡니다.
- 클러스터를 별도의 인스턴스 그룹으로 나누면 클러스터 전체와 비슷하게 작동합니다.
- 그룹에 두 개의 인스턴스를 할당하면 동일한 그룹의 다른 인스턴스처럼 작업이 수신될 가능성이 높습니다.
- 자동화 컨트롤러 인스턴스가 온라인 상태가 되면 시스템의 작업 용량이 효과적으로 확장됩니다.
- 해당 인스턴스를 인스턴스 그룹에 배치하면 해당 그룹의 용량도 확장됩니다.
- 인스턴스가 작업을 수행하고 여러 그룹의 멤버인 경우 해당 용량이 멤버인 모든 그룹에서 용량이 줄어듭니다.
- 인스턴스를 프로비저닝 해제하면 인스턴스가 할당될 때마다 클러스터에서 용량을 제거합니다. 자세한 내용은 인스턴스 그룹 프로비저닝 섹션을 참조하십시오.
모든 인스턴스를 동일한 용량으로 프로비저닝해야 하는 것은 아닙니다.
18.1.7. 작업이 실행되는 위치 제어 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스 그룹을 작업 템플릿, 인벤토리 또는 조직과 연결하는 경우 해당 작업 템플릿에서 실행되는 작업은 기본 동작을 수행할 수 없습니다. 즉, 이 세 개의 리소스와 연결된 인스턴스 그룹 내의 모든 인스턴스가 용량이 부족하면 용량을 사용할 수 있을 때까지 작업이 보류 중 상태로 유지됩니다.
작업을 제출할 인스턴스 그룹을 결정하는 기본 설정 순서는 다음과 같습니다.
- 작업 템플릿
- 인벤토리
- 조직(프로젝트를 통해)
인스턴스 그룹을 작업 템플릿과 연결하고 모든 작업이 용량에 있는 경우 인벤토리에 지정된 인스턴스 그룹 및 조직에 제출됩니다. 해당 그룹에서는 리소스를 사용할 수 있으므로 작업이 우선 순위순으로 실행되어야 합니다.
플레이북에 정의된 사용자 지정 인스턴스 그룹과 같은 글로벌 기본 그룹을 리소스와 연결할 수 있습니다. 이 인스턴스를 사용하여 작업 템플릿 또는 인벤토리에서 기본 인스턴스 그룹을 지정할 수 있지만, 용량이 부족한 경우에도 작업을 모든 인스턴스에 제출할 수 있습니다.
-
를 작업 템플릿과 연결하고group_adefault그룹을 해당 인벤토리와 연결하는 경우 group_a가 용량 부족인 경우default그룹을 폴백으로 사용할 수 있습니다. - 또한 인스턴스 그룹을 하나의 리소스와 연결하지 않고 다른 리소스를 폴백으로 선택할 수 있습니다. 예를 들어 인스턴스 그룹을 작업 템플릿과 연결하지 않고 인벤토리 또는 조직의 인스턴스 그룹으로 대체됩니다.
이는 다음과 같은 사항을 제공합니다.
- 인스턴스 그룹을 인벤토리와 연결하여(인스턴스 그룹에 작업 템플릿을 할당하지 않음) 특정 인벤토리에 대해 실행되는 모든 플레이북이 연결된 그룹에서만 실행되도록 합니다. 이 기능은 해당 인스턴스에만 관리 노드에 대한 직접 링크가 있는 경우에 유용합니다.
관리자는 조직에 인스턴스 그룹을 할당할 수 있습니다.
이를 통해 관리자는 전체 인프라를 분할하고 각 조직이 작업을 실행할 수 있는 다른 조직의 기능을 방해하지 않고 작업을 실행할 수 있는 용량을 확보할 수 있습니다.
관리자는 다음 시나리오와 유사하게 각 조직에 여러 그룹을 할당할 수 있습니다.
- 세 개의 인스턴스 그룹이 있습니다. A, B 및 C. 조직의 조직: Org1 및 Org2
- 관리자는 Org1 에 그룹 A 를, Org2 에 B 를 그룹화한 다음, 필요한 추가 용량에 대한 오버플로로 Org1 및 Org2 모두에 그룹 C 를 할당합니다.
- 그러면 조직 관리자가 원하는 그룹에 인벤토리 또는 작업 템플릿을 자유롭게 할당하거나 조직에서 기본 순서를 상속하도록 할 수 있습니다.
이러한 방식으로 리소스를 배치하면 유연성을 제공합니다. 하나의 인스턴스만으로 인스턴스 그룹을 생성하여 자동화 컨트롤러 클러스터에서 매우 구체적인 호스트로 작업을 보낼 수도 있습니다.
18.1.8. 인스턴스 그룹 용량 제한 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스 그룹으로 전송되는 작업의 동시성 또는 사용할 최대 포크 수를 제한해야 하는 외부 비즈니스 논리가 있습니다.
기존 인스턴스 및 인스턴스 그룹의 경우 두 조직이 동일한 기본 인스턴스에서 작업을 실행할 수 있지만 각 조직의 총 동시 작업 수를 제한할 수 있습니다. 이를 위해 각 조직의 인스턴스 그룹을 생성하고 max_concurrent_jobs 의 값을 할당할 수 있습니다.
자동화 컨트롤러 그룹의 경우 자동화 컨트롤러는 일반적으로 OpenShift 클러스터의 리소스 제한을 인식하지 못합니다. 네임스페이스의 Pod 수에 제한을 설정하거나 자동 스케일링이 없는 경우 한 번에 특정 수의 Pod를 예약하는 데 사용할 수 있는 리소스만 설정할 수 있습니다. 이 경우 max_concurrent_jobs 의 값을 조정할 수 있습니다.
사용 가능한 또 다른 매개변수는 max_forks 입니다. 이는 인스턴스 그룹 또는 컨테이너 그룹에서 사용되는 용량을 제한하기 위한 추가 유연성을 제공합니다. 다양한 인벤토리 크기 및 "포크" 값이 실행되는 경우 이 작업을 사용할 수 있습니다. 조직에서 동시에 최대 10개의 작업을 실행하도록 제한할 수 있지만 한 번에 최대 50개의 포크를 사용할 수 없습니다.
max_concurrent_jobs: 10 max_forks: 50
max_concurrent_jobs: 10
max_forks: 50
포크 5개를 사용하는 10개의 작업이 각각 실행되면 11번째 작업은 해당 그룹 중 하나가 완료될 때까지 기다립니다(또는 용량이 있는 다른 그룹에서 예약됨).
각각 20개의 포크로 2개의 작업이 실행 중인 경우 task_impact 가 11개 이상인 세 번째 작업은 해당 그룹 중 하나가 완료될 때까지 기다립니다(또는 용량이 있는 다른 그룹에서 예약됨).
컨테이너 그룹의 경우 작업의 "포크" 값에 관계없이 동일한 리소스 요청이 있는 동일한 pod_spec 을 사용하여 모든 작업이 제출되는 경우 max_forks 값을 사용하는 것이 유용합니다. 기본 pod_spec 은 제한이 아닌 요청을 설정하므로 Pod는 제한되거나 다시 실행되지 않고 요청된 값 이상으로 "브스트링"할 수 있습니다. max_forks 값을 설정하면 포크 값이 너무 많은 작업이 동시에 예약되고 요청된 값보다 많은 리소스를 사용하여 여러 Pod로 OpenShift 노드가 오버서브스크립션되는 시나리오를 방지할 수 있습니다.
인스턴스 그룹에서 동시 작업 및 포크의 최대 값을 설정하려면 인스턴스 그룹 생성을 참조하십시오.
18.1.9. 인스턴스 그룹 프로비저닝 해제 링크 복사링크가 클립보드에 복사되었습니다!
현재 클러스터는 의도적으로 또는 오류로 인해 오프라인 상태로 전환된 인스턴스를 구분하지 않으므로 설정 플레이북을 다시 실행하면 인스턴스가 프로비저닝 해제되지 않습니다. 대신 자동화 컨트롤러 인스턴스에서 모든 서비스를 종료한 다음 다른 인스턴스에서 프로비저닝 해제 툴을 실행합니다.
프로세스
다음 명령을 사용하여 인스턴스를 종료하거나 서비스를 중지합니다.
automation-controller-service stop
automation-controller-service stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 인스턴스에서 다음 프로비저닝 해제 명령을 실행하여 컨트롤러 클러스터 레지스트리에서 제거합니다.
awx-manage deprovision_instance --hostname=<name used in inventory file>
awx-manage deprovision_instance --hostname=<name used in inventory file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들면 다음과 같습니다
awx-manage deprovision_instance --hostname=hostB
awx-manage deprovision_instance --hostname=hostB
자동화 컨트롤러에서 인스턴스 그룹을 프로비저닝 해제해도 인스턴스 그룹을 자동으로 프로비저닝 해제하거나 제거하지는 종종 다시 프로비저닝되지 않는 경우가 많습니다. API 끝점 및 통계 모니터링에 계속 표시될 수 있습니다. 다음 명령을 사용하여 이러한 그룹을 제거할 수 있습니다.
awx-manage unregister_queue --queuename=<name>
awx-manage unregister_queue --queuename=<name>
인벤토리 파일의 인스턴스 그룹에서 인스턴스 멤버십을 제거하고 설정 플레이북을 다시 실행하면 인스턴스가 그룹에 다시 추가되지 않습니다. 인스턴스가 그룹에 다시 추가되지 않도록 하려면 API를 통해 해당 인스턴스를 제거하고 인벤토리 파일에서도 제거합니다. 인벤토리 파일에서 인스턴스 그룹 정의를 중지할 수도 있습니다. 자동화 컨트롤러 UI를 통해 인스턴스 그룹 토폴로지를 관리할 수 있습니다. UI에서 인스턴스 그룹을 관리하는 방법에 대한 자세한 내용은 인스턴스 그룹 관리를 참조하십시오.
이전 버전의 자동화 컨트롤러(3.8.x 및 이전 버전)에서 생성된 격리된 인스턴스 그룹이 있고 이를 실행 노드로 마이그레이션하여 자동화 메시 아키텍처와 함께 사용할 수 있도록 하려면 Ansible Automation Platform 업그레이드 및 마이그레이션 가이드의 실행 노드로 격리된 인스턴스 마이그레이션을 참조하십시오.
18.2. 컨테이너 그룹 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform은 자동화 컨트롤러가 독립 실행형으로 설치되었는지, 가상 환경 또는 컨테이너에 설치되어 있는지 여부에 관계없이 자동화 컨트롤러에서 작업을 실행할 수 있는 컨테이너 그룹을 지원합니다.
컨테이너 그룹은 가상 환경 내에서 리소스 풀 역할을 합니다.
OpenShift 컨테이너를 가리키는 인스턴스 그룹을 생성할 수 있습니다. 이러한 작업은 플레이북 실행 기간 동안만 존재하는 Pod로 온디맨드로 프로비저닝되는 작업 환경입니다. 이를 임시 실행 모델이라고 하며, 모든 작업이 새 환경에서 실행되도록 합니다.
경우에 따라 컨테이너 그룹을 "항상"으로 설정할 수 있으며, 이 경우 인스턴스 생성을 통해 구성할 수 있습니다.
자동화 컨트롤러 4.0이 다시 기본값으로 되돌리기 전에 버전에서 업그레이드된 컨테이너 그룹은 마이그레이션의 모든 사용자 지정 Pod 정의를 지우고 이전 Pod 정의를 제거합니다.
컨테이너 그룹은 실행 환경의 실행 환경과는 다르며 가상 환경을 사용하지 않습니다. 자세한 내용은 실행 환경을 참조하십시오.
18.2.1. 컨테이너 그룹 생성 링크 복사링크가 클립보드에 복사되었습니다!
ContainerGroup 은 OpenShift 클러스터에 연결할 수 있는 관련 인증 정보가 있는 InstanceGroup 의 유형입니다.
사전 요구 사항
- 시작할 수 있는 네임스페이스입니다. 모든 클러스터에는 "default" 네임스페이스가 있지만 특정 네임스페이스를 사용할 수 있습니다.
- 이 네임스페이스에서 Pod를 시작하고 관리할 수 있는 역할이 있는 서비스 계정입니다. 자세한 내용은 OpenShift Container Platform 또는 Kubernetes에서 서비스 계정 생성 을 참조하십시오.
-
프라이빗 레지스트리에서 실행 환경을 사용하고 자동화 컨트롤러에 컨테이너 레지스트리 인증 정보가 있는 경우 서비스 계정에는 네임스페이스에서 시크릿을 가져오고, 생성하고, 삭제하는 역할도 필요합니다. 이러한 역할을 서비스 계정에 부여하지 않으려면
ImagePullSecrets를 사전 생성하여ContainerGroup의 Pod 사양에 지정할 수 있습니다. 이 경우 실행 환경에 컨테이너 레지스트리 인증 정보가 연결되어 있지 않아야 합니다. 또는 자동화 컨트롤러에서 네임스페이스에서 시크릿을 생성하려고 시도하지 않아야 합니다. - 해당 서비스 계정과 연결된 토큰입니다. OpenShift 또는 Kubernetes 전달자 토큰입니다.
- 클러스터와 연결된 CA 인증서입니다.
프로세스
- 탐색 패널에서 → → 선택합니다.
- 을 클릭하고 Create container group 을 선택합니다.
- 새 컨테이너 그룹의 이름을 입력하고 생성한 인증 정보를 선택하여 컨테이너 그룹에 연결합니다.
- 클릭합니다.
- Pod 사양 사용자 지정 상자를 선택하고 이전 단계에서 사용한 네임스페이스 및 서비스 계정 이름을 포함하도록 Pod 사양 덮어쓰기 를 편집합니다.
18.2.2. OpenShift Container Platform 또는 Kubernetes에서 서비스 계정 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 클러스터 또는 Kubernetes의 서비스 계정을 사용하여 자동화 컨트롤러를 통해 컨테이너 그룹에서 작업을 실행합니다. 서비스 계정이 생성되면 해당 인증 정보가 OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보 형태로 자동화 컨트롤러에 제공됩니다.
프로세스
서비스 계정을 생성하려면 다음 샘플 서비스 계정 예제인
containergroup sa를 다운로드하여 사용하여 인증 정보를 얻으려면 필요에 따라 변경합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow containergroup-sa.yml:의 구성을 적용합니다.oc apply -f containergroup-sa.yml
oc apply -f containergroup-sa.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 계정 토큰을 생성하여 API 토큰을 가져옵니다.
oc create token containergroup-service-account --duration=$((365*24))h > containergroup-sa.token
oc create token containergroup-service-account --duration=$((365*24))h > containergroup-sa.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow CA 인증서를 가져옵니다.
oc get secret -n openshift-ingress wildcard-tls -o jsonpath='{.data.ca\.crt}' | base64 -d > containergroup-ca.crtoc get secret -n openshift-ingress wildcard-tls -o jsonpath='{.data.ca\.crt}' | base64 -d > containergroup-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
containergroup-sa.token및containergroup-ca.crt의 콘텐츠를 사용하여 컨테이너 그룹에 필요한 OpenShift 또는 Kubernetes API 전달자 토큰에 대한 정보를 제공합니다.
컨테이너 그룹을 생성하려면 컨테이너 그룹과 함께 사용할 OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보를 생성합니다. 자세한 내용은 새 인증 정보 생성 을 참조하십시오.
18.2.3. Pod 사양 사용자 정의 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform은 간단한 기본 Pod 사양을 제공하지만 기본 Pod 사양을 재정의하는 사용자 정의 YAML 또는 JSON 문서를 제공할 수 있습니다. 이 필드는 ImagePullSecrets 와 같은 사용자 지정 필드를 사용하여 유효한 Pod JSON 또는 YAML로 "serialized"할 수 있습니다. 전체 옵션 목록은 OpenShift 문서의 Pod 및 서비스 섹션에서 확인할 수 있습니다.
프로세스
- 탐색 패널에서 → → 선택합니다.
- 을 클릭하고 Create container group 을 선택합니다.
- Pod 사양 사용자 지정 옵션을 선택합니다.
Pod 사양 덮어쓰기 필드에 사용자 정의 Kubernetes 또는 OpenShift Pod 사양 을 입력합니다.
- 클릭합니다.
작업 시작 시 이미지는 작업과 연결된 실행 환경에 따라 결정됩니다. 컨테이너 레지스트리 인증 정보를 실행 환경과 연결하는 경우 자동화 컨트롤러는 ImagePullSecret 을 만들어 이미지를 가져오려고 시도합니다. 서비스 계정에 시크릿을 관리할 수 있는 권한을 부여하지 않으려면 ImagePullSecret 을 사전 생성하여 Pod 사양에 지정하고 사용된 실행 환경에서 인증 정보를 생략해야 합니다.
자세한 내용은 Red Hat Container Registry Authentication 문서 의 다른 보안 레지스트리의 이미지를 참조하도록 포드 허용 섹션을 참조하십시오.
컨테이너 그룹을 성공적으로 생성하면 새로 생성된 컨테이너 그룹의 세부 정보 탭이 유지되므로 컨테이너 그룹 정보를 검토하고 편집할 수 있습니다. 인스턴스 그룹 목록 뷰에서
아이콘을 클릭하면 열리는 메뉴와 같습니다.
인스턴스를 편집하고 이 인스턴스 그룹과 연결된 작업을 검토할 수도 있습니다.
그에 따라 컨테이너 그룹과 인스턴스 그룹의 레이블이 지정됩니다.
18.2.4. 컨테이너 그룹 기능 확인 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너 배포 및 종료를 확인하려면 다음을 수행합니다.
프로세스
mock 인벤토리를 생성하고 인스턴스 그룹 필드에 있는 컨테이너 그룹의 이름을 채워 컨테이너 그룹을 이 그룹에 연결합니다. 자세한 내용은 새 인벤토리 추가를 참조하십시오.
다음 변수를 사용하여 인벤토리에서
localhost호스트를 생성합니다.{'ansible_host': '127.0.0.1', 'ansible_connection': 'local'}{'ansible_host': '127.0.0.1', 'ansible_connection': 'local'}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ping 또는 setup 모듈을 사용하여 localhost에 임시 작업을 시작합니다. Machine Credential 필드가 필수지만 이 테스트에서 선택한 것은 중요하지 않습니다.
작업 세부 정보 뷰에서 애드혹 작업 중 하나를 사용하여 컨테이너에 성공적으로 도달했음을 확인할 수 있습니다.
OpenShift UI가 있는 경우 Pod가 배포 및 종료될 때 표시되고 사라지는 것을 확인할 수 있습니다. CLI를 사용하여 네임스페이스에서 get Pod 작업을 수행하여 동일한 이벤트가 발생하는 것을 실시간으로 확인할 수도 있습니다.
18.2.5. 컨테이너 그룹 작업 보기 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너 그룹과 연결된 작업을 실행하면 세부 정보 탭에서 해당 작업의 세부 정보를 확인할 수 있습니다. 연결된 컨테이너 그룹 및 실행 환경을 볼 수도 있습니다.
프로세스
- 탐색 패널에서 → .
- 컨테이너 그룹 작업을 볼 작업을 클릭합니다.
- 세부 정보 탭을 클릭합니다.
18.2.6. Kubernetes API 실패 상태 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너 그룹을 실행하고 Kubernetes API에서 리소스 할당량을 초과했다고 응답하는 경우 자동화 컨트롤러는 작업을 보류 상태로 유지합니다. 기타 실패로 인해 다음 예와 같이 실패 이유를 표시하는 Error Details 필드가 역추적됩니다.
Error creating pod: pods is forbidden: User "system: serviceaccount: aap:example" cannot create resource "pods" in API group "" in the namespace "aap"
Error creating pod: pods is forbidden: User "system: serviceaccount: aap:example" cannot create resource "pods" in API group "" in the namespace "aap"
18.2.7. 컨테이너 용량 제한 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너의 용량 제한 및 할당량은 Kubernetes API의 오브젝트로 정의됩니다.
-
지정된 네임스페이스 내의 모든 Pod에 제한을 설정하려면
LimitRange오브젝트를 사용합니다. 자세한 내용은 OpenShift 문서의 할당량 및 제한 범위 섹션을 참조하십시오. - 자동화 컨트롤러에서 시작한 포드 정의에 제한을 직접 설정하려면 OpenShift 문서 의 포드 사양 사용자 지정 및 컴퓨팅 리소스 섹션을 참조하십시오.
컨테이너 그룹은 일반 노드가 사용하는 용량 알고리즘을 사용하지 않습니다. 작업 템플릿 수준에서 포크 수를 설정해야 합니다. 자동화 컨트롤러에서 포크를 구성하면 해당 설정이 컨테이너로 전달됩니다.
19장. 인스턴스를 사용하여 용량 관리 링크 복사링크가 클립보드에 복사되었습니다!
자동화 메시 확장은 Red Hat Ansible Automation Platform의 OpenShift 배포에서 사용할 수 있으며 설치 스크립트를 실행하지 않고도 UI의 인스턴스 리소스를 사용하여 동적으로 클러스터에서 노드를 추가하거나 제거할 수 있습니다.
인스턴스는 메시 토폴로지에서 노드로 작동합니다. 자동화 메시를 사용하면 자동화의 설치 공간을 확장할 수 있습니다. 작업을 시작하는 위치는 ansible-playbook이 실행되는 위치와 다를 수 있습니다.
UI에서 인스턴스를 관리하려면 시스템 관리자 또는 시스템 감사자 권한이 있어야 합니다.
일반적으로 노드에 있는 프로세서 코어(CPU) 및 메모리(RAM)가 많을수록 해당 노드에서 실행되도록 예약할 수 있는 작업이 한 번에 더 많습니다.
자세한 내용은 자동화 컨트롤러 용량 결정 및 작업 영향을 참조하십시오.
19.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
자동화 메시는 RHEL( Red Hat Enterprise Linux )에서 실행되는 홉 노드 및 실행 노드에 따라 다릅니다. Red Hat Ansible Automation Platform 서브스크립션은 Ansible Automation Platform의 구성 요소를 실행하는 데 사용할 수 있는 10개의 Red Hat Enterprise Linux 라이센스를 부여합니다.
Red Hat Enterprise Linux 서브스크립션에 대한 자세한 내용은 시스템 등록 및 Red Hat Enterprise Linux 설명서의 서브스크립션 관리를 참조하십시오.
다음 단계에서는 자동화 메시의 배포를 위해 RHEL 인스턴스를 준비합니다.
- Red Hat Enterprise Linux 운영 체제가 필요합니다. 메시의 각 노드에는 고정 IP 주소 또는 Ansible Automation Platform에서 액세스할 수 있는 확인 가능한 DNS 호스트 이름이 필요합니다.
- 계속하기 전에 RHEL 가상 머신에 대한 최소 요구 사항이 있는지 확인합니다. 자세한 내용은 시스템 요구 사항을 참조하십시오.
통신이 필요한 원격 네트워크에 RHEL 인스턴스를 배포합니다. 가상 머신 생성에 대한 자세한 내용은 Red Hat Enterprise Linux 설명서에서 가상 머신 생성 을 참조하십시오. 제안된 작업을 실행할 수 있도록 가상 머신의 용량을 충분히 확장해야 합니다.
- RHEL ISO는 access.redhat.com에서 가져올 수 있습니다.
- RHEL 클라우드 이미지는 console.redhat.com의 이미지 빌더를 사용하여 빌드할 수 있습니다.
19.2. 시크릿 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
(자동화 컨트롤러와 함께 제공됨)를 사용하여 원격 실행 노드에서 실행하는 경우 실행 환경 이미지를 가져오기 위한 인증 정보가 포함된 가져오기 보안을 자동화 컨트롤러에 추가해야 합니다.
이렇게 하려면 자동화 컨트롤러 네임스페이스에 풀 시크릿을 생성하고 다음과 같이 Operator에서 ee_pull_credentials_secret 매개변수를 구성합니다.
프로세스
보안을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ee_pull_credentials_secret ee-pull-secret을 사양에 추가합니다.spec.ee_pull_credentials_secret=ee-pull-secret
spec.ee_pull_credentials_secret=ee-pull-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
자동화 컨트롤러 UI에서 인스턴스를 관리하려면 시스템 관리자 권한이 있어야 합니다.
19.3. 자동화 메시에서 사용할 가상 머신 설정 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
각 RHEL 인스턴스에 SSH로 연결하고 다음 단계를 수행합니다. 네트워크 액세스 및 제어에 따라 SSH 프록시 또는 기타 액세스 모델이 필요할 수 있습니다.
다음 명령을 사용합니다.
ssh [username]@[host_ip_address]
ssh [username]@[host_ip_address]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 Amazon Web Services에서 실행되는 Ansible Automation Platform 인스턴스의 경우입니다.
ssh ec2-user@10.0.0.6
ssh ec2-user@10.0.0.6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 홉 노드에서 실행 노드로 연결하는 데 사용할 수 있는 SSH 키를 생성하거나 복사합니다. 이는 자동화 메시 구성 또는 장기 키에만 사용되는 임시 키일 수 있습니다. SSH 사용자 및 키는 이후 단계에서 사용됩니다.
baseos및appstream리포지토리를 사용하여 RHEL 서브스크립션을 활성화합니다. Ansible Automation Platform RPM 리포지토리는 RHSM( Red Hat Update Infrastructure )이 아닌 subscription-manager를 통해서만 사용할 수 있습니다. RHUI와 함께 RHEL을 포함한 다른 Linux 풋프린트를 사용하려고 하면 오류가 발생합니다.sudo subscription-manager register --auto-attach
sudo subscription-manager register --auto-attachCopy to Clipboard Copied! Toggle word wrap Toggle overflow 계정에 Simple Content Access가 활성화된 경우 다음을 사용하십시오.
sudo subscription-manager register
sudo subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Simple Content Access에 대한 자세한 내용은 간단한 콘텐츠 액세스 시작하기를 참조하십시오.
Ansible Automation Platform 서브스크립션 및 적절한 Red Hat Ansible Automation Platform 채널을 활성화합니다.
RHEL 8의 경우
subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms
# subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-8-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 9의 경우
subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms
# subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-9-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ARM의 경우
subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-aarch64-rpms
# subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-aarch64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 패키지가 최신 상태인지 확인합니다.
sudo dnf upgrade -y
sudo dnf upgrade -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다운로드한 번들을 실행할 시스템에 ansible-core 패키지를 설치합니다.
sudo dnf install -y ansible-core
sudo dnf install -y ansible-coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고Ansible 코어는 자동화 메시 구성 번들 플레이북을 실행하는 머신에 필요합니다. 이 문서에서는 실행 노드에서 발생하는 것으로 가정합니다. 그러나 다른 시스템에서 플레이북을 실행하는 경우 이 단계를 생략할 수 있습니다. 제어 노드에서 직접 실행할 수는 없지만 현재 지원되지 않지만 나중에 제어 노드가 실행 노드에 직접 연결되어 있을 것으로 예상합니다.
19.4. 인스턴스 관리 링크 복사링크가 클립보드에 복사되었습니다!
작업 용량을 확장하려면 자동화 컨트롤러 배포와 함께 실행되도록 추가할 수 있는 독립 실행형 실행 노드를 생성합니다. 이러한 실행 노드는 자동화 컨트롤러 Kubernetes 클러스터의 일부가 아닙니다.
컨트롤 노드는 클러스터에서 실행되며 수신기를 통해 실행 노드에 작업을 제출합니다.
이러한 실행 노드는 자동화 컨트롤러에 유형 실행 인스턴스로 등록되므로 작업을 실행하는 데만 사용되며, 작업을 디스패치하거나 웹 요청을 컨트롤 노드로 처리할 수 없습니다.
실행 노드를 생성할 때 실행 노드의 시스템 시간대가 설정과 일치하는지 확인합니다. 자동화 컨트롤러의TIME_ZONE (기본값은 'UTC')입니다. 사실 캐싱은 수정된 아티팩트 파일 시간을 비교하는 데 의존하며 이러한 수정된 시간은 시간대를 인식하지 못합니다. 따라서 실행 노드의 시간대가 자동화 컨트롤러의 시간대 설정과 일치해야 합니다.
홉 노드를 추가하여 자동화 컨트롤러의 컨트롤 플레인과 독립 실행형 실행 노드 사이에 있을 수 있습니다. 이러한 홉 노드는 Kubernetes 클러스터의 일부가 아니며 유형 홉 인스턴스로 자동화 컨트롤러에 등록되므로 다른 또는 보다 엄격한 네트워크의 연결할 수 없는 노드에 대한 인바운드 및 아웃바운드 트래픽만 처리합니다.
다음 절차에서는 호스트의 노드 유형을 설정하는 방법을 보여줍니다.
프로세스
- 탐색 패널에서 → 선택합니다.
인스턴스 목록 페이지에서 를 클릭합니다. 인스턴스 추가 창이 열립니다.
인스턴스에는 다음 속성이 필요합니다.
호스트 이름: (필수) 인스턴스의 정규화된 도메인 이름(공용 DNS) 또는 IP 주소를 입력합니다. 이 필드는 설치 프로그램 기반 배포의
호스트이름과 동일합니다.참고인스턴스에서 제어 클러스터에서 확인할 수 없는 프라이빗 DNS를 사용하는 경우 DNS 조회 라우팅이 실패하고 생성된 SSL 인증서가 유효하지 않습니다. 대신 IP 주소를 사용합니다.
- 선택 사항: 설명: 인스턴스에 대한 설명을 입력합니다.
- 인스턴스 상태: 이 필드는 자동으로 채워져 있으며 설치할 수 없음을 나타냅니다.
-
리스너 포트: 이 포트는 수신기가 들어오는 연결을 수신 대기하는 데 사용됩니다. 구성에 적합한 포트 를 설정할 수 있습니다. 이 필드는 API의
listener_port와 동일합니다. 기본값은 27199이지만 고유한 포트 값을 설정할 수 있습니다. 인스턴스 유형:
실행및홉노드만 생성할 수 있습니다. Operator 기반 배포는 컨트롤 또는 하이브리드 노드를 지원하지 않습니다.옵션:
- 인스턴스 활성화: 실행 노드에서 작업을 실행할 수 있도록 하려면 이 상자를 선택합니다.
- 정책에 따라 Managed by policy 확인란을 선택하여 인스턴스 할당 방법을 지정합니다.
컨트롤 노드의 피어:
홉 노드를 구성하는 경우:
- 홉 노드에 자동화 컨트롤러에서 직접 요청을 푸시해야 하는 경우 컨트롤에서 피어 박스를 선택합니다.
- 홉 노드가 다른 홉 노드로 피어링된 경우 Control에서 Peers 를 선택하지 않았는지 확인합니다.
실행 노드를 구성하는 경우:
- 실행 노드에 자동화 컨트롤러에서 직접 요청을 푸시해야 하는 경우 컨트롤에서 피어 박스를 선택합니다.
- 실행 노드가 홉 노드에 피어링된 경우 Control에서 Peers 를 선택하지 않았는지 확인합니다.
- 를 클릭합니다.
업데이트된 토폴로지의 그래픽 표시를 보려면 토폴로지 보기를 참조하십시오.
참고새로 생성된 인스턴스에 대한 SSH 액세스 권한이 있는 모든 컴퓨터에서 다음 단계를 완료합니다.
번들 다운로드 옆에 있는
아이콘을 클릭하여 이 새 인스턴스가 포함된 tar 파일과 생성된 노드를 자동화 메시에 설치하는 데 필요한 파일을 다운로드합니다.
설치 번들에는 TLS 인증서 및 키, 인증 기관 및 적절한 수신기 구성 파일이 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
다운로드한
tar.gzInstall Bundle을 다운로드한 위치에서 추출합니다. 이러한 파일이 원격 시스템의 올바른 위치에 있는지 확인하기 위해 설치 번들에install_receptor.yml플레이북이 포함됩니다. ansible-playbook명령을 실행하기 전에inventory.yml파일에서 다음 필드를 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ansible_host가 노드의 IP 주소 또는 DNS로 설정되어 있는지 확인합니다. -
ansible_user를 설치를 실행하는 사용자 이름으로 설정합니다. -
인스턴스에 연결하는 데 사용되는
개인 키의 파일 이름을 포함하도록 ansible_ssh_private_key_file을 설정합니다. -
inventory.yml파일의 내용은 템플릿 역할을 하며 메시 토폴로지에서 수신기 노드의 설치 및 구성 중에 적용되는 역할에 대한 변수를 포함합니다. 기타 일부 필드를 수정하거나 고급 시나리오에 대해 전체적으로 파일을 교체할 수 있습니다. 자세한 내용은 역할 변수 를 참조하십시오.
-
프라이빗 DNS를 사용하는 노드의 경우
inventory.yml:에 다음 행을 추가합니다.ansible_ssh_common_args: <your ssh ProxyCommand setting>
ansible_ssh_common_args: <your ssh ProxyCommand setting>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 proxy 명령을 사용하여 로컬 DNS 노드를 프라이빗 노드에 연결하도록
install-receptor.yml플레이북에 지시합니다.- 속성이 구성된 경우 클릭합니다. 생성된 인스턴스의 세부 정보 페이지가 열립니다.
- 계속하려면 파일을 저장합니다.
설치 번들을 실행하여 원격 노드를 설정하고
ansible-playbook을 실행하려면ansible.receptor컬렉션을 설치해야 합니다.ansible-galaxy collection install ansible.receptor
ansible-galaxy collection install ansible.receptorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 또는
ansible-galaxy install -r requirements.yml
ansible-galaxy install -r requirements.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
requirements.yml파일에서 수신기 컬렉션 종속성을 설치하면 지정된 수신기 버전을 일관되게 검색합니다. 또한 나중에 필요할 수 있는 다른 컬렉션 종속성도 검색합니다. - 플레이북이 실행될 모든 노드에 수신기 컬렉션을 설치합니다. 그렇지 않으면 오류가 발생합니다.
-
receiver
_listener_port가 정의된 경우 시스템은 인바운드 TCP 연결을 설정하기 위해 사용 가능한 오픈 포트(예: 27199)도 필요합니다. 다음 명령을 실행하여 수신기 통신을 위해 포트 27199를 엽니다(방화 방화벽에 포트 27199가 열려 있는지 확인).sudo firewall-cmd --permanent --zone=public --add-port=27199/tcp
sudo firewall-cmd --permanent --zone=public --add-port=27199/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 자동화 메시를 업데이트할 머신에서 다음 플레이북을 실행합니다.
ansible-playbook -i inventory.yml install_receptor.yml
ansible-playbook -i inventory.yml install_receptor.yml
+
이 플레이북에는 OpenSSL이 필요합니다. 다음 명령을 실행하여 설치할 수 있습니다.
openssl -v
openssl -v
이 값이 반환되면 버전 OpenSSL이 설치됩니다. 그렇지 않으면 다음을 사용하여 OpenSSL을 설치해야 합니다.
sudo dnf install -y openssl
sudo dnf install -y openssl
+ 이 플레이북이 실행되면 자동화 메시가 구성됩니다.
일부 서버가 수신기 포트에서 수신 대기하지 않는 경우일 수 있습니다(기본값은 27199).
A, B 및 C 노드가 있는 컨트롤 플레인이 있다고 가정합니다.
다음은 세 개의 컨트롤러 노드에 설정된 피어링입니다.
컨트롤러 노드 A - Cryostat 컨트롤러 노드 B
컨트롤러 노드 A - Cryostat 컨트롤러 노드 C
컨트롤러 노드 B - Cryostat 컨트롤러 노드 C
설정을 설정하여 리스너를 강제 수행할 수 있습니다.
receptor_listener=True
그러나 연결 컨트롤러 B - Cryostat A는 해당 연결이 이미 존재하므로 거부될 수 있습니다.
즉, 컨트롤러 A에 컨트롤러 A에 연결하지 않고 다른 노드에 대한 연결을 생성하고 다음 명령은 컨트롤러 A에서 아무것도 반환하지 않습니다.
[root@controller1 ~]# ss -ntlp | grep 27199 [root@controller1 ~]#
RPM 설치 프로그램은 최소 권한 있는 접근 방식을 사용하여 컨트롤 플레인 노드 간에 강력하게 연결된 피어링을 생성하고 필요한 노드에서만 tcp 리스너를 엽니다. 모든 수용체 연결은 양방향이므로 연결이 생성되면 수신기가 두 방향으로 통신할 수 있습니다.
메시에서 인스턴스를 제거하려면 인스턴스 제거를 참조하십시오. r
19.5. 인스턴스 제거 링크 복사링크가 클립보드에 복사되었습니다!
인스턴스 페이지에서 노드에서 상태 점검을 추가, 제거 또는 실행할 수 있습니다.
생성하는 추가 노드에 대해 RHEL 패키지를 설치하는 절차를 따라야 합니다. 이 추가 노드를 기존 홉 노드에 피어링하는 경우 각 노드에 Install Bundle도 설치해야 합니다.
인스턴스 옆에 있는 확인란을 사용하여 제거할 인스턴스를 선택하거나 상태 점검을 실행합니다.
- UI를 사용하여 노드를 제거하면 노드는 "제거됨"이며 상태가 표시되지 않습니다. UI에서 제거되기 전에 노드의 VM을 삭제하면 오류가 표시됩니다.
- 토폴로지가 통신 패턴, 즉 홉 노드가 변경되거나 노드를 추가하는 경우에만 Install Bundle을 다시 설치해야 합니다.
버튼이 비활성화되면 해당 특정 작업에 대한 권한이 없습니다. 관리자에게 문의하여 필요한 액세스 수준을 부여합니다.
인스턴스를 제거할 수 있는 경우 확인 프롬프트가 표시됩니다.
활성 상태이고 작업이 실행 중인 경우에도 인스턴스를 제거할 수 있습니다. 자동화 컨트롤러는 이 노드에서 실행되는 작업이 제거되기 전에 완료될 때까지 기다립니다.
20장. 실행 환경 링크 복사링크가 클립보드에 복사되었습니다!
실행 환경은 시스템 수준의 종속성 및 컬렉션 기반 콘텐츠를 통합할 수 있는 컨테이너 이미지입니다. 각 실행 환경을 사용하면 작업을 실행할 수 있는 사용자 지정 이미지를 사용할 수 있으며 작업을 실행할 때 필요한 항목만 있습니다.
실행 환경 페이지의 기본 보기는 실행 환경 이름 및 해당 이미지 이름으로 접혀 있습니다. 실행 환경 이름을 선택하면 자세한 내용은 항목이 확장됩니다.
나열된 각 실행 환경에 대해
를 사용하여 선택한 실행 환경의 속성을 편집하거나 Cryostat를 사용하여 실행 환경을 복제할 수 있습니다. 세부 정보 페이지에서도 사용할 수 있습니다.
20.1. 실행 환경 빌드 링크 복사링크가 클립보드에 복사되었습니다!
Ansible 콘텐츠가 기본 환경 대신 사용자 지정 가상 환경에 종속되는 경우 추가 단계를 수행해야 합니다. 호스트 시스템에 설치된 다른 소프트웨어와 잘 상호 작용하는 각 노드에 패키지를 설치하고 동기화 상태로 유지해야 합니다.
이 프로세스를 단순화하기 위해 Ansible Control 노드 역할을 하는 컨테이너 이미지를 빌드할 수 있습니다. 이러한 컨테이너 이미지를 자동화 실행 환경이라고 하며 ansible-builder를 사용하여 생성할 수 있습니다. 그러면 Ansible-runner에서 해당 이미지를 사용할 수 있습니다.
20.1.1. ansible-builder 설치 링크 복사링크가 클립보드에 복사되었습니다!
이미지를 빌드하려면 ansible-builder Python 패키지와 함께 Podman 또는 Docker가 설치되어 있어야 합니다.
--container-runtime 옵션은 사용하려는 Podman 또는 Docker 실행 파일에 해당해야 합니다.
실행 환경 이미지를 빌드할 때 Ansible Automation Platform이 배포된 아키텍처를 지원해야 합니다.
20.1.2. 실행 환경에 필요한 콘텐츠 링크 복사링크가 클립보드에 복사되었습니다!
ansible-builder는 실행 환경을 생성하는 데 사용됩니다.
실행 환경에는 다음이 포함되어야 합니다.
- Ansible
- Ansible Runner
- Ansible 컬렉션
Python 및 시스템 종속 항목:
- 컬렉션의 모듈 또는 플러그인
- ansible-base의 콘텐츠
- 사용자 정의 사용자 요구 사항
새 실행 환경을 빌드하려면 컬렉션, Python 요구 사항, 시스템 수준 패키지와 같은 실행 환경에 포함할 콘텐츠를 지정하는 정의가 포함됩니다. 정의는 .yml 파일이어야 합니다.
마이그레이션에서 실행 환경으로 생성되는 출력 콘텐츠에는 파일로 파이프하거나 이 정의 파일에 붙여넣을 수 있는 몇 가지 필수 데이터가 있습니다.
20.1.3. 이미지를 빌드하는 YAML 파일의 예 링크 복사링크가 클립보드에 복사되었습니다!
ansible-builder build 명령은 실행 환경 정의를 입력으로 사용합니다. 실행 환경 이미지를 빌드하는 데 필요한 빌드 컨텍스트를 출력한 다음 해당 이미지를 빌드합니다. 이미지는 빌드 컨텍스트를 사용하여 다른 위치에 다시 빌드하고 동일한 결과를 생성할 수 있습니다. 기본적으로 빌더는 현재 디렉터리에서 execution-environment.yml 이라는 파일을 검색합니다.
다음 예제 execution-environment.yml 파일을 시작점으로 사용할 수 있습니다.
--- version: 3 dependencies: galaxy: requirements.yml
---
version: 3
dependencies:
galaxy: requirements.yml
requirements.yml 내용:
--- collections: - name: kubernetes.core
---
collections:
- name: kubernetes.core
이전 파일을 사용하여 실행 환경을 빌드하고 다음 명령을 실행합니다.
즉시 사용할 수 있는 컨테이너 이미지를 생성하는 것 외에도 빌드 컨텍스트가 유지됩니다. docker build 또는 podman build 와 같은 툴을 사용하여 다른 시간이나 위치에 다시 빌드할 수 있습니다.
추가 리소스
ansible-builder 빌드 명령에 대한 자세한 내용은 Ansible의 CLI 사용 설명서를 참조하십시오.
20.1.4. 실행 환경 마운트 옵션 링크 복사링크가 클립보드에 복사되었습니다!
실행 환경을 다시 빌드하는 것이 인증서를 추가하는 한 가지 방법이지만 호스트에서 인증서를 상속하면 보다 편리한 솔루션을 제공합니다. VM 기반 설치의 경우 자동화 컨트롤러는 작업이 실행될 때 실행 환경에 시스템 신뢰 저장소를 자동으로 마운트합니다.
실행 환경 마운트 옵션 및 작업 설정 페이지의 격리된 작업에 노출할 경로 의 마운트 경로를 사용자 지정할 수 있습니다. 여기서 Podman 스타일 볼륨 마운트 구문이 지원됩니다.
추가 리소스
자세한 내용은 Podman 설명서 를 참조하십시오.
20.1.4.1. 실행 환경 마운트 옵션 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
실행 환경의 사용자 지정으로 인해 /etc/ssh/* 파일이 실행 환경 이미지에 추가된 경우 SSH 오류가 발생할 수 있습니다.
예를 들어 /etc/ssh/ssh_config.d:/etc/ssh/ssh_config.d:O 경로를 노출하면 컨테이너를 마운트할 수 있지만 소유권 권한이 올바르게 매핑되지 않습니다.
이 오류를 충족하거나 이전 버전의 자동화 컨트롤러에서 업그레이드한 경우 다음 절차를 사용하십시오.
프로세스
-
마운트된 볼륨의 컨테이너 소유권을
root로 변경합니다. - 탐색 패널에서 → → 을 선택합니다.
- 클릭합니다.
현재 예제를 사용하여 격리된 작업에 노출할 경로 의 경로를 노출합니다.
[ "/ssh_config:/etc/ssh/ssh_config.d/:0" ]
[ "/ssh_config:/etc/ssh/ssh_config.d/:0" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고:O옵션은 디렉터리에 대해서만 지원됩니다. 특히 시스템 경로를 지정할 때 최대한 자세히 설명하십시오./etc또는/usr을 직접 마운트하면 문제를 해결하기가 어렵습니다.이렇게 하면 다음 예와 유사한 명령을 실행하도록 Podman에 알립니다. 여기서 구성이 마운트되고
ssh명령이 예상대로 작동합니다.podman run -v /ssh_config:/etc/ssh/ssh_config.d/:O ...
podman run -v /ssh_config:/etc/ssh/ssh_config.d/:O ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift 또는 Kubernetes 컨테이너의 격리된 경로를 HostPath로 공개하려면 다음 구성을 사용합니다.
[ "/mnt2:/mnt2", "/mnt3", "/mnt4:/mnt4:0" ]
[
"/mnt2:/mnt2",
"/mnt3",
"/mnt4:/mnt4:0"
]
컨테이너 그룹의 Expose 호스트 경로를 On 으로 설정하여 활성화합니다.
플레이북이 실행되면 결과 Pod 사양이 다음 예와 유사합니다. volumeMounts 및 volumes 섹션에 대한 세부 정보를 확인합니다.
20.1.4.2. 실행 환경 컨테이너에 실행 노드의 디렉터리 마운트 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 격리된 작업에 노출된 경로를 구성하여 실행 또는 하이브리드 노드에서 작업 컨테이너로 볼륨을 마운트할 수 있도록 하는 방법을 설명합니다.
프로세스
- 탐색 패널에서 → → 을 선택합니다.
격리된 작업에 노출할 경로를 편집합니다.
- 볼륨이 실행 노드에서 컨테이너로 마운트되는 경로 목록을 입력합니다.
- 행당 하나의 경로를 입력합니다.
지원되는 형식은
HOST-DIR[:CONTAINER-DIR[:OPTIONS]입니다. 허용되는 경로는z,O,ro,rw입니다.예
[ "/var/lib/awx/.ssh:/root/.ssh:O" ]
[ "/var/lib/awx/.ssh:/root/.ssh:O" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow rw옵션의 경우 SELinux 레이블을 올바르게 구성합니다. 예를 들어/foo디렉토리를 마운트하려면 다음 명령을 완료합니다.sudo su
sudo suCopy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /foo
mkdir /fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 777 /foo
chmod 777 /fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow semanage fcontext -a -t container_file_t "/foo(/.*)?"
semanage fcontext -a -t container_file_t "/foo(/.*)?"Copy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon -vvFR /foo
restorecon -vvFR /fooCopy to Clipboard Copied! Toggle word wrap Toggle overflow
awx 사용자는 최소한 이 디렉토리에서 읽거나 쓸 수 있어야 합니다. 현재 권한을 777 로 설정합니다.
추가 리소스
마운트 볼륨에 대한 자세한 내용은 Podman 설명서 의 podman-run(1) 섹션의 --volume 옵션을 참조하십시오.
20.2. 작업 템플릿에 실행 환경 추가 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
자동화 컨트롤러를 사용하여 생성하기 전에 실행 환경에 설명된 대로 실행 환경을 빌드 해야 합니다.
빌드한 후 리포지토리(예: quay)로 푸시한 다음 자동화 컨트롤러를 사용하여 UI에서 실행 환경을 생성할 때 Ansible Automation Platform에서 이를 사용하도록 해당 리포지토리를 가리켜 작업 템플릿에서 사용해야 합니다.
- 조직에서 전역적으로 사용하거나 연결된 방식으로 실행 환경을 사용할 수 있는지 여부에 따라 작업에서 실행 환경을 사용하려면 적절한 수준의 관리자 권한이 있어야 합니다. 조직에 연결된 실행 환경에서는 조직 관리자가 해당 실행 환경에서 작업을 실행할 수 있어야 합니다.
- 인증 정보가 할당된 실행 환경을 사용하는 작업 또는 작업 템플릿을 실행하기 전에 인증 정보에 사용자 이름, 호스트 및 암호가 포함되어 있는지 확인합니다.
프로세스
- 탐색 패널에서 선택합니다.
- 를 클릭하여 실행 환경을 추가합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- 이름 (필수): 실행 환경의 이름을 입력합니다.
-
이미지 (필수): 이미지 이름을 입력합니다. 이미지 이름에
quay.io/ansible/awx-ee:latestrepo/project/image-name:tag형식의 전체 위치(repository), 레지스트리, 이미지 이름, 버전 태그가 필요합니다. 선택 사항: 가져오기: 작업을 실행할 때 가져오기 유형을 선택합니다.
- 항상 실행 전에 컨테이너를 가져옵니다. 컨테이너의 최신 이미지 파일을 가져옵니다.
- 실행하기 전에 존재하지 않는 경우에만 이미지를 가져옵니다. : 항목이 지정되지 않은 경우에만 최신 이미지를 가져옵니다.
실행하기 전에 컨테이너를 가져오지 마십시오. 컨테이너 이미지의 최신 버전을 가져오지 마십시오.
참고가져오기 유형을 설정하지 않으면 기본값은 실행하기 전에 존재하지 않는 경우에만 이미지를 가져옵니다.
- 선택 사항: 설명:
- 선택 사항: 조직: 구체적으로 이 실행 환경을 사용하도록 조직을 할당합니다. 여러 조직에서 실행 환경을 사용할 수 있도록 하려면 이 필드를 비워 둡니다.
- Registry Credential: 이미지에 보호된 컨테이너 레지스트리가 있는 경우 액세스할 수 있는 인증 정보를 제공합니다.
클릭합니다.
새로 추가된 실행 환경을 작업 템플릿에서 사용할 준비가 되었습니다.
- 작업 템플릿에 실행 환경을 추가하려면 작업 템플릿의 실행 환경 필드에 지정합니다.
작업 템플릿에 실행 환경을 추가하면 해당 템플릿이 실행 환경의 템플릿 탭에 나열됩니다.
21장. 실행 환경 설정 참조 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에는 실행 환경의 정의와 관련된 참조 정보가 포함되어 있습니다. YAML 파일에서 실행 환경의 콘텐츠를 정의합니다. 기본적으로 이 파일은 execution_environment.yml 이라고 합니다. 이 파일은 Ansible Builder에 빌드 명령 파일( Podman용 컨테이너 파일, Docker용 컨테이너 파일) 및 컨테이너 이미지의 빌드 컨텍스트를 생성하는 방법을 지시합니다.
Ansible Builder 3.x의 정의 스키마는 여기에 설명되어 있습니다. 이전 버전의 Ansible Builder를 실행하는 경우 이전 스키마 버전이 필요합니다. 자세한 내용은 이 문서의 이전 버전을 참조하십시오. 이전 버전보다 훨씬 구성 가능한 옵션과 기능을 제공하는 버전 3을 사용하는 것이 좋습니다.
21.1. 실행 환경 정의 예 링크 복사링크가 클립보드에 복사되었습니다!
실행 환경의 이미지를 빌드하려면 정의 파일을 생성해야 합니다. 파일은 YAML 형식으로 되어 있습니다.
정의 파일에서 Ansible Builder 버전을 지정해야 합니다. 기본 버전은 1입니다.
다음 정의 파일은 Ansible Builder 버전 3을 사용합니다.
21.2. 구성 옵션 링크 복사링크가 클립보드에 복사되었습니다!
정의 파일에서 다음 구성 YAML 키를 사용합니다.
Ansible Builder 3.x 실행 환경 정의 파일에는 7개의 최상위 섹션이 허용됩니다.
21.2.1. additional_build_files 링크 복사링크가 클립보드에 복사되었습니다!
빌드 파일은 빌드 컨텍스트 디렉터리에 추가할 항목을 지정합니다. 그런 다음 모든 빌드 단계에서 additional_build_steps 에서 참조하거나 복사할 수 있습니다.
형식은 사전 값 목록으로, 각각 src 및 dest 키와 value가 있습니다.
각 목록 항목은 다음 필수 키가 포함된 사전이어야 합니다.
| src | 빌드 컨텍스트 디렉터리에 복사할 소스 파일을 지정합니다.
이는 절대 경로(예: |
| dest |
소스 파일이 포함된 빌드 컨텍스트 디렉터리의
절대 경로이거나 경로 내에 참고
|
21.3. additional_build_steps 링크 복사링크가 클립보드에 복사되었습니다!
빌드 단계에서는 모든 빌드 단계에 대해 사용자 정의 빌드 명령을 지정합니다. 이러한 명령은 컨테이너 런타임의 빌드 명령 파일에 직접 삽입됩니다(예: Containerfile 또는 Dockerfile). 명령은 컨테이너화 툴에 필요한 모든 규칙을 준수해야 합니다.
이미지 생성 프로세스의 단계 전후에 빌드 단계를 추가할 수 있습니다. 예를 들어 종속 항목을 설치하기 전에 git 을 설치해야 하는 경우 기본 빌드 단계 끝에 빌드 단계를 추가할 수 있습니다.
다음은 유효한 키입니다. 각각 여러 줄 문자열 또는 문자열 목록을 지원합니다.
| append_base | 기본 이미지를 빌드한 후 삽입할 명령입니다. |
| append_builder | 빌더 이미지를 빌드한 후 삽입할 명령입니다. |
| append_final | 최종 이미지를 빌드한 후 삽입할 명령입니다. |
| append_galaxy | Galaxy 이미지를 빌드한 후 삽입할 명령입니다. |
| prepend_base | 기본 이미지를 빌드하기 전에 삽입할 명령입니다. |
| prepend_builder | 빌더 이미지를 빌드하기 전에 삽입할 명령입니다. |
| prepend_final | 최종 이미지를 빌드하기 전에 삽입할 명령입니다. |
| prepend_galaxy | Galaxy 이미지를 빌드하기 전에 삽입할 명령입니다. |
21.3.1. build_arg_defaults 링크 복사링크가 클립보드에 복사되었습니다!
빌드 인수의 기본값을 사전으로 지정합니다.
이는 --build-arg CLI 플래그를 사용하는 대신 사용됩니다.
Ansible Builder는 다음 빌드 인수를 사용합니다.
| ANSIBLE_GALAXY_CLI_COLLECTION_OPTS |
사용자가 |
| ANSIBLE_GALAXY_CLI_ROLE_OPTS |
이를 통해 사용자는 |
| PKGMGR_PRESERVE_CACHE | 이렇게 하면 이미지 빌드 프로세스 중에 패키지 관리자 캐시가 지워지는 빈도가 제어됩니다.
기본값인 이 값을 설정하지 않으면 캐시가 자주 지워집니다. 값이 |
Ansible Builder는 build_arg_defaults 내에서 빌드 명령 파일에 제공된 하드 코드 값을 빌드 명령 파일로 유지하므로 컨테이너 빌드를 수동으로 실행하면 지속됩니다.
CLI build-arg 플래그를 사용하여 정의 및 명령줄에서 동일한 변수를 지정하면 CLI 값이 정의의 값을 재정의합니다.
21.3.2. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
ansible-core,ansible-runner, Python 패키지, 시스템 패키지 및 컬렉션을 포함하여 최종 이미지에 설치할 종속 항목을 지정합니다. Ansible Builder는 설치하는 Ansible 컬렉션에 대한 종속성을 자동으로 설치합니다.
일반적으로 표준 구문을 사용하여 패키지 버전을 제한할 수 있습니다. dnf,pip,ansible-galaxy 또는 기타 패키지 관리 유틸리티로 전달하는 것과 동일한 구문을 사용합니다. 별도의 파일에서 패키지 또는 컬렉션을 정의하고 정의 파일의 dependencies 섹션에서 해당 파일을 참조할 수도 있습니다.
다음 키가 유효합니다.
| ansible_core |
설치할
이 값은 단일 키 |
| ansible_runner | 설치할 Ansible Runner Python 패키지의 버전입니다.
이 값은 단일 키 |
| Galaxy | Ansible Galaxy에서 설치할 컬렉션입니다.
이는 Ansible Galaxy |
| python | Python 설치 요구 사항입니다.
파일 이름 또는 요구 사항 목록일 수 있습니다. Ansible Builder는 이 라이브러리는 다른 파일에 대한 참조를 포함하여 복잡한 구문을 지원합니다. 많은 컬렉션에 동일한 패키지 이름이 필요한 경우 Ansible Builder는 이를 단일 항목에 결합하고 제약 조건을 결합합니다.
Ansible Builder는 컬렉션이 종속 항목으로 나열되는 경우에도 Python 종속 항목의 결합된 파일에서 일부 패키지를 제외합니다. 여기에는 Ansible 자체를 제공하는 패키지 및 테스트 패키지가 포함됩니다. 전체 목록은
제외된 패키지 이름 중 하나를 포함해야 하는 경우 이 방식으로 제공된 패키지는 제외된 Python 패키지 목록에 대해 처리되지 않습니다. |
| python_interpreter |
dnf( |
| system | bindep 형식으로 설치할 시스템 패키지입니다. 파일 이름 또는 요구 사항 목록일 수 있습니다. bindep에 대한 자세한 내용은 OpenDev 설명서 를 참조하십시오.
시스템 패키지의 경우 |
다음 예제에서는 다양한 종속성을 포함하는 파일 이름을 사용합니다.
이 예에서는 인라인 값을 사용합니다.
이러한 종속성 파일(requirements.txt, bindep.txt 및 requirements.yml) 중 하나라도 컬렉션의 build_ignore 에 있으면 빌드가 실패합니다.
컬렉션 유지 관리자는 introspect 명령을 사용하여 ansible-builder에서 예상 요구 사항을 인식하는지 확인할 수 있습니다.
ansible-builder introspect --sanitize ~/.ansible/collections/
ansible-builder introspect --sanitize ~/.ansible/collections/
--sanitize 옵션은 모든 컬렉션 요구 사항을 검토하고 중복을 제거합니다. 또한 일반적으로 제외되는 Python 요구 사항도 제거합니다(Python 종속 항목 참조).
제외되는 요구 사항에 대한 로깅 메시지를 보려면 -v3 옵션을 사용하여 세부 검사를 수행합니다.
21.3.3. 이미지 링크 복사링크가 클립보드에 복사되었습니다!
사용할 기본 이미지를 지정합니다. 최소한 기본 이미지에 대한 소스, 이미지, 태그를 지정해야 합니다. 기본 이미지는 운영 체제를 제공하며 일부 패키지도 제공할 수 있습니다. 표준 host/namespace/container:tag 구문을 사용하여 이미지를 지정합니다. Podman 또는 Docker 바로 가기 구문을 대신 사용할 수 있지만 전체 정의는 더 안정적이고 이식 가능합니다.
이 섹션의 유효한 키는 다음과 같습니다.
| base_image | 실행 환경에 대한 상위 이미지를 정의하는 사전입니다.
사용할 컨테이너 이미지와 함께 |
21.3.4. 이미지 확인 링크 복사링크가 클립보드에 복사되었습니다!
podman 컨테이너 런타임을 사용하는 경우 서명된 컨테이너 이미지를 확인할 수 있습니다.
컨테이너 이미지 서명 검증을 위해 Podman policy.json 파일과 관련하여 이 데이터를 사용하는 방법을 제어하려면 container-policy CLI 옵션을 설정합니다.
-
ignore_all정책: 서명 유효성 검사가 수행되지 않는 빌드컨텍스트 디렉터리 <context>에서policy.json파일을 생성합니다. -
시스템정책: 서명 검증은 표준 시스템 위치의 기존policy.json파일을 사용하여 수행됩니다.Ansible-builder는 이러한 파일 내의 콘텐츠에 대한 책임이 없으며 사용자는 콘텐츠를 완전히 제어할 수 있습니다. -
signature_required정책:ansible-builder는 컨테이너 이미지 정의를 사용하여 빌드 중에 이미지를 검증하는 동안 사용되는 빌드컨텍스트 디렉터리 <context>에policy.json파일을 생성합니다.
21.3.5. options 링크 복사링크가 클립보드에 복사되었습니다!
런타임 기능 Ansible Builder에 영향을 줄 수 있는 키워드 또는 옵션 사전입니다.
이 섹션의 유효한 키는 다음과 같습니다.
container_init: 컨테이너
ENTRYPOINT및CMD지시문(및 관련 동작)을 사용자 지정할 수 있는 키가 포함된 사전입니다. 이러한 동작을 사용자 지정하는 것은 고급 작업이며 디버깅하기 어려운 오류가 발생할 수 있습니다. 제공된 기본값은 여러 상호 연결된 동작을 제어하므로 모든 값을 재정의하면 이 사전의 나머지 기본값을 모두 건너뜁니다.유효한 키는 다음과 같습니다.
-
cmd:
CMDContainerfile 지시문의 Literal 값입니다. 기본값은["bash"]입니다. -
ENTRYPOINT:
ENTRYPOINTContainerfile 지시문의 Literal 값입니다. 기본 진입점 동작은 subprocesses에 대한 신호 전파를 처리하고 런타임에 컨테이너 사용자에게/etc/passwd에 표시되는 쓰기 가능 홈 디렉터리가 유효한 환경이 있고HOME환경 변수가 일치하도록 설정되어 있는지 확인하려고 시도합니다. 기본 진입점 스크립트는 사용자 런타임 환경을 적절하게 조정할 수 없는 경우stderr에 경고를 내보낼 수 있습니다. 자세한 내용은 이 동작을 무시하거나 치명적인 오류로 승격할 수 있습니다.진입점대상 스크립트의 소스를 참조하십시오. - package_pip: entrypoint 지원을 위해 pip를 사용하여 설치할 패키지입니다. 이 패키지는 최종 빌드 이미지에 설치됩니다.
-
cmd:
- package_manager_path: 패키지 관리자(dnf 또는 microdnf)의 경로가 있는 문자열입니다. 이 값은 패키지를 설치하는 데 사용됩니다.
skip_ansible_check: 이 부울 값은 Ansible 및 Ansible Runner가 최종 이미지에서 수행되는지 여부를 제어합니다.
이 검사를 수행하지 않으려면 이 값을
True로 설정합니다.기본값은
False입니다.relax_passwd_permissions: 이 부울 값은
루트그룹(GID 0)에 최종 컨테이너 이미지의/etc/passwd에 대한 쓰기 권한이 명시적으로 부여되는지 여부를 제어합니다. 기본 진입점 스크립트는 동적으로 생성된 사용자를 사용하여 일부 컨테이너 런타임에서/etc/passwd를 업데이트하여 완전히 작동하는 POSIX 사용자 환경 및 홈 디렉터리를 보장할 수 있습니다. 이 기능을 비활성화하면 사용자가 유효한 쓰기 가능한 홈 디렉터리(예: ansible-core의async,~username쉘 확장)를 사용하여/etc/passwd에 나열해야 하는 소프트웨어 기능이 실패할 수 있습니다.기본값은
True입니다.WORKDIR: 최종 컨테이너 이미지에서 시작된 새 프로세스의 현재 작업 디렉터리입니다. 일부 컨테이너 런타임에서는
root(GID 0) 그룹에서 동적으로 생성된 사용자의 경우 이 값을HOME으로 사용합니다. 이 값을 지정하면 디렉터리가 없는 경우 디렉터리가 생성되어루트그룹 소유권으로 설정되고rwx그룹 권한이 재귀적으로 적용됩니다.기본값은
/runner입니다.user: 최종 컨테이너 이미지의 기본 사용자로 사용할 사용자 이름 또는 UID를 설정합니다.
기본값은
1000입니다.
예제 옵션:
21.3.6. version 링크 복사링크가 클립보드에 복사되었습니다!
실행 환경 정의 파일의 스키마 버전을 설정하는 정수 값입니다.
기본값은 1 입니다.
Ansible Builder 3.x를 사용하는 경우 값은 3 이어야 합니다.
21.4. AWX의 기본 실행 환경 링크 복사링크가 클립보드에 복사되었습니다!
test/data/pytz 의 예제에서는 정의에 awx.awx 컬렉션이 필요합니다. 조회 플러그인 awx.awx.tower_schedule_rrule 에는 PyPI pytz 및 다른 라이브러리가 작동해야 합니다. test/data/pytz/execution-environment.yml 파일이 ansible-builder build 명령에 제공되면 이미지 내부에 컬렉션을 설치하고 컬렉션 내의 requirements.txt 파일을 읽은 다음 pytz 를 이미지에 설치합니다.
생성된 이미지는 개인 데이터 디렉터리 내부의 env/settings 파일에 이러한 변수를 배치하여 ansible-runner 프로젝트 내에서 사용할 수 있습니다.
--- container_image: image-name process_isolation_executable: podman # or docker process_isolation: true
---
container_image: image-name
process_isolation_executable: podman # or docker
process_isolation: true
awx.awx 컬렉션은 기본 AWX에 포함된 콘텐츠의 하위 집합입니다.
자세한 내용은 awx-ee 리포지토리 를 참조하십시오.
22장. 사용자 인증 정보 관리 링크 복사링크가 클립보드에 복사되었습니다!
인증 정보는 머신에 대해 작업을 시작하고, 인벤토리 소스와 동기화하고, 버전 제어 시스템에서 프로젝트 콘텐츠를 가져올 때 자동화 컨트롤러 사용자를 인증합니다.
인증 정보를 사용자에게 노출하지 않고도 사용자와 팀에 이러한 인증 정보를 사용할 수 있는 기능을 부여할 수 있습니다. 사용자가 다른 팀으로 이동하거나 조직을 떠나는 경우 자동화 컨트롤러에서 해당 인증 정보를 사용할 수 있었기 때문에 모든 시스템을 다시 입력할 필요가 없습니다.
자동화 컨트롤러는 데이터베이스의 암호 및 키 정보를 암호화하고 API를 통해 비밀 정보를 표시하지 않습니다. 자세한 내용은 자동화 실행 구성을 참조하십시오.
22.1. 인증 정보 작동 방식 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 SSH를 사용하여 원격 호스트에 연결합니다. 자동화 컨트롤러에서 SSH로 키를 전달하려면 키를 해독해야 이름이 지정된 파이프에 쓸 수 있습니다. 자동화 컨트롤러는 해당 파이프를 사용하여 키를 SSH로 전송하므로 키가 디스크에 기록되지 않습니다. 암호를 사용하는 경우 자동화 컨트롤러는 암호 프롬프트에 직접 응답하고 프롬프트에 쓰기 전에 암호를 해독하여 처리합니다.
인증 정보 페이지에는 현재 사용 가능한 인증 정보가 표시됩니다. 기본 보기는 접혀 있으며(Compact) 인증 정보 이름 및 인증 정보 유형을 표시합니다.
이 화면에서
을 편집하거나
을 복제하거나, 인증 정보를 삭제할 수 있습니다.
동일한 이름 및 조직 없이 중복된 인증 정보를 생성할 수 있습니다. 그러나 동일한 조직에 두 개의 중복 인증 정보를 생성할 수 없습니다.
예
- 이름이 같지만 조직이 없는 두 개의 시스템 인증 정보를 생성합니다.
-
ansible.controller.export모듈을 사용하여 자격 증명을 내보냅니다. -
다른 자동화 실행 노드에서
ansible.controller.import모듈을 사용합니다. - 가져온 자격 증명을 확인합니다.
두 개의 중복된 인증 정보를 내보낸 다음 다른 노드에서 가져오면 하나의 인증 정보만 가져옵니다.
22.2. 새 인증 정보 생성 링크 복사링크가 클립보드에 복사되었습니다!
팀에 추가된 인증 정보는 팀의 모든 멤버가 사용할 수 있습니다. 개별 사용자에게 인증 정보를 추가할 수도 있습니다.
초기 설정의 일부로 데모 자격 증명 및 Ansible Galaxy에 두 가지 인증 정보를 사용할 수 있습니다. Ansible Galaxy 자격 증명을 템플릿으로 사용합니다. 이 인증 정보를 복사할 수는 있지만 편집할 수는 없습니다. 필요에 따라 인증 정보를 추가합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 인증 정보 페이지에서 인증 정보 클릭합니다.
다음 정보를 입력합니다.
- name: 새 인증 정보의 이름입니다.
- (선택 사항) 설명: 새 인증 정보에 대한 설명입니다.
- 선택적 조직: 인증 정보가 연결된 조직의 이름입니다. 기본값은 Default 입니다.
- 인증 정보 유형: 생성할 인증 정보 유형을 입력하거나 선택합니다.
인증 정보 유형에 설명된 대로 선택한 인증 정보 유형에 따라 적절한 세부 정보를 입력합니다. https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/using_automation_execution/controller-credentials#ref-controller-credential-types
- 클릭합니다.
22.3. 기존 인증 정보에 새 사용자 및 작업 템플릿 추가 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
- 탐색 패널에서 → 선택합니다.
- 추가 사용자에게 할당할 인증 정보를 선택합니다.
- 사용자 액세스 탭을 클릭합니다. 이 인증 정보 및 해당 역할과 연결된 사용자 및 팀을 볼 수 있습니다. 사용자가 없는 경우 사용자 메뉴에서 추가합니다. 자세한 내용은 사용자를 참조하십시오.
- 클릭합니다.
- 인증 정보에 액세스할 사용자를 선택하고 를 클릭합니다.
- 적용할 역할 선택 페이지에서 사용자에게 추가할 역할을 선택합니다.
- 를 클릭합니다.
선택을 검토하고 를 클릭하여 역할을 추가하거나 를 클릭하여 변경합니다.
작업 성공 여부를 나타내는 Add roles 창이 표시됩니다.
작업이 실패하면 경고가 표시됩니다.
- 를 클릭합니다.
- 사용자 액세스 페이지에 요약 정보가 표시됩니다.
- 작업 템플릿 탭을 선택하여 이 인증 정보를 할당할 작업 템플릿을 선택합니다.
작업 템플릿을 선택하거나 템플릿 생성 목록에서 Create job template 을 선택하여 추가 작업 템플릿에 자격 증명을 할당합니다.
새 작업 템플릿을 만드는 방법에 대한 자세한 내용은 작업 템플릿을 참조하십시오.
22.4. 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 다음 인증 정보 유형을 지원합니다.
- Amazon Web Services
- Ansible Galaxy/Automation Hub API 토큰
- AWS Secrets Manager 조회
- Bitbucket 데이터 센터 HTTP 액세스 토큰
- Centrify Vault 인증 정보 공급자 조회
- 컨테이너 레지스트리
- CyberArk Central 인증 정보 공급자 조회
- CyberArk Conjur Secrets Manager 조회
- GitHub 개인 액세스 토큰
- GitLab 개인 액세스 토큰
- Google Compute Engine
- GPG 공개 키
- HashiCorp Vault 시크릿 조회
- HashiCorp Vault 서명 SSH
- Insights
- Machine
- Microsoft Azure Key Vault
- Microsoft Azure Resource Manager
- 네트워크
- OpenShift 또는 Kubernetes API 전달자 토큰
- OpenStack
- Red Hat Ansible Automation Platform
- Red Hat Satellite 6
- Red Hat Virtualization
- 소스 제어
- Terraform 백엔드 구성
- Thycotic DevOps Secrets Vault
- Thycotic Secret Server
- Vault
- VMware vCenter
AWS Secrets Manager, Centrify, CyberArk, HashiCorp Vault, Microsoft Azure Key Vault 및 Thycotic과 관련된 인증 정보 유형은 외부 시스템에서 시크릿 정보를 조회할 수 있는 인증 정보 플러그인 기능의 일부입니다.
자세한 내용은 시크릿 관리 시스템을 참조하십시오.
22.4.1. Amazon Web Services 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보를 선택하여 Amazon Web Services와 클라우드 인벤토리의 동기화를 활성화합니다.
자동화 컨트롤러는 AWS 인증 정보에 다음 환경 변수를 사용합니다.
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SECURITY_TOKEN
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SECURITY_TOKEN
사용자 인터페이스에서 입력하도록 요청하는 필드입니다.
Amazon Web Services 인증 정보는 AWS Access Key 및 Secret Key 로 구성됩니다.
자동화 컨트롤러는 IAM( Identity and Access Management ) STS 자격 증명이라고도 하는 EC2 STS 토큰을 지원합니다. STS( Security Token Service )는 AWS IAM 사용자에 대해 제한된 임시 자격 증명을 요청할 수 있는 웹 서비스입니다.
EC2의 태그 값에 부울(yes/no/true/false)이 포함된 경우 따옴표로 묶어야 합니다.
암시적 IAM 역할 인증 정보를 사용하려면 IAM 역할을 사용하여 AWS API에 액세스할 때 자동화 컨트롤러에서 AWS 클라우드 인증 정보를 연결하지 마십시오.
작업 템플릿에 AWS 클라우드 인증 정보를 연결하면 IAM 역할 인증 정보가 아닌 AWS 인증 정보를 사용해야 합니다.
추가 리소스
IAM/EC2 STS 토큰에 대한 자세한 내용은 IAM의 임시 보안 인증 정보를 참조하십시오.
22.4.1.1. Ansible 플레이북에서 Amazon EC2 인증 정보에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 AWS 인증 정보 매개변수를 가져올 수 있습니다.
vars:
aws:
access_key: '{{ lookup("env", "AWS_ACCESS_KEY_ID") }}'
secret_key: '{{ lookup("env", "AWS_SECRET_ACCESS_KEY") }}'
security_token: '{{ lookup("env", "AWS_SECURITY_TOKEN") }}'
vars:
aws:
access_key: '{{ lookup("env", "AWS_ACCESS_KEY_ID") }}'
secret_key: '{{ lookup("env", "AWS_SECRET_ACCESS_KEY") }}'
security_token: '{{ lookup("env", "AWS_SECURITY_TOKEN") }}'
22.4.2. Ansible Galaxy/automation hub API 토큰 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보를 선택하여 Ansible Galaxy에 액세스하거나 프라이빗 자동화 허브 인스턴스에 게시된 컬렉션을 사용합니다.
이 화면에 Galaxy 서버 URL을 입력합니다.
Galaxy Server URL 필드를 Red Hat Hybrid Cloud Console 의 Server URL 필드로 채웁니다. Auth Server URL 필드를 Red Hat Hybrid Cloud Console 의 SSO URL 필드로 채웁니다.
추가 리소스
자세한 내용은 자동화 허브와 함께 컬렉션 사용을 참조하십시오.
22.4.3. AWS 시크릿 관리자 조회 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다. 자세한 내용은 AWS Secrets Manager Lookup에서 참조하십시오.
22.4.4. Bitbucket 데이터 센터 HTTP 액세스 토큰 링크 복사링크가 클립보드에 복사되었습니다!
Bitbucket Data Center는 협업 및 관리를 위한 자체 호스팅 Git 리포지토리입니다. 이 인증 정보 유형을 선택하여 HTTPS를 통해 Git에 대한 암호 대신 HTTP 액세스 토큰을 사용할 수 있습니다.
자세한 내용은 Bitbucket Data Center 설명서의 HTTP 액세스 토큰을 참조하십시오.
22.4.5. Centrify Vault 인증 정보 공급자 조회 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 Centrify Vault 인증 정보 공급자 조회를 참조하십시오.
22.4.6. 컨테이너 레지스트리 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보를 선택하여 자동화 컨트롤러에서 컨테이너 이미지 컬렉션에 액세스할 수 있습니다. 자세한 내용은 컨테이너 레지스트리란? 를 참조하십시오.
이름을 지정해야 합니다. Authentication URL 필드는 기본값으로 미리 채워져 있습니다. 다른 컨테이너 레지스트리에 인증 끝점을 지정하여 값을 변경할 수 있습니다.
22.4.7. CyberArk Central 인증 정보 공급자 조회 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 CyberArk Central Credential Provider (CCP) 조회를 참조하십시오.
22.4.8. CyberArk Conjur Secrets Manager 조회 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 CyberArk Conjur Secrets Manager Lookup 에서 참조하십시오.
22.4.9. GitHub 개인 액세스 토큰 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
GitHub를 통해 가져올 수 있는 개인 액세스 토큰(PAT)을 사용하여 GitHub에 액세스 할 수 있도록 하려면 이 인증 정보를 선택합니다.
자세한 내용은 GitHub Webhook 설정을 참조하십시오.
GitHub PAT 인증 정보에는 GitHub 프로필 설정에 제공되는 토큰 필드의 값이 필요합니다.
이 인증 정보를 사용하여 웹 후크 리스너 작업에 사용할 GitHub에 대한 API 연결을 설정하여 상태 업데이트를 게시합니다.
22.4.10. GitLab 개인 액세스 토큰 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
GitLab을 통해 가져올 수 있는 개인 액세스 토큰(PAT)을 사용하여 GitLab에 액세스 할 수 있도록 하려면 이 인증 정보를 선택합니다.
자세한 내용은 GitLab Webhook 설정을 참조하십시오.
GitLab PAT 인증 정보에는 GitLab 프로필 설정에 제공되는 Token 필드의 값이 필요합니다.
이 인증 정보를 사용하여 웹 후크 리스너 작업에 사용할 GitLab에 대한 API 연결을 설정하여 상태 업데이트를 게시합니다.
22.4.11. Google Compute Engine 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보를 선택하여 Google Compute Engine(GCE)과 클라우드 인벤토리의 동기화를 활성화합니다.
자동화 컨트롤러는 GCE 인증 정보에 다음 환경 변수를 사용합니다.
GCE_EMAIL GCE_PROJECT GCE_CREDENTIALS_FILE_PATH
GCE_EMAIL
GCE_PROJECT
GCE_CREDENTIALS_FILE_PATH
사용자 인터페이스에서 입력하도록 요청하는 필드는 다음과 같습니다.
GCE 인증 정보에는 다음과 같은 정보가 필요합니다.
- 서비스 계정 이메일 주소: Google Compute Engine 서비스 계정에 할당된 이메일 주소입니다.
- 선택 사항: Project: GCE 할당 ID 또는 프로젝트 생성 시 제공한 고유한 프로젝트 ID를 제공합니다.
- 선택 사항: 서비스 계정 JSON 파일: GCE 서비스 계정 파일을 업로드합니다. 를 클릭하여 다른 Google Cloud API와 상호 작용하기 위해 GCE 인스턴스에서 실행 중인 서비스 및 애플리케이션에서 사용할 수 있는 특수 계정 정보가 있는 파일을 찾습니다. 이 파일은 서비스 계정 및 가상 머신 인스턴스에 권한을 부여합니다.
- RSA 개인 키: 서비스 계정 이메일과 연결된 PEM 파일입니다.
22.4.11.1. Ansible 플레이북에서 Google Compute Engine 인증 정보에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 GCE 인증 정보 매개변수를 가져올 수 있습니다.
vars:
gce:
email: '{{ lookup("env", "GCE_EMAIL") }}'
project: '{{ lookup("env", "GCE_PROJECT") }}'
pem_file_path: '{{ lookup("env", "GCE_PEM_FILE_PATH") }}'
vars:
gce:
email: '{{ lookup("env", "GCE_EMAIL") }}'
project: '{{ lookup("env", "GCE_PROJECT") }}'
pem_file_path: '{{ lookup("env", "GCE_PEM_FILE_PATH") }}'
22.4.12. GPG 공개 키 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
소스 제어에서 동기화할 때 자동화 컨트롤러에서 프로젝트의 무결성을 확인하려면 이 인증 정보 유형을 선택합니다.
유효한 키 쌍을 생성하는 방법, CLI 툴을 사용하여 콘텐츠에 서명하는 방법, 공개 키를 컨트롤러에 추가하는 방법에 대한 자세한 내용은 프로젝트 서명 및 확인을 참조하십시오.
22.4.13. HashiCorp Vault 시크릿 조회 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 HashiCorp Vault 시크릿 조회를 참조하십시오.
22.4.14. HashiCorp Vault 서명 SSH 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 HashiCorp Vault 서명 SSH 를 참조하십시오.
22.4.15. Insights 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보 유형을 선택하여 Red Hat Insights와 클라우드 인벤토리의 동기화를 활성화합니다.
Insights 인증 정보는 사용자의 Red Hat Customer Portal 계정 사용자 이름과 암호 인 Insights 사용자 이름 및 암호입니다.
Insights의 extra_vars 및 env 인젝터는 다음과 같습니다.
22.4.16. 머신 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
머신 인증 정보를 사용하면 자동화 컨트롤러에서 관리 중인 호스트에서 Ansible을 호출할 수 있습니다. SSH 사용자 이름을 지정하고, 필요한 경우 암호, SSH 키, 키 암호를 지정하거나 자동화 컨트롤러에서 배포 시 사용자에게 암호를 입력하라는 메시지를 표시할 수 있습니다. 플레이북에 대한 SSH 및 사용자 수준 권한 에스컬레이션 액세스를 정의하고 원격 호스트에서 플레이북을 실행하기 위해 작업을 제출할 때 사용됩니다.
다음 네트워크 연결에서는 머신을 인증 정보 유형으로 사용합니다. httpapi,netconf, network_cli
시스템 및 SSH 인증 정보는 환경 변수를 사용하지 않습니다. 이 명령은 ansible -u 플래그를 통해 사용자 이름을 전달하고 기본 SSH 클라이언트에서 SSH 암호를 요청할 때 대화식으로 암호를 작성합니다.
머신 인증 정보에는 다음과 같은 입력이 필요합니다.
- username: SSH 인증에 사용할 사용자 이름입니다.
- 암호: SSH 인증에 사용할 암호입니다. 이 암호를 입력하면 데이터베이스에 암호화되어 저장됩니다. 또는 시작 시 프롬프트를 선택하여 시작 시 사용자에게 암호를 묻도록 자동화 컨트롤러를 구성할 수 있습니다. 이 경우 작업이 시작될 때 대화 상자가 열리고 사용자에게 암호를 입력하고 확인하도록 요청합니다.
- SSH 개인 키: 시스템 인증 정보에 대한 SSH 개인 키를 복사하거나 끌어서 놓습니다.
- 개인 키 암호: 사용된 SSH 개인 키가 암호로 보호되는 경우 개인 키에 대한 키 암호를 구성할 수 있습니다. 이 암호를 입력하면 데이터베이스에 암호화되어 저장됩니다. 시작 시 프롬프트를 선택하여 시작 시 사용자에게 키 암호를 묻도록 자동화 컨트롤러를 구성할 수도 있습니다. 이 경우 작업이 시작될 때 대화 상자가 열리고 사용자에게 키 암호 및 키 암호 확인을 입력하라는 메시지가 표시됩니다.
권한 에스컬레이션 방법: 특정 사용자에게 할당할 에스컬레이션 권한 유형을 지정합니다. 이는
--become-method=BECOME_METHOD매개변수를 지정하는 것과 동일합니다. 여기서BECOME_METHOD는 기존 메서드 또는 작성한 사용자 지정 방법입니다. 메서드 이름을 입력하기 시작하면 적절한 이름이 자동으로 채워집니다.-
빈 선택: 작업 또는 플레이
가yes로 설정되고 빈 선택과 함께 사용되는 경우 기본값은sudo입니다. - sudo: 슈퍼유저(root user) 권한을 사용하여 단일 명령을 수행합니다.
- su: 슈퍼유저(루트 사용자) 계정(또는 다른 사용자 계정)으로 전환합니다.
- pbrun: 애플리케이션 또는 명령이 제어된 계정에서 실행되도록 요청하고 고급 루트 권한 위임 및 키로깅을 제공합니다.
- pfexec: 특정 사용자 또는 그룹 ID와 같은 사전 정의된 프로세스 특성을 사용하여 명령을 실행합니다.
- dzdo: Centrify의 Active Directory 서비스에서 RBAC 정보를 사용하는 향상된 sudo 버전입니다. 자세한 내용은 DZDO의 Centrify 사이트를 참조하십시오.
- pmrun: 애플리케이션이 제어된 계정에서 실행되도록 요청합니다. Unix 6.0용 권한 관리자를 참조하십시오.
- Runas: 현재 사용자로 실행할 수 있습니다.
- Enable: 네트워크 장치에서 승격된 권한으로 전환합니다.
- Doas : 원격/로그인 사용자가 doas ("Do as user") 유틸리티를 통해 다른 사용자로 명령을 실행할 수 있습니다.
- KSU: 원격/로그인 사용자가 Kerberos 액세스를 통해 다른 사용자로 명령을 실행할 수 있습니다.
-
machinectl:
systemd시스템 관리자를 통해 컨테이너를 관리할 수 있습니다. - sesu: 원격/로그인 사용자가 CA Privileged Access Manager를 통해 다른 사용자로 명령을 실행할 수 있습니다.
-
빈 선택: 작업 또는 플레이
사용자 정의 become 플러그인은 Ansible 2.8 이상에서 사용할 수 있습니다. 자세한 내용은 권한 에스컬레이션 이해 및 Become plugins목록을 참조하십시오.
- 권한 에스컬레이션 사용자 이름: 권한 에스컬레이션에 대한 옵션을 선택한 경우에만 이 필드가 표시됩니다. 원격 시스템에서 에스컬레이션 권한과 함께 사용할 사용자 이름을 입력합니다.
- 권한 에스컬레이션 암호: 권한 에스컬레이션에 대한 옵션을 선택한 경우에만 이 필드가 표시됩니다. 원격 시스템에서 선택한 권한 에스컬레이션 유형을 통해 사용자를 인증하는 데 사용할 암호를 입력합니다. 이 암호는 데이터베이스에 암호화되어 저장됩니다. 시작 시 프롬프트를 선택하여 시작 시 사용자에게 암호를 묻도록 자동화 컨트롤러를 구성할 수도 있습니다. 이 경우 작업이 시작될 때 대화 상자가 열리고 사용자에게 암호를 입력하고 확인하도록 요청합니다.
자동화 컨트롤러는 sudo를 호출하여 sudo 사용자로 변경하기 전에 먼저 호스트와 인증된 SSH 연결을 설정해야 하므로 SSH 암호 또는 SSH 개인 키와 함께 sudo 암호를 사용해야 합니다.
예약된 작업에 사용되는 인증 정보는 시작 시 프롬프트로 구성해서는 안 됩니다.
22.4.16.1. ansible 플레이북에서 시스템 인증 정보에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
Ansible 팩트에서 사용자 이름과 암호를 가져올 수 있습니다.
vars:
machine:
username: '{{ ansible_user }}'
password: '{{ ansible_password }}'
vars:
machine:
username: '{{ ansible_user }}'
password: '{{ ansible_password }}'
22.4.17. Microsoft Azure Key Vault 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 Microsoft Azure Key Vault 를 참조하십시오.
22.4.18. Microsoft Azure Resource Manager 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보 유형을 선택하여 Microsoft Azure Resource Manager와 클라우드 인벤토리의 동기화를 활성화합니다.
Microsoft Azure Resource Manager 인증 정보에는 다음과 같은 입력이 필요합니다.
- Subscription ID: Microsoft Azure 계정의 서브스크립션 UUID입니다.
- username: Microsoft Azure 계정 연결에 사용할 사용자 이름입니다.
- 암호: Microsoft Azure 계정 연결에 사용할 암호입니다.
- Client ID: Microsoft Azure 계정의 클라이언트 ID입니다.
- Client Secret: Microsoft Azure 계정의 클라이언트 시크릿입니다.
- 테넌트 ID: Microsoft Azure 계정의 테넌트 ID입니다.
- Azure Cloud Environment: Azure 클라우드 또는 Azure 스택 환경과 연결된 변수입니다.
해당 필드는 API의 변수와 동일합니다.
서비스 주체 인증 정보를 전달하려면 다음 변수를 정의합니다.
AZURE_CLIENT_ID AZURE_SECRET AZURE_SUBSCRIPTION_ID AZURE_TENANT AZURE_CLOUD_ENVIRONMENT
AZURE_CLIENT_ID
AZURE_SECRET
AZURE_SUBSCRIPTION_ID
AZURE_TENANT
AZURE_CLOUD_ENVIRONMENT
Active Directory 사용자 이름 및 암호 쌍을 전달하려면 다음 변수를 정의합니다.
AZURE_AD_USER AZURE_PASSWORD AZURE_SUBSCRIPTION_ID
AZURE_AD_USER
AZURE_PASSWORD
AZURE_SUBSCRIPTION_ID
인증 정보를 플레이북 내의 작업에 매개변수로 전달할 수도 있습니다. 우선순위는 매개변수, 환경 변수 그리고 마지막으로 홈 디렉터리에 있는 파일순입니다.
인증 정보를 작업에 매개 변수로 전달하려면 서비스 주체 인증 정보로 다음 매개변수를 사용합니다.
client_id secret subscription_id tenant azure_cloud_environment
client_id
secret
subscription_id
tenant
azure_cloud_environment
또는 Active Directory 사용자 이름/암호에 대해 다음 매개변수를 전달합니다.
ad_user password subscription_id
ad_user
password
subscription_id
22.4.18.1. ansible 플레이북에서 Microsoft Azure 리소스 관리자 자격 증명에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 Microsoft Azure 인증 정보 매개변수를 가져올 수 있습니다.
22.4.19. 네트워크 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
Ansible 네트워킹 모듈을 사용하여 네트워크 장치를 연결하고 관리하기 위해 공급자와 의 로컬 연결을 사용하는 경우 네트워크 인증 정보 유형을 선택합니다.
네트워크 장치에 연결할 때 인증 정보 유형이 연결 유형과 일치해야 합니다.
-
공급자를 사용하는로컬연결의 경우 인증 정보 유형은 Network 여야 합니다. -
기타 모든 네트워크 연결(
httpapi,netconf,network_cli)의 경우 인증 정보 유형은 Machine 이어야 합니다.
네트워크 장치에 사용할 수 있는 연결 유형에 대한 자세한 내용은 다중 통신 프로토콜 을 참조하십시오.
자동화 컨트롤러는 네트워크 인증 정보에 다음 환경 변수를 사용합니다.
ANSIBLE_NET_USERNAME ANSIBLE_NET_PASSWORD
ANSIBLE_NET_USERNAME
ANSIBLE_NET_PASSWORD
네트워크 인증 정보에 대해 다음 정보를 제공합니다.
- username: 네트워크 장치와 함께 사용할 사용자 이름입니다.
- 암호: 네트워크 장치와 함께 사용할 암호입니다.
- SSH 개인 키: SSH를 통해 네트워크에 사용자를 인증하는 데 사용할 실제 SSH 개인 키를 복사하거나 끌어서 놓습니다.
- 개인 키 암호: SSH를 통해 네트워크에 사용자를 인증하는 개인 키의 암호입니다.
권한 부여: 권한 있는 모드로 전환할지 여부를 제어하려면 선택합니다.
- Authorize 가 선택되어 있으면 암호 인증 필드에 암호를 입력하여 권한 있는 모드에 액세스합니다.
자세한 내용은 새 연결 플러그인을 사용하여 Ansible 네트워크 플레이북 포트 를 참조하십시오.
22.4.19.1. ansible 플레이북에서 네트워크 인증 정보에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 사용자 이름 및 암호 매개변수를 가져올 수 있습니다.
vars:
network:
username: '{{ lookup("env", "ANSIBLE_NET_USERNAME") }}'
password: '{{ lookup("env", "ANSIBLE_NET_PASSWORD") }}'
vars:
network:
username: '{{ lookup("env", "ANSIBLE_NET_USERNAME") }}'
password: '{{ lookup("env", "ANSIBLE_NET_PASSWORD") }}'
22.4.19.2. 다중 통신 프로토콜 링크 복사링크가 클립보드에 복사되었습니다!
네트워크 모듈은 관리 노드가 아닌 제어 노드에서 실행되므로 여러 통신 프로토콜을 지원할 수 있습니다. 각 네트워크 모듈에 대해 선택된 통신 프로토콜(SSH를 통한 CLI, SSH를 통한 CLI 또는 HTTPS를 통한 API)은 플랫폼과 모듈에 의존합니다. 일부 네트워크 모듈은 하나의 프로토콜만 지원하며 일부는 선택을 제공합니다.
가장 일반적인 프로토콜은 SSH를 통한 CLI입니다. ansible_connection 변수를 사용하여 통신 프로토콜을 설정합니다.
| ansible_connection의 값 | 프로토콜 | 필요 | 지속적입니까? |
|---|---|---|---|
|
| SSH를 통한 CLI | network_os 설정 | 제공됨 |
|
| SSH를 통한 XML | network_os 설정 | 제공됨 |
|
| HTTP/HTTPS를 통한 API | network_os 설정 | 제공됨 |
|
| 공급자에 따라 다름 | 공급자 설정 | 제공되지 않음 |
ansible_connection: local 은 더 이상 사용되지 않습니다. 위에 나열된 영구 연결 유형 중 하나를 대신 사용합니다. 영구 연결을 사용하면 모든 작업이 아닌 한 번만 호스트와 인증 정보를 정의할 수 있습니다. 또한 통신하려는 특정 네트워크 플랫폼에 대해 network_os 변수를 설정해야 합니다.
22.4.20. OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보 유형을 선택하여 Kubernetes 또는 OpenShift 컨테이너를 가리키는 인스턴스 그룹을 생성합니다.
자세한 내용은 인스턴스 및 컨테이너 그룹을 참조하십시오.
컨테이너 인증 정보에 대해 다음 정보를 제공합니다.
- OpenShift 또는 Kubernetes API 끝점(필수): OpenShift 또는 Kubernetes 컨테이너 연결에 사용되는 끝점입니다.
- API 인증 전달자 토큰 (필수): 연결을 인증하는 데 사용되는 토큰입니다.
- 선택 사항: SSL 확인: 이 옵션을 선택하여 서버의 SSL/TLS 인증서가 유효하고 신뢰할 수 있는지 확인할 수 있습니다. 내부 또는 개인 CA( 인증 기관 )를 사용하는 환경에서는 확인을 비활성화하려면 이 옵션을 선택하지 않은 상태로 두어야 합니다.
-
인증 기관 데이터: 제공되는 경우 인증서를 붙여넣을 때
BEGIN CERTIFICATE및END CERTIFICATE행이 포함됩니다.
컨테이너 그룹은 OpenShift 클러스터에 연결할 수 있는 관련 인증 정보가 있는 인스턴스 그룹의 유형입니다. 컨테이너 그룹을 설정하려면 다음 항목이 있어야 합니다.
- 시작할 수 있는 네임스페이스입니다. 모든 클러스터에 기본 네임스페이스가 있지만 특정 네임스페이스를 사용할 수 있습니다.
- 이 네임스페이스에서 Pod를 시작하고 관리할 수 있는 역할이 있는 서비스 계정입니다.
프라이빗 레지스트리에서 실행 환경을 사용하고 자동화 컨트롤러에서 컨테이너 레지스트리 인증 정보가 있는 경우 서비스 계정에는 네임스페이스에서 시크릿을 가져오고, 생성하고, 삭제하는 역할도 필요합니다.
이러한 역할을 서비스 계정에 부여하지 않으려면
ImagePullSecrets를 사전 생성하여 컨테이너 그룹의 Pod 사양에 지정할 수 있습니다. 이 경우 실행 환경에 연결된 컨테이너 레지스트리 인증 정보가 없거나 자동화 컨트롤러에서 네임스페이스에서 시크릿을 생성하려고 시도하지 않아야 합니다.- 서비스 계정과 연결된 토큰(OpenShift 또는 Kubernetes Bearer 토큰)
- 클러스터와 연결된 CA 인증서
22.4.20.1. Openshift 클러스터에서 서비스 계정 생성 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러를 통해 컨테이너 그룹에서 작업을 실행하는 데 사용할 Openshift 또는 Kubernetes 클러스터에서 서비스 계정을 생성합니다. 서비스 계정을 생성하면 해당 인증 정보가 Openshift 또는 Kubernetes API 전달자 토큰 인증 정보의 형태로 자동화 컨트롤러에 제공됩니다.
서비스 계정을 생성한 후 새 서비스 계정의 정보를 사용하여 자동화 컨트롤러를 구성합니다.
프로세스
서비스 계정을 생성하려면 샘플 서비스 계정,
containergroup sa를 다운로드하여 사용하고 필요에 따라 인증 정보를 가져옵니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow containergroup-sa.yml:의 구성을 적용합니다.oc apply -f containergroup-sa.yml
oc apply -f containergroup-sa.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 계정과 연결된 시크릿 이름을 가져옵니다.
export SA_SECRET=$(oc get sa containergroup-service-account -o json | jq '.secrets[0].name' | tr -d '"')
export SA_SECRET=$(oc get sa containergroup-service-account -o json | jq '.secrets[0].name' | tr -d '"')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시크릿에서 토큰을 가져옵니다.
oc get secret $(echo ${SA_SECRET}) -o json | jq '.data.token' | xargs | base64 --decode > containergroup-sa.tokenoc get secret $(echo ${SA_SECRET}) -o json | jq '.data.token' | xargs | base64 --decode > containergroup-sa.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow CA 인증서를 가져옵니다.
oc get secret $SA_SECRET -o json | jq '.data["ca.crt"]' | xargs | base64 --decode > containergroup-ca.crt
oc get secret $SA_SECRET -o json | jq '.data["ca.crt"]' | xargs | base64 --decode > containergroup-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
containergroup-sa.token및containergroup-ca.crt의 콘텐츠를 사용하여 컨테이너 그룹에 필요한 OpenShift 또는 Kubernetes API 전달자 토큰에 대한 정보를 제공합니다.
22.4.21. OpenStack 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보 유형을 선택하여 OpenStack과 클라우드 인벤토리의 동기화를 활성화합니다.
OpenStack 인증 정보에 대해 다음 정보를 입력합니다.
- username: OpenStack 연결에 사용할 사용자 이름입니다.
- 암호(API 키): OpenStack 연결에 사용할 암호 또는 API 키입니다.
- 호스트(인증 URL): 인증에 사용할 호스트입니다.
- 프로젝트(테넌트 이름): OpenStack에 사용되는 테넌트 이름 또는 테넌트 ID입니다. 이 값은 일반적으로 사용자 이름과 동일합니다.
- 선택 사항: 프로젝트(도메인 이름): 도메인과 연결된 프로젝트 이름을 지정합니다.
- 선택 사항: 도메인 이름: OpenStack 연결에 사용할 FQDN을 지정합니다.
- 선택 사항: 지역 이름: 지역 이름을 지정합니다. OVH와 같은 일부 클라우드 공급자의 경우 해당 리전을 지정해야 합니다.
OpenStack Cloud 인증 정보를 사용하려면 샘플 플레이북이 포함된 클라우드 인벤토리와 함께 클라우드 인증 정보 사용을 참조하십시오.
22.4.22. Red Hat Ansible Automation Platform 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보를 선택하여 다른 자동화 컨트롤러 인스턴스에 액세스합니다.
Ansible Automation Platform 인증 정보에는 다음과 같은 입력 사항이 필요합니다.
- Red Hat Ansible Automation Platform: 연결할 다른 인스턴스의 기본 URL 또는 IP 주소입니다.
- username: 연결에 사용할 사용자 이름입니다.
- 암호: 연결에 사용할 암호입니다.
- OAuth 토큰: 사용자 이름과 암호를 사용하지 않는 경우 인증에 사용할 OAuth 토큰을 제공합니다.
Ansible Automation Platform의 env 인젝터는 다음과 같습니다.
22.4.22.1. Ansible 플레이북에서 자동화 컨트롤러 인증 정보에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 host, username 및 password 매개변수를 가져올 수 있습니다.
vars:
controller:
host: '{{ lookup("env", "CONTROLLER_HOST") }}'
username: '{{ lookup("env", "CONTROLLER_USERNAME") }}'
password: '{{ lookup("env", "CONTROLLER_PASSWORD") }}'
vars:
controller:
host: '{{ lookup("env", "CONTROLLER_HOST") }}'
username: '{{ lookup("env", "CONTROLLER_USERNAME") }}'
password: '{{ lookup("env", "CONTROLLER_PASSWORD") }}'
22.4.23. Red Hat Satellite 6 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Satellite 6과 클라우드 인벤토리의 동기화를 활성화하려면 이 인증 정보 유형을 선택합니다.
자동화 컨트롤러는 사용자 인터페이스에서 입력하도록 요청하는 필드를 기반으로 Satellite 구성 파일을 작성합니다. 파일의 절대 경로는 다음 환경 변수에 설정됩니다.
FOREMAN_INI_PATH
Satellite 인증 정보에는 다음과 같은 필수 입력 사항이 있습니다.
- Satellite 6 URL: 연결할 Satellite 6 URL 또는 IP 주소입니다.
- username: Satellite 6 연결에 사용할 사용자 이름입니다.
- 암호: Satellite 6 연결에 사용할 암호입니다.
22.4.24. Red Hat Virtualization 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 Red Hat Virtualization 에서 관리하는 Ansible의 oVirt4.py 동적 인벤토리 플러그인에 액세스할 수 있도록 하려면 이 인증 정보를 선택합니다.
자동화 컨트롤러는 Red Hat Virtualization 인증 정보에 다음 환경 변수를 사용합니다. 사용자 인터페이스의 필드는 다음과 같습니다.
OVIRT_URL OVIRT_USERNAME OVIRT_PASSWORD
OVIRT_URL
OVIRT_USERNAME
OVIRT_PASSWORD
Red Hat Virtualization 인증 정보에 대해 다음 정보를 제공합니다.
-
호스트(인증 URL): 연결할 호스트 URL 또는 IP 주소입니다. 인벤토리와 동기화하려면 인증 정보 URL에
ovirt-engine/api경로를 포함해야 합니다. -
username: oVirt4 연결에 사용할 사용자 이름입니다. 성공하려면 도메인 프로필이 포함되어야 합니다(예:
username@ovirt.host.com). - 암호: 연결에 사용할 암호입니다.
-
선택 사항: oVirt 인증서 파일 의 절대 경로를 제공(
.pem,.cer및.crt확장자로 끝날 수 있지만 일관성을 위해.pem)을 제공하는 것이 좋습니다.
22.4.24.1. Ansible 플레이북에서 가상화 인증 정보에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 Red Hat Virtualization 인증 정보 매개변수를 가져올 수 있습니다.
vars:
ovirt:
ovirt_url: '{{ lookup("env", "OVIRT_URL") }}'
ovirt_username: '{{ lookup("env", "OVIRT_USERNAME") }}'
ovirt_password: '{{ lookup("env", "OVIRT_PASSWORD") }}'
vars:
ovirt:
ovirt_url: '{{ lookup("env", "OVIRT_URL") }}'
ovirt_username: '{{ lookup("env", "OVIRT_USERNAME") }}'
ovirt_password: '{{ lookup("env", "OVIRT_PASSWORD") }}'
Red Hat Virtualization의 파일 및 env 인젝터는 다음과 같습니다.
22.4.25. 소스 제어 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
소스 제어 인증 정보는 프로젝트와 함께 Git 또는 Subversion과 같은 원격 버전 제어 시스템에서 로컬 소스 코드 리포지토리를 복제 및 업데이트하는 데 사용됩니다.
소스 제어 인증 정보에는 다음과 같은 입력이 필요합니다.
- username: 소스 제어 시스템과 함께 사용할 사용자 이름입니다.
- 암호: 소스 제어 시스템과 함께 사용할 암호입니다.
- SCM 개인 키: SSH를 통해 소스 제어 시스템에 사용자를 인증하는 데 사용할 실제 SSH 개인 키를 복사하거나 끌어서 놓습니다.
- 개인 키 암호: 사용된 SSH 개인 키가 암호로 보호되는 경우 개인 키에 대한 키 암호를 구성할 수 있습니다.
시작 시 프롬프트 로 소스 제어 인증 정보를 구성할 수 없습니다.
소스 제어 인증 정보에 GitHub 계정을 사용하고 계정에 두 개의 Factor Authentication (2FA)이 활성화된 경우 계정 암호 대신 암호 필드에 개인 액세스 토큰을 사용해야 합니다.
22.4.26. Terraform 백엔드 구성 링크 복사링크가 클립보드에 복사되었습니다!
Terraform은 다양한 인프라 작업을 자동화하는 데 사용되는 HashiCorp 툴입니다. 이 인증 정보 유형을 선택하여 Terraform 인벤토리 소스와 동기화를 활성화합니다.
Terraform 인증 정보에는 Terraform 백엔드 블록의 데이터를 포함해야 하는 백엔드구성 특성이 필요합니다. 이를 저장하면 백엔드 구성에 대한 파일 경로를 연결된 모든 작업에서 사용할 수 있는 환경 변수 TF_BACKEND_CONFIG_FILE 에 저장합니다.
파일을 붙여넣거나 드래그하거나 파일을 업로드하거나
아이콘을 클릭하여 외부 시크릿 관리 시스템에서 필드를 채울 수 있습니다.
Terraform 백엔드 구성에는 다음과 같은 입력이 필요합니다.
- name
- 인증 정보 유형: Terraform 백엔드 구성 을 선택합니다.
- 선택 사항: 조직
- 선택 사항: 설명
백엔드 구성: 여기에서 파일을 드레이그하거나 업로드할 파일을 찾습니다.
S3 백엔드의 구성 예:
bucket = "my-terraform-state-bucket" key = "path/to/terraform-state-file" region = "us-east-1" access_key = "my-aws-access-key" secret_key = "my-aws-secret-access-key"
bucket = "my-terraform-state-bucket" key = "path/to/terraform-state-file" region = "us-east-1" access_key = "my-aws-access-key" secret_key = "my-aws-secret-access-key"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 선택 사항: Google Cloud Platform 계정 인증 정보
22.4.27. Thycotic DevOps Secrets Vault 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 Thycotic DevOps Secrets Vault 를 참조하십시오.
22.4.28. Thycotic 시크릿 서버 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이는 시크릿 관리 기능의 일부로 간주됩니다.
자세한 내용은 Thycotic Secret Server 를 참조하십시오.
22.4.29. Ansible Vault 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보 유형을 선택하여 Ansible Vault와 인벤토리의 동기화를 활성화합니다.
다중 Vault 인증 정보를 적용하는 경우 Vault 인증 정보에는 Vault 암호 및 선택적 Vault ID가 필요합니다.
시작 시 프롬프트를 선택하여 시작 시 사용자에게 암호를 묻도록 자동화 컨트롤러를 구성할 수 있습니다.
시작 시 프롬프트 를 선택하면 작업이 시작될 때 대화 상자가 열리고 사용자에게 암호를 입력하라는 메시지가 표시됩니다.
예약된 작업에 사용되는 인증 정보는 시작 시 프롬프트로 구성해서는 안 됩니다.
Ansible Vault에 대한 자세한 내용은 Ansible Vault 를 사용하여 중요한 데이터 수집을 참조하십시오.
22.4.30. VMware vCenter 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
이 인증 정보 유형을 선택하여 VMware vCenter와 인벤토리의 동기화를 활성화합니다.
자동화 컨트롤러는 VMware vCenter 인증 정보에 다음 환경 변수를 사용합니다.
VMWARE_HOST VMWARE_USER VMWARE_PASSWORD VMWARE_VALIDATE_CERTS
VMWARE_HOST
VMWARE_USER
VMWARE_PASSWORD
VMWARE_VALIDATE_CERTS
사용자 인터페이스에서 입력하도록 요청하는 필드입니다.
VMware 인증 정보에는 다음과 같은 입력 사항이 필요합니다.
- vCenter 호스트: 연결할 vCenter 호스트 이름 또는 IP 주소입니다.
- username: vCenter 연결에 사용할 사용자 이름입니다.
- 암호: vCenter 연결에 사용할 암호입니다.
VMware 게스트 툴이 인스턴스에서 실행되지 않는 경우 VMware 인벤토리 동기화에서 해당 인스턴스의 IP 주소를 반환하지 않습니다.
22.4.30.1. ansible 플레이북에서 VMware vCenter 자격 증명에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
작업 런타임 환경에서 VMware vCenter 인증 정보 매개변수를 가져올 수 있습니다.
vars:
vmware:
host: '{{ lookup("env", "VMWARE_HOST") }}'
username: '{{ lookup("env", "VMWARE_USER") }}'
password: '{{ lookup("env", "VMWARE_PASSWORD") }}'
vars:
vmware:
host: '{{ lookup("env", "VMWARE_HOST") }}'
username: '{{ lookup("env", "VMWARE_USER") }}'
password: '{{ lookup("env", "VMWARE_PASSWORD") }}'
22.5. 플레이북에서 자동화 컨트롤러 인증 정보 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 플레이북은 플레이북에서 자동화 컨트롤러 인증 정보를 사용하는 방법의 예입니다.
'delegate_to' 및 모든 조회 변수 사용
- command: somecommand
environment:
USERNAME: '{{ lookup("env", "USERNAME") }}'
PASSWORD: '{{ lookup("env", "PASSWORD") }}'
delegate_to: somehost
- command: somecommand
environment:
USERNAME: '{{ lookup("env", "USERNAME") }}'
PASSWORD: '{{ lookup("env", "PASSWORD") }}'
delegate_to: somehost
23장. 사용자 정의 인증 정보 유형 링크 복사링크가 클립보드에 복사되었습니다!
시스템 관리자는 YAML 또는 JSON과 같은 정의를 사용하여 표준 형식으로 사용자 정의 인증 정보 유형을 정의할 수 있습니다. 기존 인증 정보 유형과 유사한 방식으로 작동하는 사용자 정의 인증 정보 유형을 정의할 수 있습니다. 예를 들어 사용자 지정 인증 정보 유형은 사용할 플레이북 또는 사용자 지정 인벤토리 스크립트를 위해 타사 웹 서비스의 API 토큰을 환경 변수에 삽입할 수 있습니다.
사용자 정의 인증 정보는 다음과 같은 인증 정보 삽입 방법을 지원합니다.
- 환경 변수
- Ansible 추가 변수
-
파일 기반 템플릿 - 인증 정보 값이 포함된
.ini또는.conf파일을 생성하는 것을 의미합니다.
하나의 SSH 및 여러 클라우드 인증 정보를 작업 템플릿에 연결할 수 있습니다. 각 클라우드 인증 정보는 유형이 서로 달라야 합니다. 각 인증 정보 유형 중 하나만 허용됩니다. Vault 인증 정보 및 머신 인증 정보는 별도의 엔터티입니다.
-
새 인증 정보 유형을 생성할 때
extra_vars,env및 파일 네임스페이스에서 충돌이 발생하지 않도록 해야 합니다. -
환경 변수 또는 추가 변수 이름은 예약되므로
ANSIBLE_로 시작하지 않아야 합니다. -
인증 정보 유형( CredentialType )을 생성 및 편집하고
필드를 보려면 시스템 관리자(superuser) 권한이 있어야 합니다.CredentialType.injection
23.1. 컬렉션에서 콘텐츠 소싱 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트 업데이트가 실행될 때 kind=galaxy 의 "관리" 인증 정보 유형은 requirements.yml 에 정의된 컬렉션을 가져오기 위한 콘텐츠 소스를 나타냅니다. 콘텐츠 소스의 예로는 galaxy.ansible.com, console.redhat.com 또는 온프레미스 자동화 허브가 있습니다. 이 새 인증 정보 유형은 프로젝트 업데이트가 Ansible 문서에 설명된 대로 ansible-galaxy 컬렉션 설치를 실행할 때 환경 변수를 구성하는 데 필요한 URL 및 (선택 사항) 인증 세부 정보를 나타내며 ansible-galaxy 클라이언트 구성. 여기에는 Ansible Galaxy CLI에 노출되는 구성 옵션에 직접 매핑되는 필드가 있습니다(예: per-server).
API의 끝점에는 다음과 같이 조직 수준에 이러한 인증 정보가 정렬된 목록이 반영됩니다.
/api/v2/organizations/N/galaxy_credentials/
/api/v2/organizations/N/galaxy_credentials/
자동화 컨트롤러를 설치하면 기존 Galaxy 지향 설정 값을 마이그레이션하면 업그레이드 후 적절한 인증 정보가 생성되어 모든 조직에 연결됩니다. 최신 버전으로 업그레이드한 후 업그레이드 전에 존재했던 모든 조직에는 이제 하나 이상의 "Galaxy" 인증 정보 목록이 있습니다.
또한 업그레이드 후 이러한 설정은 /api/v2/settings/jobs/ 끝점에서 표시되지 않거나 편집할 수 없습니다.
galaxy.ansible.com 이 조직 목록의 첫 번째 인증 정보가 아니더라도 자동화 컨트롤러는 계속해서 공개 Galaxy에서 직접 역할을 가져옵니다. 글로벌 Galaxy 설정은 더 이상 작업 수준에서 구성되지 않고 사용자 인터페이스의 조직 수준에서 구성됩니다.
조직 생성 및 조직 생성 창에는 kind=galaxy 의 인증 정보에 대한 선택적 Galaxy 인증 정보 조회 필드가 있습니다.
이러한 인증 정보의 순서를 지정하면 콘텐츠의 동기화 및 조회에 대한 순서가 순서대로 설정됩니다. 자세한 내용은 조직 생성을 참조하십시오.
컬렉션을 사용하여 프로젝트를 설정하는 방법에 대한 자세한 내용은 자동화 허브로 컬렉션 사용을 참조하십시오.
23.2. 이전 버전과 호환되는 API 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
API 버전 2(api/v2/)에 대한 지원은 작업 템플릿에 대한 일대다 관계를 의미합니다(다중 클라우드 지원 포함).
v2 API에서 인증 정보를 필터링할 수 있습니다.
curl "https://controller.example.org/api/v2/credentials/?credential_type__namespace=aws"
curl "https://controller.example.org/api/v2/credentials/?credential_type__namespace=aws"
V2 인증 정보 유형 모델에서 관계는 다음과 같이 정의됩니다.
| 머신 | SSH |
|---|---|
| Vault | Vault |
| 네트워크 |
환경 변수를 설정합니다(예: |
| SCM | 소스 제어 |
| 클라우드 | EC2, AWS |
| 클라우드 | 기타 다수 |
| Insights | Insights |
| Galaxy | Galaxy.ansible.com, console.redhat.com |
| Galaxy | 온프레미스 자동화 허브 |
23.3. 콘텐츠 확인 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 GPG(GNU Privacy Guard)를 사용하여 콘텐츠를 확인합니다.
자세한 내용은 GNU 개인 정보 취급 방침을 참조하십시오.
23.4. 인증 정보 유형 시작하기 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
탐색 패널에서 → 선택합니다. 사용자 정의 인증 정보 유형이 생성되지 않은 경우 인증 정보 유형 페이지에 하나를 추가하라는 메시지가 표시됩니다.
인증 정보 유형을 생성한 경우 이 페이지에는 기존 및 사용 가능한 인증 정보 유형 목록이 표시됩니다.
-
인증 정보 이름 또는
아이콘 편집을 선택하여 인증 정보 유형에 대한 자세한 정보를 확인합니다.
- 세부 정보 탭에서 각 인증 정보 유형에 해당하는 경우 입력 구성 필드 및 Injector Configuration 필드에 고유한 구성이 표시됩니다. YAML 및 JSON 형식 모두 구성 필드에서 지원됩니다.
23.5. 새 인증 정보 유형 생성 링크 복사링크가 클립보드에 복사되었습니다!
새 인증 정보 유형을 생성하려면 다음을 수행합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 인증 정보 유형 보기에서 클릭합니다.
Name 및 Description 필드에 적절한 세부 정보를 입력합니다.
참고새 인증 정보 유형을 생성할 때 사용자 지정 인증 정보 유형에 유효하지 않으므로
ANSIBLE_로 시작하는 예약된 변수 이름을 INPUT 및 INJECTOR 이름 및 ID에 사용하지 마십시오.입력 구성 필드에서 해당 유형에 대해 정렬된 필드 집합을 정의하는 입력 스키마를 지정합니다. 형식은 YAML 또는 JSON일 수 있습니다.
YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 페이지에서 더 많은 YAML 예제를 확인합니다.
JSON
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 웹 사이트에서 더 많은 JSON 예제를 확인하십시오.
JSON 형식의 다음 구성은 각 필드와 사용 방법을 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow type=string인 경우 필드는 선택적으로 여러 선택 옵션을 지정할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Injector 구성 필드에 인증 정보 유형에서 삽입할 수 있는 값을 지정하는 환경 변수 또는 추가 변수를 입력합니다. 형식은 YAML 또는 JSON일 수 있습니다(이전 단계의 예제 참조).
JSON 형식의 다음 구성은 각 필드와 사용 방법을 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인증 정보 유형은 임시 파일을 생성하여
.ini파일 또는 인증서 또는 키 데이터를 지원할 수도 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에서 자동화 컨트롤러는 다음과 같은 임시 파일을 작성합니다.
[mycloud]\ntoken=SOME_TOKEN_VALUE
[mycloud]\ntoken=SOME_TOKEN_VALUECopy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된 파일의 절대 파일 경로는
MY_CLOUD_INI_FILE이라는 환경 변수에 저장됩니다.다음은 사용자 정의 인증 정보 템플릿에서 여러 파일을 참조하는 예입니다.
Inputs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인젝터
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 을 클릭합니다.
새로 생성된 인증 정보 유형이 인증 정보 유형 목록에 표시됩니다.
편집
아이콘을 클릭하여 인증 정보 유형 옵션을 수정합니다.
참고편집 화면에서 세부 정보를 수정하거나 인증 정보를 삭제할 수 있습니다. Delete 옵션이 비활성화된 경우 인증 정보에서 인증 정보 유형을 사용하고, 삭제하기 전에 해당 인증 정보를 사용하는 모든 인증 정보에서 인증 정보 유형을 삭제해야 합니다.
검증
- 새 인증 정보를 생성할 때 인증 정보 유형 선택 창에서 새로 생성된 인증 정보 유형을 선택할 수 있는지 확인합니다.
추가 리소스
새 인증 정보를 생성하는 방법에 대한 자세한 내용은 인증 정보 생성을 참조하십시오.
24장. 활동 스트림 링크 복사링크가 클립보드에 복사되었습니다!
탐색 패널에서 → → .
활동 스트림은 특정 오브젝트에 대한 모든 변경 사항을 보여줍니다. 활동 스트림에는 각 변경 사항의 이벤트 시간, 이벤트를 시작한 사용자, 작업이 표시됩니다. 표시되는 정보는 이벤트 유형에 따라 다릅니다.
아이콘을 클릭하여 변경 사항에 대한 이벤트 로그를 표시합니다.
시작 사용자, 시스템(시스템이 시작된 경우) 또는 관련 오브젝트(예: 인증 정보, 작업 템플릿 또는 스케줄)를 통해 활동 스트림을 필터링할 수 있습니다. 활동 스트림에는 전체 인스턴스에 대한 활동 스트림이 표시됩니다. 대부분의 페이지에서는 해당 특정 오브젝트에 대해 필터링된 활동 스트림을 볼 수 있습니다.
활동 스트림을 볼 수 있습니다.
25장. Notifiers 링크 복사링크가 클립보드에 복사되었습니다!
Email, Slack 또는 Webhook와 같은 알림 유형은 알림 템플릿의 인스턴스이며 알림 템플릿에 이름, 설명 및 구성이 정의되어 있습니다.
다음은 알림 템플릿을 추가하는 데 필요한 세부 정보의 예입니다.
- 이메일 알림 템플릿에는 사용자 이름, 암호, 서버, 수신자가 필요합니다.
- Slack 알림 템플릿에 토큰 및 채널 목록이 필요합니다.
- Webhook 알림 템플릿에 URL 및 헤더가 필요합니다.
작업이 실패하면 알림 템플릿에 정의된 구성을 사용하여 알림이 전송됩니다.
다음은 알림 시스템의 일반적인 흐름을 보여줍니다.
-
API 또는 UI를 통해
/api/v2/notification_templates 끝점에서REST API에 대한 알림 템플릿을 생성합니다. -
알림 템플릿을 지원하는 다양한 오브젝트(조직 및 프로젝트뿐만 아니라 모든 작업 템플릿 변형) 및 알림을 원하는 적절한 트리거 수준(시작됨, 성공 또는 오류)에 알림 템플릿을 할당합니다. 예를 들어, 작업 템플릿 1이 실패할 때 트리거할 특정 알림 템플릿을 할당할 수 있습니다. 이 경우 알림 템플릿을
/api/v2/job_templates/n/notification_templates_errorAPI 끝점의 작업 템플릿과 연결합니다. - 작업 시작 및 작업 종료에 대한 알림을 설정할 수 있습니다. 또한 사용자와 팀은 임의의 작업에 연결할 수 있는 자체 알림을 정의할 수 있습니다.
25.1. 알림 계층 링크 복사링크가 클립보드에 복사되었습니다!
알림 템플릿은 다음과 같이 상위 오브젝트에 정의된 템플릿을 상속합니다.
- 작업 템플릿은 정의된 알림 템플릿을 사용합니다. 또한 작업 템플릿에서 사용하는 프로젝트와 해당 템플릿이 나열된 조직에서 알림 템플릿을 상속할 수 있습니다.
- 프로젝트 업데이트에서는 프로젝트에 정의된 알림 템플릿을 사용하고 연결된 조직의 알림 템플릿을 상속합니다.
- 인벤토리 업데이트는 나열된 조직에 정의된 알림 템플릿을 사용합니다.
- 애드혹 명령은 인벤토리가 연결된 조직에 정의된 알림 템플릿을 사용합니다.
25.2. 알림 워크플로 링크 복사링크가 클립보드에 복사되었습니다!
작업이 성공 또는 실패하면 오류 또는 성공 처리기는 Notifiers 섹션에 정의된 절차를 사용하여 관련 알림 템플릿 목록을 가져옵니다.
그런 다음 각 작업에 대한 관련 세부 정보가 포함된 알림 오브젝트를 생성하여 대상으로 보냅니다. 여기에는 이메일 주소, 슬랙 채널 및 SMS 번호가 포함됩니다.
이러한 알림 오브젝트는 작업 유형(작업, 인벤토리 업데이트, 프로젝트 업데이트) 및 /api/v2/notifications 에서 관련 리소스로 사용할 수 있습니다. 관련 리소스를 검사하여 알림 템플릿에서 보낸 알림을 확인할 수도 있습니다.
알림이 실패하면 연결된 작업에 영향을 미치지 않거나 실패합니다. 알림 상태는 세부 정보 끝점 /api/v2/notifications/<n>에서 확인할 수 있습니다.
25.3. 알림 템플릿 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 알림 템플릿을 생성합니다.
프로세스
- 탐색 패널에서 → → 선택합니다.
- 를 클릭합니다.
다음 필드를 작성합니다.
- name : 알림 의 이름을 입력합니다.
- Description: 알림에 대한 설명을 입력합니다. 이 필드는 선택 사항입니다.
- 조직: 알림이 속한 조직을 지정합니다.
- 유형: 드롭다운 메뉴에서 알림 유형을 선택합니다. 자세한 내용은 알림 유형 섹션을 참조하십시오.
- 를 클릭합니다.
25.4. 알림 유형 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 지원되는 알림 유형은 다음과 같습니다.
각 알림 유형에는 고유한 구성 및 동작 의미 체계가 있습니다. 다양한 방법으로 테스트해야 할 수도 있습니다. 또한 각 유형의 알림을 특정 세부 정보 또는 알림을 트리거하는 일련의 기준으로 사용자 지정할 수 있습니다.
추가 리소스
25.4.1. 이메일 링크 복사링크가 클립보드에 복사되었습니다!
이메일 알림 유형은 다양한 SMTP 서버를 지원하며 SSL/TLS 연결을 지원합니다.
이메일 알림을 설정하려면 다음 세부 정보를 제공합니다.
- 호스트
- 수신자 목록
- 보낸 사람 이메일
- port
- 시간 제한 (초): 최대 120초로 설정할 수 있습니다. 이는 자동화 컨트롤러가 실패하기 전에 이메일 서버에 연결을 시도하는 시간입니다.
25.4.2. Grafana 링크 복사링크가 클립보드에 복사되었습니다!
Grafana를 통합하려면 먼저 Grafana 시스템에서 API 키를 생성해야 합니다. 자동화 컨트롤러에 제공되는 토큰입니다.
Grafana 알림을 설정하려면 다음 세부 정보를 제공합니다.
- Grafana URL: http://yourcompany.grafana.com과 같은 Grafana API 서비스의 URL입니다.
- Grafana API 키: Grafana 시스템에서 먼저 API 키를 생성해야 합니다.
- 선택 사항: 대시보드 ID: Grafana 계정에 대한 API 키를 생성할 때 고유한 ID로 대시보드를 설정할 수 있습니다.
- 선택 사항: 패널 ID: Grafana 인터페이스에 패널과 그래프를 추가한 경우 여기에서 ID를 지정할 수 있습니다.
- 선택 사항: 주석 태그: 구성 중인 알림의 이벤트 유형을 식별하는 키워드를 입력합니다.
- SSL 확인 비활성화: SSL 확인은 기본적으로 켜져 있지만 대상 인증서의 진위 확인 기능을 해제할 수 있습니다. 내부 또는 개인 CA를 사용하는 환경에 대한 확인을 비활성화하려면 이 옵션을 선택합니다.
25.4.3. IRC 링크 복사링크가 클립보드에 복사되었습니다!
IRC 알림은 채널 또는 개별 사용자에게 메시지를 연결하고, 연결한 다음 연결을 끊는 IRC 봇의 형태를 취합니다. 알림 봇은 SSL 인증도 지원합니다. 봇은 현재 닉네임 식별 기능을 지원하지 않습니다. 채널 또는 사용자가 존재하지 않거나 온라인이 아닌 경우 알림이 실패합니다. 실패 시나리오는 연결을 위해 특별히 예약되어 있습니다.
IRC 알림을 설정하려면 다음 세부 정보를 제공합니다.
- 선택 사항: IRC 서버 암호: IRC 서버에 연결하려면 암호가 필요할 수 있습니다. 서버에 필요하지 않은 경우 비워 둡니다. IRC 서버 포트: IRC 서버 포트입니다. IRC 서버 주소: IRC 서버의 호스트 이름 또는 주소입니다. IRC 닉네임: 서버에 연결된 봇의 닉네임입니다. 대상 채널 또는 사용자: 알림이 전송되는 사용자 또는 채널 목록입니다.
- 선택 사항: SSL 확인 비활성화: 연결할 때 봇이 SSL을 사용하도록 하려면 확인합니다.
25.4.4. Mattermost 링크 복사링크가 클립보드에 복사되었습니다!
Mattermost 알림 유형은 Mattermost의 메시징 및 협업 작업 공간에 간단한 인터페이스를 제공합니다.
다음 세부 정보를 제공하여 Mattermost 알림을 설정합니다.
- 대상 URL: 게시된 전체 URL입니다.
- 선택 사항 : 사용자 이름: 알림에 대한 사용자 이름을 입력합니다.
- 선택 사항: 채널: 알림에 사용할 채널을 입력합니다.
- icon URL: 이 알림에 표시할 아이콘을 지정합니다.
- SSL 확인 비활성화: 대상 인증서의 진위 확인을 끕니다. 내부 또는 개인 CA를 사용하는 환경에 대한 확인을 비활성화하려면 이 옵션을 선택합니다.
25.4.5. PagerDuty 링크 복사링크가 클립보드에 복사되었습니다!
Pagerduty를 통합하려면 먼저 PagerDuty 시스템에서 API 키를 생성해야 합니다. 자동화 컨트롤러에 제공되는 토큰입니다. 그런 다음 자동화 컨트롤러에 제공되는 통합 키를 제공하는 서비스를 생성합니다.
다음 세부 정보를 제공하여 Pagerduty 알림을 설정합니다.
- API 토큰: 먼저 Pagerduty 시스템에서 API 키를 생성해야 합니다. 자동화 컨트롤러에 제공되는 토큰입니다.
-
PagerDuty 하위 도메인: Pagerduty 계정에 등록할 때 통신할 고유한 하위 도메인이 제공됩니다. 예를 들어 "testuser"로 등록한 경우 웹 대시보드는
testuser.pagerduty.com에 있으며 APItestuser를 전체 도메인이 아닌 하위 도메인으로 제공합니다. - API 서비스/통합 키: Pagerduty에서 생성된 API 서비스/통합 키를 입력합니다.
- 클라이언트 식별자: API 키 및 서비스를 사용하는 서비스를 식별하는 데 도움이 되도록 Pagerduty 서비스에 경고 콘텐츠와 함께 전송됩니다. 여러 통합에서 동일한 API 키 및 서비스를 사용하는 경우 유용합니다.
25.4.6. Rocket.Chat 링크 복사링크가 클립보드에 복사되었습니다!
Rocket.Chat 알림 유형은 Rocket.Chat의 협업 및 통신 플랫폼에 대한 인터페이스를 제공합니다.
다음 세부 정보를 제공하여 Rocket.Chat 알림을 설정합니다.
-
대상 URL:
POST된전체 URL입니다. - 선택 사항: 사용자 이름: 사용자 이름을 입력합니다.
- 선택 사항: 아이콘 URL: 이 알림에 표시할 아이콘을 지정합니다.
- SSL 확인 비활성화: 대상 인증서의 진위 확인을 끕니다. 내부 또는 개인 CA를 사용하는 환경에 대한 확인을 비활성화하려면 이 옵션을 선택합니다.
25.4.7. Slack 링크 복사링크가 클립보드에 복사되었습니다!
Slack은 협업 팀 통신 및 메시징 도구입니다.
Slack 알림을 설정하려면 다음 세부 정보를 제공합니다.
- Slack 애플리케이션. 자세한 내용은 생성 방법에 대한 Slack 설명서의 빠른 시작 페이지를 참조하십시오.
- 토큰: 토큰입니다. 자세한 내용은 Legacy 봇 및 최신 토큰 유형 설명서 페이지의 봇 토큰에 대한 특정 세부 정보를 참조하십시오.
- 대상 채널: 한 줄에 하나의 Slack 채널입니다. 채널에는 파운드 기호(#)가 필요합니다. 특정 메시지에 응답하거나 스레드를 시작하려면 부모 메시지 ID가 상위 메시지 ID가 16자리인 채널에 상위 메시지 ID를 추가합니다. 점(.)은 10번째 숫자 뒤에 수동으로 삽입해야 합니다. 예를 들면 :#destination-channel, 1231257890.006423입니다.
알림 색상: 알림 색상을 지정합니다. 허용되는 색상은 16진수 색상 코드입니다(예: #3af 또는 #789abc). 봇 또는 앱이 설정된 경우 다음 단계를 완료해야 합니다.
- 앱으로 이동합니다.
- 새로 생성된 앱을 클릭한 다음 추가 기능 및 기능으로 이동하여 들어오는 Webhook, 봇 및 권한을 구성하고 작업 공간에 앱을 설치할 수 있습니다.
25.4.8. Twilio 링크 복사링크가 클립보드에 복사되었습니다!
Twilio는 음성 및 SMS 자동화 서비스입니다. 로그인할 때 메시지가 전송되는 전화번호를 생성해야 합니다. 그런 다음 프로그램 가능한 SMS 에서 메시징 서비스를 정의하고 이전에 생성한 번호를 연결할 수 있습니다.
이 번호 또는 다른 정보를 사용하여 임의의 번호로 보낼 수 있도록 허용하기 전에 이 번호 또는 기타 정보를 확인해야 할 수 있습니다. 메시징 서비스에는 상태 콜백 URL이 필요하지 않으며 인바운드 메시지를 처리하는 기능이 필요하지 않습니다.
개별(또는 하위) 계정 설정에 API 인증 정보가 있습니다. Twilio는 두 가지 인증 정보를 사용하여 API 요청을 보내는 계정을 확인합니다. 사용자 이름 역할을 하는 계정 SID 및 암호 역할을 하는 Auth 토큰 입니다.
다음 세부 정보를 제공하여 Twilio 알림을 설정합니다.
- 계정 SID: 계정 SID를 입력합니다.
- 계정 토큰: 계정 토큰을 입력합니다.
- 소스 전화 번호: 메시징 서비스와 관련된 번호를 "+15556667777" 형식으로 입력합니다.
- 대상 SMS 번호: SMS 수신을 원하는 번호 목록을 입력합니다. 10자리 전화 번호여야 합니다.
25.4.9. Webhook 링크 복사링크가 클립보드에 복사되었습니다!
Webhook 알림 유형은 사전 정의된 웹 서비스에 POST를 보내는 간단한 인터페이스를 제공합니다. 자동화 컨트롤러는 JSON 형식 의 관련 세부 정보가 포함된 데이터 페이로드와 함께 애플리케이션 및 JSON 콘텐츠 유형을 사용하여 이 주소에 POST 합니다. 일부 웹 서비스 API에서는 HTTP 요청이 특정 필드가 포함된 특정 형식이어야 합니다.
다음을 사용하여 Webhook 알림을 구성합니다.
-
기본 인증
PUT을 사용하여 HTTP 메서드를 구성합니다. - 발신 요청의 본문입니다.
- 기본 인증을 사용하여 인증을 구성합니다.
Webhook 알림을 설정하려면 다음 세부 정보를 제공합니다.
- 선택 사항: 사용자 이름: 사용자 이름을 입력합니다.
- 선택 사항: 기본 인증 암호:
-
대상 URL: Webhook 알림이
PUT또는POST인 전체 URL을입력합니다. - HTTP 헤더: 키와 값이 문자열인 JSON 형식으로 헤더를 입력합니다. 예를 들면 다음과 같습니다.
{"Authentication": "988881adc9fc3655077dc2d4d757d480b5ea0e11", "MessageType": "Test"}`.
{"Authentication": "988881adc9fc3655077dc2d4d757d480b5ea0e11", "MessageType": "Test"}`.
- SSL 확인 비활성화: SSL 확인은 기본적으로 켜져 있지만 대상 인증서의 진위 확인을 끄도록 선택할 수 있습니다. 내부 또는 개인 CA를 사용하는 환경에 대한 확인을 비활성화하려면 이 옵션을 선택합니다.
- HTTP 메서드: Webhook의 방법을 선택합니다.
- POST: 새 리소스를 생성합니다. 또한 다른 카테고리에 맞지 않는 작업에 대해 다양한 역할을 합니다. Webhook 서비스에 PUT 이 필요하지 않은 경우 POST 가 필요할 수 있습니다.
- PUT: 특정 리소스(ID별) 또는 리소스 컬렉션을 업데이트합니다. 리소스 ID를 미리 알고 있는 경우 PUT 을 사용하여 특정 리소스를 생성할 수도 있습니다.
25.4.9.1. Webhook 페이로드 링크 복사링크가 클립보드에 복사되었습니다!
Webhook 끝점에서 자동화 컨트롤러에서 다음 데이터를 보냅니다.
다음은 자동화 컨트롤러에서 반환한 Webhook 메시지를 통해 시작된 알림의 예입니다.
{"id": 38, "name": "Demo Job Template", "url": "https://host/#/jobs/playbook/38", "created_by": "bianca", "started":
"2020-07-28T19:57:07.888193+00:00", "finished": null, "status": "running", "traceback": "", "inventory": "Demo Inventory",
"project": "Demo Project", "playbook": "hello_world.yml", "credential": "Demo Credential", "limit": "", "extra_vars": "{}",
"hosts": {}}POST / HTTP/1.1
{"id": 38, "name": "Demo Job Template", "url": "https://host/#/jobs/playbook/38", "created_by": "bianca", "started":
"2020-07-28T19:57:07.888193+00:00", "finished": null, "status": "running", "traceback": "", "inventory": "Demo Inventory",
"project": "Demo Project", "playbook": "hello_world.yml", "credential": "Demo Credential", "limit": "", "extra_vars": "{}",
"hosts": {}}POST / HTTP/1.1
다음 데이터는 성공/실패 상태에 대해 Webhook 끝점에서 자동화 컨트롤러에서 반환합니다.
다음은 Webhook 메시지를 통해 자동화 컨트롤러에서 반환된 성공/실패 알림의 예입니다.
{"id": 46, "name": "AWX-Collection-tests-awx_job_wait-long_running-XVFBGRSAvUUIrYKn", "url": "https://host/#/jobs/playbook/46",
"created_by": "bianca", "started": "2020-07-28T20:43:36.966686+00:00", "finished": "2020-07-28T20:43:44.936072+00:00", "status": "failed",
"traceback": "", "inventory": "Demo Inventory", "project": "AWX-Collection-tests-awx_job_wait-long_running-JJSlglnwtsRJyQmw", "playbook":
"fail.yml", "credential": null, "limit": "", "extra_vars": "{\"sleep_interval\": 300}", "hosts": {"localhost": {"failed": true, "changed": 0,
"dark": 0, "failures": 1, "ok": 1, "processed": 1, "skipped": 0, "rescued": 0, "ignored": 0}}}
{"id": 46, "name": "AWX-Collection-tests-awx_job_wait-long_running-XVFBGRSAvUUIrYKn", "url": "https://host/#/jobs/playbook/46",
"created_by": "bianca", "started": "2020-07-28T20:43:36.966686+00:00", "finished": "2020-07-28T20:43:44.936072+00:00", "status": "failed",
"traceback": "", "inventory": "Demo Inventory", "project": "AWX-Collection-tests-awx_job_wait-long_running-JJSlglnwtsRJyQmw", "playbook":
"fail.yml", "credential": null, "limit": "", "extra_vars": "{\"sleep_interval\": 300}", "hosts": {"localhost": {"failed": true, "changed": 0,
"dark": 0, "failures": 1, "ok": 1, "processed": 1, "skipped": 0, "rescued": 0, "ignored": 0}}}
25.5. 사용자 정의 알림 생성 링크 복사링크가 클립보드에 복사되었습니다!
알림 양식에서 각 알림 유형의 텍스트 콘텐츠를 사용자 지정할 수 있습니다.
프로세스
- 탐색 패널에서 → → 선택합니다.
- 를 클릭합니다.
- 유형 목록에서 알림 유형을 선택합니다.
토글을 사용하여 메시지 사용자 지정을 활성화합니다.
다음과 같은 다양한 작업 이벤트에 대한 사용자 정의 메시지를 제공할 수 있습니다.
- 메시지 본문 시작
- 성공 메시지 본문
- 오류 메시지 본문
- 워크플로우 승인 본문
- 워크플로우 거부 메시지 본문
- 워크플로우 보류 메시지 본문
워크플로우 시간 초과 메시지 본문
메시지 양식은 구성 중인 알림 유형에 따라 다릅니다. 예를 들어 이메일 및 PagerDuty 알림에 대한 메시지는 본문과 제목이 있는 일반적인 이메일으로 나타납니다. 이 경우 자동화 컨트롤러에서 해당 필드를 Message 및 Message Body 로 표시합니다. 기타 알림 유형에는 각 이벤트 유형에 대한 메시지 만 있으면 됩니다.
Message 필드는 ID 또는
이름과같은 속성과 연결된 최상위 변수가 포함된 템플릿으로미리채워집니다.템플릿은 중괄호로 묶고 자동화 컨트롤러에서 제공하는 고정된 필드 세트에서 미리 채워진 메시지 필드에 표시됩니다.미리 채워진 이 필드에서는 이벤트 알림을 받는 수신자에게 일반적으로 표시되는 메시지를 제안합니다. 필요에 따라 작업에 대한 고유한 속성을 추가하여 다른 기준으로 이러한 메시지를 사용자 지정할 수 있습니다. 사용자 지정 알림 메시지는 Jinja를 사용하여 렌더링됩니다. Ansible 플레이북에서 사용하는 것과 동일한 템플릿 작성 엔진입니다.
메시지 및 메시지 본문에는 다음과 같이 다양한 유형의 콘텐츠가 있습니다.
- 메시지는 항상 문자열입니다. 한 줄로만 표시됩니다. 새 행은 지원되지 않습니다.
메시지 본문은 사전 또는 텍스트 블록입니다.
-
Webhook 및 PagerDuty의 메시지 본문에서는 사전 정의를 사용합니다. 이러한 기본 메시지 본문은
{{ job_metadata }}입니다. 그대로 두거나 고유한 사전을 제공할 수 있습니다. 이메일의 메시지 본문에는 텍스트 블록 또는 여러 줄 문자열이 사용됩니다. 기본 메시지 본문은 다음과 같습니다.
{{ job_friendly_name }} #{{ job.id }} had status {{ job.status }}, view details at {{ url }} {{ job_metadata }}{{ job_friendly_name }} #{{ job.id }} had status {{ job.status }}, view details at {{ url }} {{ job_metadata }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow {{ job_metadata }}in에 있는 이 텍스트를 편집하거나{{ job_metadata }}을 삭제할 수 있습니다. 본문은 텍스트 블록이므로 원하는 모든 문자열이 될 수 있습니다.{{ job_metadata }}는 실행 중인 작업을 설명하는 필드를 포함하는 사전으로 렌더링됩니다. 모든 경우에{{ job_metadata }}에는 다음 필드가 포함됩니다.-
id -
name -
url -
created_by -
started -
finished -
status traceback{{ job_metadata }}내에서 개별 필드를 쿼리할 수 없습니다. 알림 템플릿에서{{ job_metadata }}을 사용하면 모든 데이터가 반환됩니다.생성된 사전은 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작업에서
{{ job_metadata }}가 렌더링되면 다음과 같은 추가 필드가 포함됩니다.-
인벤토리 -
project -
playbook -
인증 정보 -
제한 -
extra_vars 호스트결과 사전은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 워크플로우 작업에서
{{ job_metadata }}가 렌더링되면 다음과 같은 추가 필드가 포함됩니다.본문(워크플로우 작업의 노드를 열거하고 각 노드와 연결된 작업에 대한 설명을 포함)결과 사전은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
-
Webhook 및 PagerDuty의 메시지 본문에서는 사전 정의를 사용합니다. 이러한 기본 메시지 본문은
잘못된 구문을 사용하거나 사용할 수 없는 필드를 참조하는 알림 템플릿을 생성하면 오류의 종류를 나타내는 오류 메시지가 표시됩니다. 알림의 사용자 정의 메시지를 삭제하면 기본 메시지가 해당 위치에 표시됩니다.
사용자 지정 메시지를 편집하지 않고 알림 템플릿을 저장하면 세부 정보 화면에서 기본값을 가정하고 사용자 정의 메시지 테이블을 표시하지 않습니다. 값을 편집하고 저장하면 전체 테이블이 세부 정보 화면에 표시됩니다.
추가 리소스
25.6. 알림 활성화 및 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
특정 작업이 시작될 때와 작업 실행이 끝날 때 성공 또는 실패에 대해 알리도록 알림을 설정할 수 있습니다. 다음 동작을 확인합니다.
- 워크플로우 작업 템플릿에 시작 시 알림이 활성화되어 있고 해당 워크플로우 내의 작업 템플릿에 시작 시 알림이 활성화된 경우 두 가지 모두에 대한 알림이 수신됩니다.
- 워크플로우 작업 템플릿 내의 많은 작업 템플릿에서 실행되도록 알림을 활성화할 수 있습니다.
- 분할된 작업 템플릿 시작에서 실행되도록 알림을 활성화하고 각 슬라이스에서 알림을 생성할 수 있습니다.
- 작업 시작 시 실행되도록 알림을 활성화하고 해당 알림이 삭제되면 작업 템플릿이 계속 실행되지만 오류 메시지가 표시됩니다.
다음 리소스에 대한 세부 정보 페이지의 알림 탭에서 작업 시작, 작업 성공, 작업 실패 또는 이러한 조합에 대한 알림을 활성화할 수 있습니다.
- 작업 템플릿
- 워크플로우 템플릿
- 프로젝트
승인 노드가 있는 워크플로우 템플릿의 경우 시작, 성공 및 실패 외에도 특정 승인 관련 이벤트를 활성화하거나 비활성화할 수 있습니다.
추가 리소스
25.7. 알림을 위한 호스트 호스트 이름 구성 링크 복사링크가 클립보드에 복사되었습니다!
시스템 설정에서 서비스 필드의 기본 URL 을 선호하는 호스트 이름으로 교체하여 알림 호스트 이름을 변경할 수 있습니다.
라이센스를 새로 고치면 알림 호스트 이름도 변경됩니다. 자동화 컨트롤러를 새로 설치할 때는 알림의 호스트 이름을 설정할 필요가 없습니다.
25.7.1. TOWER_URL_BASE 재설정 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서는 들어오는 요청을 보고 해당 요청에 따라 서버 주소를 설정하여 기본 URL(TOWER_URL_BASE)을 정의하는 방법을 결정합니다.
자동화 컨트롤러는 먼저 데이터베이스에서 설정 값을 사용합니다. 설정 값을 찾을 수 없는 경우 설정 파일의 값을 사용합니다. 자동화 컨트롤러 호스트의 IP 주소로 이동하여 라이센스를 게시하면 게시된 라이센스가 데이터베이스의 설정 항목에 기록됩니다.
잘못된 주소를 선택한 경우 TOWER_URL_BASE 를 재설정하려면 다음 절차를 사용하십시오.
프로세스
- 탐색 패널에서 → 을 선택합니다.
- 클릭합니다.
- 알림에 표시할 DNS 항목의 서비스 필드의 기본 URL 에 주소를 입력합니다.
25.8. 알림 API 링크 복사링크가 클립보드에 복사되었습니다!
시작된,success 또는 error 끝점을 사용합니다.
/api/v2/organizations/N/notification_templates_started/ /api/v2/organizations/N/notification_templates_success/ /api/v2/organizations/N/notification_templates_error/
/api/v2/organizations/N/notification_templates_started/
/api/v2/organizations/N/notification_templates_success/
/api/v2/organizations/N/notification_templates_error/
또한 .././././././N/notification_templates_started 끝점에는 다음과 같은 GET 및 POST 작업이 있습니다.
- 조직
- 프로젝트
- 인벤토리 소스
- 작업 템플릿
- 시스템 작업 템플릿
- 워크플로우 작업 템플릿
26장. 사용자 정의 알림에 지원되는 속성 링크 복사링크가 클립보드에 복사되었습니다!
지원되는 작업 속성 목록과 알림을 위한 메시지 텍스트를 구성하는 적절한 구문에 대해 알아봅니다.
다음은 지원되는 작업 속성입니다.
-
allow_simultaneous- (boolean) 이 작업과 연결된 작업 템플릿에서 여러 작업을 동시에 실행할 수 있는지 여부를 나타냅니다. -
controller_node- (문자열) 격리된 실행 환경을 관리하는 인스턴스입니다. -
created- (datetime) 이 작업이 생성된 타임스탬프입니다. -
custom_virtualenv- (문자열) 작업을 실행하는 데 사용되는 사용자 지정 가상 환경입니다. -
Description- (문자열) 작업에 대한 선택적 설명입니다. -
diff_mode- (boolean) 활성화하면 호스트의 템플릿 파일에 대한 텍스트 변경 사항이 표준 출력에 표시됩니다. -
elapsed- (decimal) 작업이 실행된 경과된 시간(초)입니다. -
execution_node- (문자열) 작업이 실행되는 노드입니다. -
failed- (부울) 작업이 실패한 경우 True입니다. -
finished- (날짜/시간) 작업 실행이 완료된 날짜 및 시간입니다. -
force_handlers- (boolean) 핸들러가 강제 적용되면 해당 호스트에서 작업이 실패하더라도 알림을 받을 때 실행됩니다. 연결할 수 없는 호스트와 같은 일부 조건에서도 처리기가 실행되지 않을 수 있습니다. -
포크- (정수) 이 작업에 요청된 포크 수입니다. -
id- (정수) 이 작업의 데이터베이스 ID입니다. -
job_explanation- (문자열)stdout을 실행하고 캡처할 수 없는 경우 작업 상태를 나타내는 status 필드입니다. -
job_slice_count- (정수) 슬라이스된 작업의 일부로 실행하는 경우 총 슬라이스 수입니다(1인 경우 작업은 슬라이스된 작업의 일부가 아님). -
job_slice_number- (정수) 슬라이스된 작업의 일부로 실행하면 이 ID가 작동하는 인벤토리 슬라이스의 ID입니다(라우드된 작업의 일부가 아닌 경우 속성은 사용되지 않음). -
job_tags- (문자열) 지정된 태그가 있는 작업만 실행됩니다. -
job_type- (선택) 이 값은실행,확인또는검사일 수 있습니다. -
launch_type- (선택)수동,다시 시작,콜백,스케줄링된,종속성,워크플로우,동기화또는scm. -
limit- (문자열) 지정된 경우 이 호스트 세트로 제한된 플레이북 실행입니다. -
modified- (datetime) 이 작업이 마지막으로 수정된 타임스탬프입니다. -
name- (문자열) 이 작업의 이름입니다. -
playbook- (문자열) 실행된 플레이북입니다. -
scm_revision- (문자열) 이 작업에 사용된 프로젝트의 scm 리버전입니다(사용 가능한 경우). -
SKIP_TAGS - (문자열) 지정된 경우 플레이북 실행에서 이 태그 세트를 건너뜁니다. -
start_at_task- (문자열) 지정된 경우 이 이름과 일치하는 작업에서 플레이북 실행이 시작됩니다. -
started- (datetime) 작업이 시작 대기 중인 날짜 및 시간입니다. -
status- (선택) 이는새로운,pending,waiting,running,successful,failed,error또는canceled일 수 있습니다. -
timeout- (정수) 작업을 취소하기 전에 실행할 시간(초)입니다. -
type- (선택) 이 작업의 데이터 유형입니다. -
url- (문자열) 이 작업의 URL입니다. -
use_fact_cache- (boolean) 작업에 대해 활성화된 경우 자동화 컨트롤러는 데이터베이스에 대한 플레이북 실행이 끝날 때 Ansible 사실 캐시 플러그인 역할을 하며 Ansible에서 사용할 팩트를 캐시합니다. 상세 정보 표시- (선택) 0~5(정상 ~ WinRM 디버그에 해당).host_status_counts(각 상태에 고유하게 할당된 호스트 수)-
건너뛴(정수) -
OK(정수) -
변경됨(정수) -
실패(정수) -
다크(정수) -
처리됨(정수) -
구조됨(정수) -
무시됨(정수) -
실패(boolean)
-
summary_fields:인벤토리-
ID- (정수) 인벤토리의 데이터베이스 ID입니다. -
name- (문자열) 인벤토리의 이름입니다. -
Description- (문자열) 인벤토리에 대한 선택적 설명입니다. -
has_active_failures- (boolean) (더 이상 사용되지 않음) 이 인벤토리의 호스트가 실패했는지 여부를 나타내는 플래그입니다. -
total_hosts- (더 이상 사용되지 않음)(정수) 이 인벤토리의 총 호스트 수입니다. -
hosts_with_active_failures- (더 이상 사용되지 않음)(정수) 활성 오류가 있는 이 인벤토리의 호스트 수입니다. -
total_groups- (더 이상 사용되지 않음)(정수) 이 인벤토리의 총 그룹 수입니다. -
groups_with_active_failures- (더 이상 사용되지 않음)(정수) 활성 오류가 있는 이 인벤토리의 호스트 수입니다. -
has_inventory_sources- (더 이상 사용되지 않음)(boolean) 이 인벤토리에 외부 인벤토리 소스가 있는지 여부를 나타내는 플래그입니다. -
total_inventory_sources- (int) 이 인벤토리 내에 구성된 총 외부 인벤토리 소스 수입니다. -
inventory_sources_with_failures- (int) 실패와 함께 이 인벤토리의 외부 인벤토리 소스 수입니다. -
organization_id- (id) 이 인벤토리가 포함된 조직입니다. -
kind- (선택)(빈 문자열)(호스트가 인벤토리와 직접 연결되어 있음을 나타내는) 또는스마트
-
project-
id- (정수) 프로젝트의 데이터베이스 ID입니다. -
name- (문자열) 프로젝트의 이름입니다. -
Description(문자열) 프로젝트에 대한 선택적 설명입니다. -
status- (선택)새로운,보류 중, 대기 중,실행중 ,성공,실패,오류,취소됨,업데이트되지않음 ,확인또는누락 중 하나입니다. -
scm_type(choice) one of (empty string),git,hg,svn,insights.
-
job_template-
id- (정수) 작업 템플릿의 데이터베이스 ID입니다. -
Description- (문자열) 프로젝트에 대한 선택적 설명입니다. -
status- (선택)새로운,보류 중, 대기 중,실행중 ,성공,실패,오류,취소됨,업데이트되지않음 ,확인또는누락 중 하나입니다.
-
job_template-
id- (정수) 작업 템플릿의 데이터베이스 ID입니다. -
name- (문자열) 작업 템플릿의 이름입니다. -
Description- (문자열) 작업 템플릿에 대한 선택적 설명입니다.
-
unified_job_template-
id- (정수) 통합 작업 템플릿의 데이터베이스 ID입니다. -
name- (문자열) 통합 작업 템플릿의 이름입니다. -
설명- (문자열) 통합 작업 템플릿에 대한 선택적 설명입니다. -
unified_job_type- (선택) 작업 ,workflow_또는jobproject_update와 같은 통합 작업 유형입니다.
-
instance_group-
id- (정수) 인스턴스 그룹의 데이터베이스 ID입니다. -
name- (문자열) 인스턴스 그룹의 이름입니다.
-
created_by-
id- (정수) 작업을 시작한 사용자의 데이터베이스 ID입니다. -
username- (문자열) 작업을 시작한 사용자 이름입니다. -
first_name- (문자열) 첫 번째 이름입니다. -
last_name- (문자열) 마지막 이름입니다.
-
labels-
count- (정수) 라벨 수입니다. -
결과- 레이블을 나타내는 사전 목록입니다. 예를 들어 {"id": 5, "name": "database jobs"}가 있습니다.
-
그룹화된 중괄호 {{ }}를 사용하여 사용자 정의 알림 메시지에서 작업에 대한 정보를 참조할 수 있습니다. 점 표기법을 사용하여 특정 작업 속성에 액세스합니다(예: {{ job.summary_fields.inventory.name }}). 중괄호 앞 또는 주위에 사용된 모든 문자 또는 일반 텍스트(예: 작업 ID의 경우 "#", 작은따옴표의 경우 "#")를 추가하여 일부 설명자를 표시할 수 있습니다. 사용자 지정 메시지에는 메시지 전체에서 여러 변수가 포함될 수 있습니다.
{{ job_friendly_name }} {{ job.id }} ran on {{ job.execution_node }} in {{ job.elapsed }} seconds.
{{ job_friendly_name }} {{ job.id }} ran on {{ job.execution_node }} in {{ job.elapsed }} seconds.
다음은 템플릿에 추가할 수 있는 추가 변수입니다.
-
approval_node_name- (문자열) 승인 노드 이름입니다. -
approval_status- (선택)승인됨,거부됨및timed_out중 하나입니다. -
URL- (문자열) 알림이 출력되는 작업의 URL입니다(시작,성공,실패,승인 알림에적용됨). -
workflow_url- (문자열) 관련 승인 노드의 URL입니다. 이를 통해 알림 수신자는 관련 워크플로우 작업 페이지로 이동하여 상황을 검사할 수 있습니다. 예를 들어이 노드는 {{workflow_url }}에서 볼 수 있습니다. 승인 관련 알림의 경우url및workflow_url이 모두 동일합니다. -
job_friendly_name- (문자열) 작업의 친숙한 이름입니다. job_metadata- (문자열) JSON 문자열로 된 작업 메타데이터입니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
27장. Webhook 작업 링크 복사링크가 클립보드에 복사되었습니다!
웹 후크를 사용하여 웹을 통해 애플리케이션 간에 지정된 명령을 실행합니다. 자동화 컨트롤러는 현재 GitHub 및 GitLab과 Webhook 통합을 제공합니다.
다음 서비스를 사용하여 Webhook를 설정합니다.
GitHub 및 GitLab의 Webhook post-status-back 기능은 특정 CI 이벤트에서만 작동하도록 설계되었습니다. 다른 종류의 이벤트를 수신하면 서비스 로그에 다음과 같은 메시지가 표시됩니다.
awx.main.models.mixins Webhook 이벤트에는 건너뛰는 상태 API 끝점이 없었습니다.
27.1. GitHub Webhook 설정 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에는 들어오는 트리거된 Webhook 이벤트를 기반으로 작업을 실행할 수 있습니다. 작업 상태 정보(보류 중, 오류, 성공)는 가져오기 요청 이벤트에 대해서만 다시 보낼 수 있습니다. 작업 상태를 웹 후크 서비스로 다시 게시하기 위해 자동화 컨트롤러가 필요하지 않은 경우 3 단계로 바로 이동합니다.
프로세스
자동화 컨트롤러와 함께 사용할 개인 액세스 토큰 (PAT)을 생성합니다.
- GitHub 계정의 프로필 설정에서 설정을 선택합니다.
- 탐색 패널에서 <> .
- 개발자 설정 페이지에서 개인 액세스 토큰을 선택합니다.
- 토큰 선택 (클래식)
- 개인 액세스 토큰 화면에서 클릭합니다.
- 메시지가 표시되면 GitHub 계정 암호를 입력하여 계속합니다.
- 노트 필드에 이 PAT의 용도에 대한 간략한 설명을 입력합니다.
- Select scopes 필드에서 repo:status, repo_deployment, public_repo 옆에 있는 확인란을 선택합니다. 자동화 Webhook에는 초대를 제외하고 리포지토리 범위 액세스 권한만 있으면 됩니다. 자세한 내용은 OAuth 앱의 범위 설명서를 참조하십시오.
클릭합니다.
중요토큰이 생성되면 2단계에서 필요한 대로 PAT를 복사해야 합니다. GitHub에서는 이 토큰에 다시 액세스할 수 없습니다.
필요한 경우 PAT를 사용하여 GitHub 인증 정보를 생성합니다.
- 인스턴스로 이동하여 생성된 토큰을 사용하여 GitHub PAT에 대한 새 인증 정보를 생성합니다.
GitHub에 다시 게시되는 작업 템플릿에서 사용할 때 이 인증 정보의 이름을 기록해 두십시오.
Webhook를 활성화할 작업 템플릿으로 이동하고 이전 단계에서 생성한 Webhook 서비스 및 인증 정보를 선택합니다.
- 을 클릭합니다. 작업 템플릿은 GitHub에 다시 게시하도록 설정됩니다.
- Webhook를 구성할 GitHub 리포지토리로 이동하고 설정을 .
- 탐색 패널에서 선택합니다.
- Webhook 추가 페이지를 완료하려면 작업 템플릿 또는 워크플로우 작업 템플릿에서 Webhook 활성화 옵션을 선택해야 합니다. 자세한 내용은 작업 템플릿 생성 및 워크플로우 작업 템플릿 생성 의 3단계를 참조하십시오.
다음 필드를 작성합니다.
- 페이로드 URL: 작업 템플릿에서 Webhook URL 의 내용을 복사하여 여기에 붙여넣습니다. 결과는 GitHub에서 이 주소로 전송됩니다.
- 콘텐츠 유형: application/json 으로 설정합니다.
- Secret: 작업 템플릿에서 Webhook 키 의 콘텐츠를 복사하여 여기에 붙여넣습니다.
이 Webhook를 트리거하려면 어떤 이벤트를 발생 하시겠습니까? : Webhook 를 트리거할 이벤트 유형을 선택합니다. 이러한 이벤트는 작업 또는 워크플로우를 트리거합니다. 작업 상태(보류 중, 오류, 성공)를 GitHub로 다시 보내려면 Let me select individual events 섹션에서 Pull requests 를 선택해야 합니다.
- Active: 이 확인 상태를 유지합니다.
- 클릭합니다.
- Webhook가 구성되면 편집 또는 삭제 기능과 함께 리포지토리에 대해 활성 상태인 Webhook 목록에 표시됩니다. Webhook를 클릭하여 Webhook 관리 화면으로 이동합니다.
- 스크롤하여 Webhook에 대한 전송 시도와 성공 여부를 확인합니다.
추가 리소스
27.2. GitLab Webhook 설정 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에는 들어오는 트리거된 Webhook 이벤트를 기반으로 작업을 실행할 수 있습니다. 작업 상태 정보(보류 중, 오류, 성공)는 가져오기 요청 이벤트에 대해서만 다시 보낼 수 있습니다. 자동화 컨트롤러가 작업 상태를 웹 후크 서비스로 다시 게시할 필요가 없는 경우 3 단계로 직접 이동합니다.
프로세스
자동화 컨트롤러와 함께 사용할 개인 액세스 토큰 (PAT)을 생성합니다.
- GitLab의 탐색 패널에서 avatar 및 을 선택합니다.
- 탐색 패널에서 선택합니다.
다음 필드를 작성합니다.
- 토큰 이름: 이 PAT의 용도에 대한 간략한 설명을 입력합니다.
- 만료일: Webhook의 만료 날짜를 설정하지 않으려면 이 필드를 작성합니다.
- Select scopes: 통합에 적용되는 항목을 선택합니다. 자동화 컨트롤러의 경우 api 가 유일한 선택 사항입니다.
을 클릭합니다.
중요토큰이 생성되면 2단계에서 필요한 대로 PAT를 복사해야 합니다. GitLab에서는 이 토큰에 다시 액세스할 수 없습니다.
필요한 경우 PAT를 사용하여 GitLab 인증 정보를 생성합니다.
- 인스턴스로 이동하여 생성된 토큰을 사용하여 GitLab PAT에 대한 새 인증 정보를 생성합니다.
이 인증 정보는 GitLab에 다시 게시되는 작업 템플릿에서 사용하므로 이 인증 정보의 이름을 기록해 두십시오.
Webhook를 활성화할 작업 템플릿으로 이동하고 이전 단계에서 생성한 Webhook 서비스 및 인증 정보를 선택합니다.
- 을 클릭합니다. 작업 템플릿은 GitLab에 다시 게시하도록 설정됩니다.
- Webhook를 구성할 GitLab 리포지토리로 이동합니다.
- 탐색 패널에서 → 를 선택합니다.
- Webhook 추가 페이지를 완료하려면 작업 템플릿 또는 워크플로우 작업 템플릿에서 Webhook 활성화 옵션을 선택해야 합니다. 자세한 내용은 작업 템플릿 생성 및 워크플로우 작업 템플릿 생성 의 3단계를 참조하십시오.
다음 필드를 작성합니다.
- URL: 작업 템플릿에서 Webhook URL 의 내용을 복사하여 여기에 붙여넣습니다. 결과는 GitLab에서 이 주소로 전송됩니다.
- Secret Token: 작업 템플릿에서 Webhook 키 의 내용을 복사하여 여기에 붙여넣습니다.
- 트리거: Webhook를 트리거할 이벤트 유형을 선택합니다. 이러한 이벤트는 작업 또는 워크플로우를 트리거합니다. 작업 상태(보류 중, 오류, 성공)를 GitLab으로 다시 보내려면 Trigger 섹션에서 request 이벤트를 선택해야 합니다.
- SSL 확인: SSL 확인 활성화를 선택합니다.
- 클릭합니다.
- Webhook가 구성되면 이벤트 테스트, Webhook 편집 또는 삭제 기능과 함께 리포지토리의 프로젝트 Webhook 목록에 표시됩니다. Webhook 이벤트를 테스트하면 성공 또는 실패 여부에 관계없이 각 페이지의 결과가 표시됩니다.
추가 리소스
27.3. 페이로드 출력 보기 링크 복사링크가 클립보드에 복사되었습니다!
추가 변수로 노출되는 전체 페이로드를 볼 수 있습니다.
프로세스
- 탐색 패널에서 → .
- 웹 후크가 활성화된 작업 템플릿을 선택합니다.
- 세부 정보 탭을 선택합니다.
Extra Variables 필드에서 다음 예와 같이
awx_webhook_payload변수의 페이로드 출력을 확인합니다.
28장. Red Hat Insights for Red Hat Ansible Automation Platform Remediations 설정 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 Red Hat Insights와의 통합을 지원합니다.
호스트가 Red Hat Insights에 등록되면 취약점과 알려진 구성 충돌을 지속적으로 검사합니다. 확인된 각 문제에는 Ansible 플레이북 형식의 관련 수정 사항이 있을 수 있습니다.
Red Hat Insights 사용자는 수정 사항을 그룹화하는 유지 관리 계획을 만들고 플레이북을 생성하여 문제를 완화할 수 있습니다. 자동화 컨트롤러는 Red Hat Insights 프로젝트를 통해 유지 관리 계획 플레이북을 추적합니다.
기본 인증을 통한 Red Hat Insights 인증은 먼저 자동화 컨트롤러에서 설정해야 하는 특수 인증 정보로 지원됩니다.
Red Hat Insights 유지 관리 계획을 실행하려면 Red Hat Insights 프로젝트와 인벤토리가 필요합니다.
28.1. Red Hat Insights 인증 정보 생성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Insights 인증 정보를 생성하려면 다음 절차를 따르십시오.
프로세스
- 탐색 패널에서 → 선택합니다.
- 클릭합니다.
다음 필드에 적절한 세부 정보를 입력합니다.
- name: 인증 정보의 이름을 입력합니다.
- 선택 사항: 설명: 인증 정보에 대한 설명을 입력합니다.
-
선택 사항: 조직: 인증 정보가 연결된 조직의 이름을 입력하거나 검색
아이콘을 클릭하여 조직 선택 창에서 선택합니다.
인증 정보 유형: Insights 를 입력하거나 목록에서 선택합니다.
- 사용자 이름: 유효한 Red Hat Insights 인증 정보를 입력합니다.
암호: 유효한 Red Hat Insights 인증 정보를 입력합니다.
Insights for Ansible Automation Platform 인증 정보는 사용자의 Red Hat Customer Portal 계정 사용자 이름과 암호입니다.
- 클릭합니다.
28.2. Red Hat Insights 프로젝트 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계를 사용하여 Red Hat Insights와 함께 사용할 새 프로젝트를 생성합니다.
프로세스
- 탐색 패널에서 → 선택합니다.
- 클릭합니다.
다음 필드에 적절한 세부 정보를 입력합니다. 다음 필드에는 특정 Red Hat Insights 관련 항목이 필요합니다.
- Name: Red Hat Insights 프로젝트의 이름을 입력합니다.
- 선택 사항: 설명: 프로젝트에 대한 설명을 입력합니다.
-
조직: 인증 정보가 연결된 조직의 이름을 입력하거나 검색
아이콘을 클릭하여 조직 선택 창에서 선택합니다.
- 선택 사항: 실행 환경: 이 프로젝트를 사용하는 작업에 사용되는 실행 환경입니다.
- 소스 제어 유형: Red Hat Insights 를 선택합니다.
- 선택 사항: 콘텐츠 서명 검증 인증 정보: 프로젝트를 동기화할 때 콘텐츠 서명을 사용하여 콘텐츠가 안전한지 확인할 수 있습니다.
-
Insights 인증 정보: 이전에 생성한 Red Hat Insights 인증 정보로 미리 채워져 있습니다. 그렇지 않은 경우 인증 정보를 입력하거나 검색
아이콘을 클릭하여 Insights 인증 정보 선택 창에서 선택합니다.
Options 필드에서 이 프로젝트에 대한 업데이트 옵션을 선택하고 해당하는 경우 추가 값을 제공합니다. 각 옵션에 대한 자세한 내용은 각 옵션 옆에 있는 툴팁
아이콘을 클릭합니다.
- 클릭합니다.
모든 SCM 및 프로젝트 동기화는 새 프로젝트를 처음 저장할 때 자동으로 수행됩니다. Red Hat Insights의 최신 항목으로 업데이트하려면 프로젝트의 사용 가능한 작업 아래에 있는 업데이트
아이콘을 클릭하여 SCM 기반 프로젝트를 수동으로 업데이트합니다.
이 프로세스는 Red Hat Insights 프로젝트를 Red Hat Insights 계정 솔루션과 동기화합니다. 동기화가 실행되면 프로젝트 이름 옆에 있는 상태 점이 업데이트됩니다.
28.3. Insights 인벤토리 생성 링크 복사링크가 클립보드에 복사되었습니다!
Insights 플레이북에는 Red Hat Insights에 값이 제공되는 호스트 이름인 line이 포함되어 있으며 자동화 컨트롤러에 제공된 호스트 이름과 다를 수 있습니다.
28.4. Red Hat Insights 인벤토리 수정 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Insights 인벤토리를 수정하면 자동화 컨트롤러에서 한 번의 클릭으로 Red Hat Insights 플레이북을 실행할 수 있습니다.
Red Hat Insights 수정을 실행하는 작업 템플릿을 생성하여 이를 수행할 수 있습니다.
프로세스
- 탐색 메뉴에서 → 선택합니다.
- 템플릿 목록 보기의 을 클릭하고 목록에서 선택합니다.
다음 필드에 적절한 세부 정보를 입력합니다. 다음 필드에는 특정 Red Hat Insights 관련 항목이 필요합니다.
- 이름: 유지 관리 계획의 이름을 입력합니다.
- 선택 사항: 설명: 작업 템플릿에 대한 설명을 입력합니다.
- 작업 유형: 아직 채워지지 않은 경우 작업 유형 목록에서 실행을 선택합니다.
- inventory: 이전에 생성한 Red Hat Insights 인벤토리를 선택합니다.
- 프로젝트: 이전에 생성한 Red Hat Insights 프로젝트를 선택합니다.
- 선택 사항: 실행 환경: 실행에 사용할 컨테이너 이미지입니다.
- playbook: 플레이북 목록에서 실행할 유지보수 계획과 관련된 플레이북을 선택합니다.
-
선택 사항: 인증 정보 : 이 프로젝트에 사용할 인증 정보를 입력하거나 검색(
) 아이콘을 클릭하여 팝업 창에서 선택합니다. 인증 정보가 Red Hat Insights 인증 정보일 필요는 없습니다.
상세 정보 표시: 기본 설정을 유지하거나 목록에서 원하는 상세 정보 표시를 선택합니다.
- 클릭합니다.
-
시작
아이콘을 클릭하여 작업 템플릿을 시작합니다.
완료되면 작업 세부 정보 페이지가 표시됩니다.
29장. 자동화 컨트롤러 모범 사례 링크 복사링크가 클립보드에 복사되었습니다!
다음은 자동화 컨트롤러 사용에 대한 모범 사례를 설명합니다.
29.1. 소스 제어 사용 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러는 서버에 직접 저장된 플레이북을 지원합니다. 따라서 플레이북, 역할 및 관련 세부 정보를 소스 제어에 저장해야 합니다. 이렇게 하면 인프라 자동화 규칙을 변경한 시기와 이유를 설명하는 감사 추적이 가능합니다. 또한 인프라 또는 팀의 다른 부분과 플레이북을 공유할 수 있습니다.
29.2. Ansible 파일 및 디렉터리 구조 링크 복사링크가 클립보드에 복사되었습니다!
프로젝트에서 사용할 공통 역할 세트를 생성하는 경우 소스 제어 하위 모듈 또는 /opt 과 같은 공통 위치에 액세스해야 합니다. 프로젝트에서 다른 프로젝트의 역할 또는 콘텐츠를 가져올 것으로 예상해서는 안 됩니다.
자세한 내용은 Ansible 문서의 일반 팁 링크를 참조하십시오.
-
자동화 컨트롤러에서
vars_prompt질문을 대화식으로 허용하지 않으므로 플레이북vars_prompt기능을 사용하지 마십시오.vars_prompt사용을 방지할 수 없는 경우 작업 템플릿 기능의 설문조사 를 참조하십시오. -
자동화 컨트롤러에서 대화식으로
일시 중지를 취소할 수 없으므로 시간 초과 없이 플레이북 일시 중지 기능을 사용하지 마십시오.일시 정지사용을 방지할 수 없는 경우 시간 초과를 설정해야 합니다.
작업은 플레이북 디렉터리를 현재 작업 디렉터리로 사용하지만 작업은 이 디렉터리를 사용하는 대신 playbook_dir 변수를 사용하도록 코딩해야 합니다.
29.3. 동적 인벤토리 소스 사용 링크 복사링크가 클립보드에 복사되었습니다!
인프라에 클라우드 공급자이든 로컬 CMDB이든 진실의 외부 소스가 있는 경우, 인벤토리 동기화 프로세스를 정의하고 동적 인벤토리(클라우드 인벤토리 소스 포함)에 대한 지원을 사용하는 것이 가장 좋습니다. 이렇게 하면 인벤토리가 항상 최신 상태로 유지됩니다.
--overwrite_vars 를 설정하지 않는 한 편집 및 추가한 인벤토리 호스트 변수는 인벤토리 동기화 후에도 유지됩니다.
29.4. 인벤토리 변수 관리 링크 복사링크가 클립보드에 복사되었습니다!
group_vars/ 및 host_vars/ 를 사용하는 대신 호스트 및 그룹 정의(인벤토리 편집기 참조)로 변수 데이터를 보관합니다. 동적 인벤토리 소스를 사용하는 경우 변수 덮어쓰기 옵션이 설정되지 않은 한 자동화 컨트롤러에서 이러한 변수 를 데이터베이스와 동기화할 수 있습니다.
29.5. 자동 확장 링크 복사링크가 클립보드에 복사되었습니다!
"콜백" 기능을 사용하여 새로 부팅하여 자동 확장 시나리오 또는 프로비저닝 통합 구성을 요청할 수 있습니다.
29.6. 더 큰 호스트 수 링크 복사링크가 클립보드에 복사되었습니다!
실행 실행 병렬 처리를 늘리려면 작업 템플릿에서 "포크"를 더 큰 값으로 설정합니다.
29.7. 지속적인 통합/지속적인 배포 링크 복사링크가 클립보드에 복사되었습니다!
Jenkins와 같은 지속적 통합 시스템의 경우 작업을 생성하려면 작업 템플릿에 curl 요청을 수행해야 합니다. 작업 템플릿에 대한 인증 정보에는 특정 암호를 입력하라는 메시지가 표시되지 않아야 합니다. 구성 및 사용 지침은 Ansible 문서 의 설치를 참조하십시오.
30장. 용어집 링크 복사링크가 클립보드에 복사되었습니다!
- 임시
-
애드혹 은 오케스트레이션 언어(
/usr/bin/ansible-playbook)가 아닌 /usr/bin/ansible/ansible 명령을 사용하여 Ansible을 사용하는 것을 나타냅니다. 임시 명령의 예로는 인프라에서 50대의 머신을 재부팅하는 작업이 있습니다. 임시로 수행할 수 있는 작업은 플레이북을 작성하여 수행할 수 있습니다. 플레이북은 다른 많은 작업을 함께 추가할 수도 있습니다. - 자동화 메시
- 노드로 구성된 네트워크를 나타냅니다. 노드 간 통신은 TCP, UDP 또는 Unix 소켓과 같은 프로토콜에 의해 전송 계층에서 설정됩니다.
Node 에서도 참조하십시오.
- 콜백 플러그인
- Ansible의 결과를 가로채서 해당 결과를 조작할 수 있는 사용자 작성 코드를 나타냅니다. GitHub 프로젝트의 일부 예는 사용자 정의 로깅을 수행하거나 이메일을 보내거나 사운드 효과를 재생합니다.
- 제어 그룹
- 'cgroups'라고도 하는 제어 그룹은 Linux 커널의 기능입니다. 이 기능을 통해 프로세스를 실행하기 위해 리소스를 그룹화하고 할당할 수 있습니다. cgroups는 프로세스에 리소스를 할당하는 것 외에도 cgroup 내부에서 실행되는 모든 프로세스의 리소스 사용을 보고할 수도 있습니다.
- 확인 모드
-
원격 시스템을 변경하지 않고 이 플래그 없이 명령을 실행한 경우에만 발생할 수 있는 변경 사항만 출력하는
--check옵션을 사용하여 Ansible을 실행하는 것을 나타냅니다. 이는 다른 시스템의 "시험 실행" 모드와 유사합니다. 그러나 예기치 않은 명령 실패 또는 계단식 효과(다른 시스템의 유사한 모드)를 고려하지 않습니다. 확인 모드를 사용하여 발생할 수 있는 사항에 대한 아이디어를 얻을 수 있지만 좋은 스테이징 환경을 대신할 수는 없습니다. - 컨테이너 그룹
- 컨테이너 그룹은 작업이 실행되는 Kubernetes 또는 OpenShift 클러스터에서 Pod를 프로비저닝하도록 구성을 지정하는 인스턴스 그룹 유형입니다. 이러한 Pod는 온디맨드 방식으로 프로비저닝되며 플레이북 실행 기간에만 존재합니다.
- 인증 정보
- 자동화 컨트롤러에서 머신에 대해 작업을 시작하고, 인벤토리 소스와 동기화하고, 버전 제어 시스템에서 프로젝트 콘텐츠를 가져오는 데 사용할 수 있는 인증 세부 정보입니다. 자세한 내용은 사용자 인증 정보 관리를 참조하십시오.
- 인증 정보 플러그인
- 외부 인증 정보 유형 및 해당 메타데이터 필드 그리고 시크릿 관리 시스템과 상호 작용하는 데 필요한 코드가 포함된 Python 코드입니다.
- 분산 작업
- 작업은 작업 템플릿, 인벤토리, 슬라이스 크기로 구성됩니다. 분산 작업 슬라이스를 실행하면 각 인벤토리를 더 작은 작업 슬라이스를 실행하는 데 사용되는 다수의 "슬라이스 크기" 청크로 분할합니다.
- 외부 인증 정보 유형
- 시크릿 관리 시스템을 사용하여 인증하는 데 사용되는 관리형 인증 정보 유형입니다.
- 팩트
-
사실은 원격 노드에 대해 발견된 사항입니다. 변수처럼 플레이북과 템플릿에서 사용할 수 있지만 사실은 설정이 아닌 유추하는 항목에 해당합니다. 사실은 원격 노드에서 내부 설정 모듈을 실행하여 플레이를 실행할 때 자동으로 검색됩니다. setup 모듈을 명시적으로 호출할 필요가 없습니다. 실행만 실행됩니다. 필요하지 않은 경우 시간을 절약하기 위해 비활성화할 수 있습니다. 다른 구성 관리 시스템에서 전환하는 사용자의 편의를 위해 팩트 모듈은 각각 Chef 및 Puppet의 팩트 라이브러리인
ohai및facter툴에서 사실을 가져옵니다. - 포크
-
Ansible 및 자동화 컨트롤러는 원격 노드와 병렬로 통신합니다. 작업 템플릿을 만들거나 편집하는 동안 병렬 처리 수준은
--forks를 전달하거나 구성 파일에서 기본값을 편집하여 설정할 수 있습니다. 기본값은 매우 보수적인 포크 5개이지만 RAM이 많은 경우 병렬 처리를 늘리기 위해 50과 같은 더 높은 값으로 설정할 수 있습니다. - 그룹
- 하나의 세트로 처리할 수 있는 Ansible의 호스트 세트로, 이 중 여러 개가 단일 인벤토리 내에 존재할 수 있습니다.
- 그룹 변수
-
group_vars/파일은 인벤토리 파일이 있는 디렉터리에 저장된 파일이며 각 그룹 다음에 이름이 지정된 선택적 파일 이름이 있습니다. 이 변수는 지정된 그룹, 특히 복잡한 데이터 구조에 제공되는 변수를 배치하여 이러한 변수를 인벤토리 파일 또는 플레이북에 포함할 필요가 없도록 하는 편리한 위치입니다. - 처리기
- 처리기는 Ansible 플레이북의 일반 작업과 유사하지만( 작업참조) 작업에 "notify" 지시문이 포함되어 있고 변경된 내용이 있음을 나타내는 경우에만 실행됩니다. 예를 들어 구성 파일이 변경되면 구성 파일 템플릿 작성 작업을 참조하는 작업에서 서비스 재시작 처리기에 알릴 수 있습니다. 즉, 서비스를 다시 시작해야 하는 경우에만 서비스를 반송할 수 있습니다. 처리기는 서비스 재시작 이외의 용도로 사용할 수 있지만 서비스 다시 시작은 가장 일반적으로 사용됩니다.
- 호스트
- 자동화 컨트롤러에서 관리하는 시스템: 물리, 가상 또는 클라우드 기반 서버 또는 기타 장치(일반적으로 운영 체제 인스턴스)를 포함할 수 있습니다. 호스트는 인벤토리에 포함됩니다. "노드"라고도 합니다.
- 호스트 지정자
- Ansible의 각 플레이는 일련의 작업(시스템의 역할, 용도 또는 순서 정의)을 일련의 시스템에 매핑합니다. 각 플레이의 이 "hosts:" 지시문을 종종 호스트 지정자라고 합니다. 하나의 시스템, 여러 시스템, 하나 이상의 그룹 또는 한 그룹에 있고 다른 그룹에는 명시적으로 없는 호스트를 선택할 수 있습니다.
- 인스턴스 그룹
- 클러스터형 환경에서 사용할 인스턴스가 포함된 그룹입니다. 인스턴스 그룹은 정책을 기반으로 인스턴스를 그룹화하는 기능을 제공합니다.
- 인벤토리
- 작업을 시작할 수 있는 호스트 컬렉션입니다.
- 인벤토리 스크립트
- 호스트, 호스트 그룹 멤버십, SQL 데이터베이스, CMDB 솔루션 또는 LDAP인지 여부에 관계없이 외부 리소스에서 변수 정보를 조회하는 프로그램입니다. 이 개념은 Puppet('외부 노드 분류기'라고 함)에서 조정되었으며 유사한 방식으로 작동합니다.
- 인벤토리 소스
- 현재 인벤토리 그룹에 병합할 클라우드 또는 기타 스크립트에 대한 정보로, 해당 그룹 및 호스트에 대한 그룹, 호스트 및 변수가 자동으로 채워집니다.
- Job
- 자동화 컨트롤러에서 시작한 많은 백그라운드 작업 중 하나입니다. 일반적으로 Ansible 플레이북 시작과 같은 작업 템플릿을 인스턴스화합니다. 다른 유형의 작업에는 인벤토리 가져오기, 소스 제어를 통한 프로젝트 동기화 또는 관리 정리 작업이 포함됩니다.
- 작업 세부 정보
- 출력 및 성공/실패 상태를 포함하여 특정 작업을 실행한 기록입니다.
- 작업 슬라이스
- 분산 작업을 참조하십시오.
- 작업 템플릿
- Ansible 플레이북의 조합과 이를 시작하는 데 필요한 매개변수 세트입니다. 자세한 내용은 작업 템플릿을 참조하십시오.
- JSON
- JSON은 JavaScript 오브젝트 구문을 기반으로 구조화된 데이터를 표현하기 위한 텍스트 기반 형식입니다. Ansible 및 자동화 컨트롤러는 원격 모듈의 반환 데이터에 JSON을 사용합니다. 이를 통해 Python뿐만 아니라 모든 언어로 모듈을 작성할 수 있습니다.
- 메타데이터
- 인증된 외부 시스템에서 시크릿을 찾는 데 필요한 정보입니다. 사용자는 외부 인증 정보를 대상 인증 정보 필드에 연결할 때 이 정보를 제공합니다.
- 노드
노드는 인스턴스 데이터베이스 모델 또는
/api/v2/instances/끝점의 항목에 해당하며 클러스터 또는 메시에 참여하는 시스템입니다. 통합 작업 API는controller_node및execution_node필드를 보고합니다. 실행 노드는 작업이 실행되는 위치이고, 컨트롤러 노드는 작업과 서버 기능 간의 인터페이스입니다.Expand 노드 유형 설명 제어
영구 서비스를 실행하고 작업을 하이브리드 및 실행 노드에 위임하는 노드입니다.
하이브리드
영구 서비스를 실행하고 작업을 실행하는 노드입니다.
홉
메시를 통한 중계에만 사용됩니다.
실행
제어 노드에서 전달된 작업을 실행하는 노드(사용자의 Ansible 자동화에서 제출된 작업)
- 알림 템플릿
- 이름, 설명, 정의된 구성이 포함된 알림 유형(이메일, Slack, Webhook 등) 인스턴스입니다.
- 알림
- 알림(예: Email, Slack 또는 Webhook)에는 알림 템플릿에 정의된 이름, 설명 및 구성이 있습니다. 예를 들어 작업이 실패하면 알림 템플릿에서 정의한 구성을 사용하여 알림이 전송됩니다.
- 통지
- 변경 이벤트를 등록하고 플레이 종료 시 처리기 작업에 다른 작업을 실행해야 함을 알리는 작업 동작입니다. 여러 작업에서 처리기에 알리는 경우에도 한 번만 실행됩니다. 처리기는 알림을 받는 순서가 아니라 나열된 순서대로 실행됩니다.
- 조직
- 사용자, 팀, 프로젝트, 인벤토리로 이루어진 논리 컬렉션입니다. 조직은 오브젝트 계층 구조에서 가장 높은 수준입니다.
- 조직 관리자
- 조직 내에서 새 사용자 및 프로젝트 만들기를 포함하여 조직의 멤버십 및 설정을 수정할 수 있는 권한이 있는 사용자입니다. 조직 관리자는 조직 내의 다른 사용자에게 권한을 부여할 수도 있습니다.
- 권한
- 사용자 및 팀에 할당되어 프로젝트, 인벤토리 및 기타 오브젝트를 읽고, 수정하고, 관리하는 기능을 제공합니다.
- 플레이
- 플레이는 호스트 지정자가 선택한 호스트 세트(일반적으로 그룹으로 선택되지만 종종 호스트 이름 와일드카드로 선택됨)와 해당 시스템이 수행하는 역할을 정의하기 위해 해당 호스트에서 실행되는 작업 간의 최소 매핑입니다. 플레이북은 플레이로 구성된 목록입니다. 하나의 플레이북에 플레이가 하나 이상 있을 수 있습니다.
- Playbook
- Ansible 플레이북입니다. 자세한 내용은 플레이북 시작하기를 참조하십시오.
- 정책
- 정책은 인스턴스 그룹이 작동하는 방식과 작업이 실행되는 방식을 나타냅니다.
- 프로젝트
- 자동화 컨트롤러에 표시되는 Ansible 플레이북의 논리 컬렉션입니다.
- 역할
- 역할은 Ansible 및 자동화 컨트롤러의 조직 단위입니다. 호스트 그룹(또는 일련의 그룹 또는 호스트 패턴 등)에 역할을 할당하면 특정 동작을 구현할 수 있습니다. 역할에는 변수 값, 작업 및 처리기 적용 또는 이러한 조합이 포함될 수 있습니다. 역할과 연결된 파일 구조로 인해 역할은 플레이북 간에 또는 다른 사용자와 동작을 공유할 수 있는 재배포 가능한 단위가 됩니다.
- 시크릿 관리 시스템
- 토큰과 암호, 인증서, 암호화 키를 비롯하여 기타 민감한 데이터에 대한 액세스 권한을 안전하게 저장하고 제어하는 서버 또는 서비스입니다.
- 스케줄
- 작업이 자동으로 실행되어야 하는 날짜 및 시간입니다.
- 분할된 작업
- 분산 작업을 참조하십시오.
- 소스 인증 정보
- 대상 인증 정보 필드에 연결된 외부 인증 정보입니다.
- Sudo
-
Ansible은 루트 로그인이 필요하지 않으며, 데몬이 없기 때문에 루트 수준 데몬이 필요하지 않습니다(민감한 환경에서 보안 문제가 될 수 있음). Ansible은 로그인하고
sudo명령으로 래핑된 많은 작업을 수행할 수 있으며 암호가 없는 sudo 및 암호 기반 sudo 둘 다에서 작업할 수 있습니다. 일반적으로sudo에서 작동하지 않는 일부 작업(예:scp파일 전송)은sudo모드에서 실행되는 동안 Ansible의 copy, template, fetch 모듈을 사용하여 수행할 수 있습니다. - 슈퍼유저
- 조직과 연결되어 있는지 여부에 관계없이 시스템에서 오브젝트를 편집할 수 있는 권한이 있는 서버의 관리자입니다. 슈퍼유저는 조직 및 기타 슈퍼유저를 생성할 수 있습니다.
- 설문 조사
- 작업 시작 시 작업 템플릿에서 묻는 질문으로, 작업 템플릿에 구성할 수 있습니다.
- 대상 인증 정보
- 외부 자격 증명에 연결된 입력 필드가 포함된, 비외부 인증 정보입니다.
- 팀
- 연결된 사용자, 프로젝트, 인증 정보, 권한이 있는 조직의 하위 요소입니다. 팀을 활용하면 역할 기반 액세스 제어 체계를 구현하고 조직 전체에 책임을 위임할 수 있습니다.
- 사용자
- 연결된 권한 및 인증 정보가 있는 Operator입니다.
- Webhook
- Webhook를 사용하면 애플리케이션 간 통신 및 정보 공유를 사용할 수 있습니다. SCM으로 푸시한 커밋에 응답하고 작업 템플릿 또는 워크플로우 템플릿을 시작하는 데 사용됩니다.
- 워크플로우 작업 템플릿
- 단일 단위로 실행하기 위해 서로 연결된 작업 템플릿, 프로젝트 동기화, 인벤토리 동기화의 조합으로 구성된 세트입니다.
- YAML
- 구성 파일을 작성하는 데 자주 사용되는 사람이 읽을 수 있는 언어입니다. Ansible 및 자동화 컨트롤러는 YAML을 사용하여 플레이북 구성 언어 및 변수 파일을 정의합니다. YAML에는 최소 구문이 있으며 매우 깔끔하고 사용자가 쉽게 파악할 수 있습니다. 구성 파일 및 사용자에게 유용한 데이터 형식인 동시에 머신에서 읽을 수 있습니다. YAML은 동적 언어 커뮤니티에서 인기가 있으며 형식에는 여러 언어로 직렬화할 수 있는 라이브러리가 있습니다. 예를 들면 Python, Perl 또는 Ruby가 있습니다.