Ansible Tower를 Cloud Assembly와 통합하여 배포된 리소스의 구성 관리를 지원할 수 있습니다. 통합을 구성한 후에는 클라우드 템플릿 편집기에서 Ansible Tower 가상 구성 요소를 새 배포 또는 기존 배포에 추가할 수 있습니다.
사전 요구 사항
- 관리자가 아닌 사용자에게 Ansible Tower에 액세스할 수 있는 적절한 권한을 부여합니다. 대부분의 구성에서 작동하는 옵션에는 두 가지가 있습니다. 구성에 가장 적합한 옵션을 선택합니다.
- 조직 수준에서 인벤토리 관리자 및 작업 템플릿 관리자 역할을 사용자에게 부여합니다.
- 특정 인벤토리에 대한 [관리자] 권한과 프로비저닝에 사용되는 모든 작업 템플릿에 대한 [실행] 역할을 사용자에게 부여합니다.
-
Ansible Tower에서 배포에 사용할 적절한 자격 증명 및 템플릿을 구성해야 합니다. 템플릿은 작업 템플릿 또는 워크플로 템플릿일 수 있습니다. 작업 템플릿은 배포에 사용할 인벤토리와 플레이 북을 정의합니다. 작업 템플릿과 플레이 북 간에는 1:1 매핑이 있습니다. 플레이 북은 YAML과 유사한 구문을 사용하여 템플릿과 연결된 작업을 정의합니다. 대부분의 일반적인 배포에서는 시스템 자격 증명을 사용하여 인증합니다.
워크플로 템플릿을 사용하면 사용자가 하나의 단위로 실행할 수 있도록 함께 연결된 작업 템플릿, 프로젝트 동기화 및 인벤토리 동기화의 조합으로 구성된 시퀀스를 생성할 수 있습니다. Ansible Tower Workflow Visualizer는 사용자가 워크플로 템플릿을 설계하는 데 유용합니다. 대부분의 일반적인 배포의 경우, 시스템 자격 증명을 인증에 사용할 수 있습니다.
- Ansible Tower에 로그인하고 [템플릿] 섹션으로 이동합니다.
- [새 작업 템플릿 추가]를 선택합니다.
- 이미 생성한 자격 증명을 선택합니다. Ansible Tower에서 관리할 시스템의 자격 증명입니다. 각 작업 템플릿에 대해 하나의 자격 증명 개체가 있을 수 있습니다.
- [제한] 선택으로 [시작 메시지]를 선택합니다. 이렇게 하면 작업 템플릿이 Cloud Assembly에서 프로비저닝 또는 프로비저닝 해제되는 노드에 대해 실행됩니다. 이 옵션을 선택하지 않으면 작업 템플릿이 포함된 Blueprint가 배포될 때 "제한이 설정되지 않음" 오류가 표시됩니다.
- [새 워크플로 템플릿 추가]를 선택합니다.
- 이미 생성한 자격 증명을 선택한 다음 인벤토리를 정의합니다. Workflow Visualizer를 사용하여 워크플로 템플릿을 설계합니다.
워크플로 또는 작업 템플릿의 제한 상자에 대해 일반적으로 [시작 메시지]를 선택할 수 있습니다. 이렇게 선택하면 작업 또는 워크플로 템플릿이 Cloud Assembly에서 프로비저닝 또는 프로비저닝 해제되는 노드에 대해 실행됩니다.
- [Ansible Tower 작업] 탭에서 Cloud Assembly로부터 호출된 작업 템플릿 또는 워크플로 템플릿의 실행을 볼 수 있습니다.
프로시저
결과
Ansible Tower를 클라우드 템플릿에서 사용할 수 있습니다.
다음에 수행할 작업
Ansible Tower 구성 요소를 원하는 클라우드 템플릿에 추가합니다. 통합 계정에 지정된 사용자에 대한 실행 권한이 있는 적용 가능한 작업 템플릿을 지정해야 합니다.
- 클라우드 템플릿 캔버스 페이지에서, Blueprint 옵션 메뉴의 [구성 관리] 머리글 아래에서 [Ansible]을 선택하고 Ansible Tower 구성 요소를 캔버스로 끕니다.
- 오른쪽 패널을 사용하여 적절한 Ansible Tower 속성을 구성합니다(예: 작업 템플릿).
클라우드 템플릿에 Ansible Tower 타일을 추가하면 vRealize Automation이 Ansible Tower에 연결된 가상 시스템용 호스트 항목을 생성합니다. 기본적으로 vRealize Automation은 가상 시스템 리소스 이름을 사용하여 호스트 항목을 생성하지만 Blueprint YAML의 hostName
속성을 사용하여 이름을 지정할 수 있습니다. 시스템과 통신하기 위해 vRealize Automation은 호스트 항목에 대해 호스트 변수 ansible_host: IP Address
를 생성합니다. hostVariables
아래에 키워드 ansible_host
를 지정하고 FQDN을 해당 값으로 제공하여 FQDN을 사용하는 통신을 구성하는 기본 동작을 재정의할 수 있습니다. 다음 YAML 코드 조각은 호스트 이름 및 FQDN 통신을 구성할 수 있는 방법의 예를 보여 줍니다.
Cloud_Ansible_Tower_1: type: Cloud Ansible Tower properties: host: name of host account: name of account hostName: resource name hostVariables: ansible_host:Host FQDN
이 예에서는 FQDN을 제공하여 기본 ansible_host
값을 재정의합니다. 이는 FQDN을 사용하여 Ansible Tower를 호스트 시스템에 연결하려는 사용자에게 유용할 수 있습니다.
YAML에 있는 hostVariables
의 기본값은 ansible_host:IP_address
이며 IP 주소가 서버와 통신하는 데 사용됩니다.
Ansible Tower에 대해 YAML count 속성이 1보다 크면 호스트 이름이 각 가상 시스템 속성에 매핑될 수 있습니다. 다음 예는 Ubuntu-VM이라는 가상 시스템 리소스의 주소 속성을 호스트 이름에 매핑하려는 경우 해당 리소스에 대한 매핑을 보여줍니다.
hostname: '${resource.Ubuntu-VM.address[count.index]}'
Ansible Tower 구성 요소를 클라우드 템플릿에 추가하고 클라우드 템플릿 YAML에서 호출할 작업 템플릿을 지정할 수 있습니다. 워크플로 템플릿 또는 작업 템플릿과 워크플로 템플릿의 조합을 지정할 수도 있습니다. 템플릿 유형을 지정하지 않으면 기본적으로 vRealize Automation은 작업 템플릿을 호출하는 것으로 가정합니다.
다음 YAML 코드 조각은 Ansible Tower 클라우드 템플릿에서 작업 템플릿과 워크플로 템플릿의 조합을 호출할 수 있는 방법의 예를 보여줍니다.
Cloud_Ansible_1: type: Cloud.Ansible.Tower properties: host: ‘${resource.CentOS_Machine.*}’ account: maxConnectionRetries: 2 maxJobRetries: 2 templates: provision: - name: My workflow type: workflow - name: My job template
Ansible 관련 오류를 처리하기 위해 maxConnectionsRetries
및 maxJobRetries
를 추가했습니다. 클라우드 템플릿은 사용자 지정 값을 수락하며, 제공된 값이 없는 경우 기본값을 사용합니다. maxConnectionRetries
의 경우 기본값이 10이고 maxJobRetries
의 경우 기본값은 3입니다.
Ansible Tower 통합을 위한 Cloud Assembly 클라우드 템플릿에는 Ansible 템플릿이 실행되는 위치를 정의하는 useDefaultLimit
속성이 true 또는 false 값과 함께 포함됩니다. Ansible 템플릿은 작업 템플릿 또는 워크플로 템플릿일 수 있습니다. 이 값이 true로 설정되면 Ansible 템플릿 페이지의 제한 상자에 지정된 시스템에 대해 지정된 템플릿이 실행됩니다. 이 값이 false로 설정되면 프로비저닝된 시스템에 대해 템플릿이 실행되지만 Ansible Tower 템플릿 페이지에서 사용자가 [시작 메시지] 확인란을 선택해야 합니다. 기본적으로 이 속성의 값은 false입니다. 다음 YAML 예는 useDefaultLimit
속성이 클라우드 템플릿에 어떻게 나타나는지 보여줍니다.
templates: provision: - name: ping aws_credentials type: job useDefaultLimit: false extraVars: '{"rubiconSurveyJob" : "checkSurvey"}'
또한 앞의 예제에서 볼 수 있듯이 extraVars
속성을 사용하여 extra 변수나 survey 변수를 지정할 수 있습니다. 이 기능은 입력이 필요한 템플릿을 실행하는 데 유용할 수 있습니다. 사용자가 survey 변수를 유지한 경우 오류를 방지하려면 클라우드 템플릿의 extraVars
섹션에 변수를 전달해야 합니다.