Ansible Automation Platform 2.1 배포

Red Hat Ansible Automation Platform 2.1

초록

이 문서에서는 Ansible Automation Platform 2.1을 배포하는 모범 사례를 설명합니다.

의견 및 피드백

오픈 소스의 영점으로 Red Hat은 모든 사람이 참조 아키텍처에 대한 피드백과 의견을 제공하도록 초대합니다. 내부적으로 문서를 검토했지만 경우에 따라 문제가 발생하거나 오타 오류가 발생할 수 있습니다. 피드백은 당사가 생성하는 문서의 품질을 향상시킬 뿐만 아니라 독자가 잠재적인 개선 및 주제 확장에 대한 의견을 제공할 수 있도록 합니다. 문서에 대한 피드백은 ansible-feedback@redhat.com 로 이메일을 통해 제공될 수 있습니다. 이메일의 제목을 참조해 주십시오.

1장. 개요

Ansible Automation Platform 2.1 참조 아키텍처는 가용성이 높은 Ansible Automation Platform 환경 배포 설정을 제공합니다. Ansible Automation Platform 2.1을 설치하고 구성하기 위한 최신 모범 사례에 따라 단계별 배포 절차를 제공합니다. Ansible Automation Platform을 배포하려는 시스템 및 플랫폼 관리자에게 가장 적합합니다.

이 참조 환경에서 사용되는 환경의 pictorial 표현이 다음과 같습니다. 그림 1.1. “참조 아키텍처 개요”

그림 1.1. 참조 아키텍처 개요

개요

위의 이미지는 고가용성을 위해 Ansible 사이트 1Ansible 사이트 2 로 구성됩니다. 사이트 1은 활성 환경이며 사이트 두 개는 수동 환경입니다. 각 위치는 다음으로 구성됩니다.

  • 하나의 PostgreSQL 데이터베이스가 있는 노드 자동화 컨트롤러 클러스터 세 개
  • 하나의 PostgreSQL 데이터베이스가 있는 노드 자동화 허브 클러스터 세 개
  • 자동화 컨트롤러 클러스터당 두 개의 실행 노드
  • Red Hat Insights 및 Service Catalog와 같은 console.redhat.com 서비스에 액세스

PostgreSQL 데이터베이스의 HA를 달성하기 위해 Git Webhook와 함께 코드로 구성을 사용하거나 Git 리포지토리에서 이벤트를 병합할 때 사용되며, 그러면 Ansible 사이트 1 및 Ansible 사이트 2 에서 지정된 이벤트를 구성합니다.

마지막으로 로깅 일관성을 보장하기 위해 두 Ansible Automation Platform 환경에서 모두 사용할 고가용성 중앙 집중식 로깅 환경이 설치됩니다.

2장. 사전 요구 사항

고가용성 Ansible Automation Platform 2.1 참조 환경의 설치는 사이트에서 다음을 사용합니다.

  • 컨트롤 플레인 노드 세 개
  • 컨트롤 플레인 데이터베이스 노드 1개
  • 두 개의 실행 노드
  • 자동화 허브 노드 세 개
  • 자동화 허브 데이터베이스 노드 1개
  • 자동화 허브 설치를 위한 공유 파일 시스템(/var/lib/pulp)
참고

이러한 노드는 물리적 서버일 필요가 없습니다.

2.1. 노드 요구 사항

표 2.1. 실행 노드

실행 노드

필수 항목

참고

RAM

16Gb

 

CPU

4

  • 자동화를 실행합니다. 더 많은 포크를 실행하는 데 필요한 용량을 늘리기 위해 메모리 및 CPU를 늘리십시오.

표 2.2. 자동화 컨트롤러 노드

컨트롤 노드

필수 항목

참고

RAM

16Gb

 

CPU

4

  • 이벤트를 처리하고 프로젝트 업데이트 및 정리 작업을 포함하여 클러스터 작업을 실행합니다. CPU 및 메모리를 늘리면 작업 이벤트 처리에 도움이 될 수 있습니다.

disk: 서비스 노드

40GB 전용 하드 디스크 공간

  • controller: 파일 및 작업 디렉토리 저장을 위해 최소 20GB를 /var/ 에 전용
  • 스토리지 볼륨은 최소 1500 IOPS 기준으로 평가되어야 합니다.
  • 프로젝트는 제어 및 하이브리드에 저장되며 실행 노드에서도 작업 기간 동안 저장됩니다. 클러스터에 많은 대규모 프로젝트가 있는 경우 디스크 공간 오류를 방지하려면 /var/lib/awx/projects에 2GB를 사용하는 것이 좋습니다.

디스크: 데이터베이스 노드

20GB 전용 하드 디스크 공간

  • 150GB 이상 권장
  • 스토리지 볼륨은 높은 기준 IOPS(1500 이상)로 평가되어야 합니다.

브라우저

현재 지원되는 Mozilla FireFox 또는 Google Chrome 버전

 

데이터베이스

PostgreSQL 버전 12

 

표 2.3. Automation Hub 노드

Automation Hub 노드

필수 항목

참고

RAM

최소 8GB

  • 8GB RAM(Oplud 평가판 설치 시 최소 및 권장)
  • 8GB RAM(외부 독립 실행형 PostgreSQL 데이터베이스의 경우 최소)
  • 구성의 포크를 기반으로 하는 용량은 추가 리소스를 참조하십시오.

CPU

최소 2개

  • 구성의 포크를 기반으로 하는 용량은 추가 리소스를 참조하십시오.

disk: 서비스 노드

40GB 전용 하드 디스크 공간

  • 스토리지 볼륨은 최소 1500 IOPS 기준으로 평가되어야 합니다.

디스크: 데이터베이스 노드

20GB 전용 하드 디스크 공간

  • 150GB 이상 권장
  • 스토리지 볼륨은 높은 기준 IOPS(1500 이상)로 평가되어야 합니다.

브라우저

현재 지원되는 Mozilla FireFox 또는 Google Chrome 버전

 

데이터베이스

PostgreSQL 버전 12

 

표 2.4. 데이터베이스 노드

데이터베이스 노드

필수 항목

참고

RAM

16GB

 

CPU

4

 

디스크

20GB 전용 하드 디스크 공간

  • 최소 decidcated 디스크 공간 20Gb
  • 150GB 이상 권장
  • 스토리지 볼륨은 높은 기준 IOPS로 평가되어야 합니다(1500 이상)
참고

모든 자동화 컨트롤러 데이터는 PostgreSQL 데이터베이스에 저장됩니다. 데이터베이스 스토리지는 관리되는 호스트 수, 작업 실행 수, 팩트 캐시에 저장된 팩트 수, 개별 작업의 작업 수에 따라 증가합니다. 예를 들어 플레이북은 250개 호스트(하루 24회)에 매시간 실행됩니다. 호스트 20개 작업은 매주 800,000개 이상의 이벤트를 데이터베이스에 저장합니다.

데이터베이스에 공간이 충분하지 않으면 이전 작업 실행 및 팩트가 정기적으로 정리되어야 합니다. 자세한 내용은 자동화 컨트롤러 관리 가이드의 관리 작업 참조

2.2. 네트워크 요구 사항

Ansible Automation Platform 2.1은 Ansible Automation Platform 클러스터 내의 모든 노드에 대해 하나 이상의 네트워크가 필요합니다.

Ansible Automation Platform 대시보드에 액세스하려면 컨트롤 플레인 노드가 있는 네트워크에 액세스할 수 있는 브라우저가 필요합니다. Ansible Automation Platform 대시보드에 외부에서 액세스하려면 컨트롤 플레인 노드에 공용 IP 주소를 추가해야 합니다.

네트워크 관리자는 모든 노드의 정적 DHCP 주소와 적절한 DNS 레코드를 설정하는 것이 좋습니다. 이렇게 하면 DHCP 서버가 없으면 각 노드의 IP 주소가 일정하게 유지됩니다. 고정 IP 주소를 사용하려면 무한 리스로 IP 주소를 예약합니다.

이 참조 아키텍처의 목적을 위해 DHCP 서버를 설정하고, DNS 레코드를 설정하고, 로드 밸런서를 설정하는 것은 범위를 벗어납니다.

네트워크 관리자는 다음을 포함하여 다음 IP 주소 수를 예약해야 합니다.

  1. 각 컨트롤 플레인 노드에 대해 하나의 IP 주소입니다.
  2. 각 실행 노드에 대해 하나의 IP 주소입니다.
  3. 각 자동화 허브 노드에 대한 하나의 IP 주소입니다.
  4. 컨트롤 플레인 데이터베이스의 IP 주소 1개
  5. 자동화 허브 데이터베이스를 위한 하나의 IP 주소입니다.
  6. Ansible Automation Platform 사이트 1에 대한 로드 밸런서 자동화 컨트롤러 클러스터 주소의 IP 주소 1개입니다.
  7. Ansible Automation Platform 사이트 2에 대한 로드 밸런서 자동화 컨트롤러 클러스터 주소의 IP 주소 1개입니다.
  8. Ansible Automation Platform 사이트 1에 대한 로드 밸런서 프라이빗 자동화 허브 클러스터 주소의 IP 주소 1개입니다.
  9. Ansible Automation Platform 사이트 2에 대한 로드 밸런서 프라이빗 자동화 허브 클러스터 주소의 IP 주소 1개입니다.

이 참조 환경은 사이트당 12개의 IP 주소를 예약합니다.

다음 표에서는 참조 환경 중 Ansible 사이트 1 의 예를 제공합니다.

사용법

호스트 이름

IP

컨트롤 플레인 1

controlplane-1.site1.example.com

192.168.0.10

컨트롤 플레인 2

controlplane-2.site1.example.com

192.168.0.11

컨트롤 플레인 3

controlplane-3.site1.example.com

192.168.0.12

컨트롤 플레인 데이터베이스

controlplane-db.site1.example.com

192.168.0.13

컨트롤 플레인 클러스터 주소

controlplane-cluster.site1.example.com

192.168.0.14

실행 노드 1

executionnode-1.site1.example.com

192.168.0.15

실행 노드 2

executionnode-2.site1.example.com

192.168.0.16

Automation Hub 노드 1

automationhub-1.site1.example.com

192.168.0.17

Automation Hub 노드 2

automationhub-2.site1.example.com

192.168.0.18

Automation Hub 노드 3

automationhub-3.site1.example.com

192.168.0.19

Automation Hub 데이터베이스

automationhub-db.site1.example.com

192.168.0.20

Automation Hub 클러스터

automationhub-cluster.site1.example.com

192.168.0.21

2.3. 노드의 유효성 검사 체크리스트

다음은 모든 요구 사항에 대한 요약입니다.

  • 컨트롤러 노드 및 실행 노드의 경우 16GB의 RAM
  • 프라이빗 자동화 허브 노드를 위한 8GB RAM
  • 컨트롤러 노드 및 실행 노드용 CPU 4개
  • 프라이빗 자동화 허브 노드를 위한 2개의 CPU
  • 데이터베이스 노드의 경우 20GB 이상 디스크 공간
  • 데이터베이스 노드가 아닌 노드의 경우 40GB 이상 디스크 공간
  • DHCP 예약은 무한 리스를 사용하여 고정 IP 주소가 있는 클러스터를 배포합니다.
  • 모든 노드의 DNS 레코드
  • Cryostat 모든 노드에 Red Hat Enterprise Linux 8.4 이상 64비트(x86)가 설치됨
  • Cryostat 모든 노드에 대해 설정됨
  • 모든 노드에 Ansible-core 버전 2.11 이상이 설치됨

3장. Ansible Automation Platform 컨트롤러 구성 세부 정보

이 참조 아키텍처는 Red Hat Enterprise Linux 8.4 x86_64에서 자동화 메시를 사용하여 Ansible Automation Platform 2.1의 배포에 중점을 둡니다. 구성은 포괄적인 Ansible Automation Platform 솔루션을 제공하기 위한 것입니다. 이 참조 아키텍처에서 다루는 주요 솔루션 구성 요소는 다음과 같습니다.

  • Red Hat Enterprise Linux 8.4
  • Ansible Automation Platform 2.1
  • 자동화 메시
  • 프라이빗 자동화 허브

3.1. 네트워크 설정

3.1.1. chrony 설정

클러스터의 각 Ansible Automation Platform 노드는 NTP 서버에 액세스할 수 있어야 합니다. chronyd 는 시스템 클록의 동기화를 위한 데몬입니다. 시계를 NTP 서버와 동기화할 수 있습니다. 이렇게 하면 클러스터 노드에서 검증이 필요한 SSL 인증서를 사용할 때 노드 간 날짜와 시간이 동기화되지 않은 경우 실패하지 않습니다.

모든 노드에서,

  1. 설치되지 않은 경우 다음과 같이 chrony 를 설치합니다.

    # dnf install chrony --assumeyes
  2. vi 와 같은 텍스트 편집기로 /etc/chrony.conf 파일을 편집합니다.

    # vi /etc/chrony.conf
  3. 다음 공용 서버 풀 섹션을 찾고 적절한 서버를 포함하도록 를 수정합니다. 하나의 서버만 필요하지만 3개가 권장됩니다. iburst 옵션은 서버와 올바르게 동기화하는 데 걸리는 시간을 가속화하기 위해 추가됩니다.

    # Use public servers from the pool.ntp.org project.
    # Please consider joining the pool (http://www.pool.ntp.org/join.html).
    server <ntp-server-address> iburst
  4. /etc/chrony.conf 파일 내의 모든 변경 사항을 저장합니다.
  5. 호스트가 부팅될 때 chronyd 데몬이 시작되도록 시작하고 활성화합니다.

    # systemctl --now enable chronyd.service
  6. chronyd 데몬 상태를 확인합니다.

    # systemctl status chronyd.service

3.2. OS 설정

3.2.1. Red Hat Subscription Manager

subscription-manager 명령은 시스템을 RHN(Red Hat Network)에 등록하고 시스템의 서브스크립션 인타이틀먼트를 관리합니다. --help 옵션은 사용 가능한 옵션에 대해 명령을 쿼리하기 위해 명령줄에 지정합니다. command 지시문과 함께 --help 옵션이 발행되면 특정 명령 지시문에 사용할 수 있는 옵션이 나열됩니다.

Red Hat 서브스크립션 관리를 사용하여 시스템에 패키지를 제공하려면 먼저 시스템에 서비스에 등록해야 합니다. 시스템을 등록하려면 subscription-manager 명령을 사용하고 register 명령 지시문을 전달합니다. --username--password 옵션이 지정된 경우 명령에서 RHN 네트워크 인증 자격 증명을 입력하라는 메시지를 표시하지 않습니다.

subscription-manager 를 사용하여 시스템을 등록하는 예는 다음과 같습니다.

# subscription-manager register --username [User] --password '[Password]'
The system has been registered with id: abcd1234-ab12-ab12-ab12-481ba8187f60

시스템을 등록한 후에는 인타이틀먼트 풀에 연결해야 합니다. 이 참조 환경의 목적을 위해 Red Hat Ansible Automation Platform은 선택한 풀입니다. Red Hat Ansible Automation Platform 인타이틀먼트 풀을 식별하고 구독하면 다음 명령 지시문이 필요합니다.

# subscription-manager list --available | grep -A8 "Red Hat Ansible Automation Platform"
---
Subscription Name:   Red Hat Ansible Automation Platform, Premium (5000 Managed Nodes)
Provides:            Red Hat Ansible Engine
                     Red Hat Single Sign-On
                     Red Hat Ansible Automation Platform
SKU:                 MCT3695
Contract:            <contract>
Pool ID:             <pool_id>
Provides Management: No
Available:           9990
Suggested:           1
Service Type:        L1-L3
Roles:
# subscription-manager attach --pool <pool_id>
Successfully attached a subscription for: Red Hat Ansible Automation Platform, Premium (5000 Managed Nodes)
# subscription-manager repos --enable=ansible-automation-platform-2.1-for-rhel-8-x86_64-rpms

3.2.2. 사용자 계정

Ansible Automation Platform 2.1을 설치하기 전에 배포 프로세스에 대한 sudo 권한이 있는 루트가 아닌 사용자를 생성하는 것이 좋습니다. 이 사용자는 다음을 위해 사용됩니다.

  • SSH 연결
  • 설치 중 암호 없는 인증

이 참조 환경의 목적을 위해 ansible 사용자가 선택되었지만 모든 사용자 이름으로 충분합니다.

모든 노드에서 ansible 이라는 사용자를 생성하고 ssh 키를 생성합니다.

  1. 루트가 아닌 사용자 생성

    # useradd ansible
  2. ansible 사용자의 암호를 설정합니다.

    # passwd ansible
  3. ssh 키를 ansible 사용자로 생성합니다.

    $ ssh-keygen -t rsa
  4. sudoansible 사용자로 사용할 때 암호 요구 사항 비활성화

    # echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/ansible

3.2.3. SSH 키를 모든 노드에 복사

ansible 사용자가 생성되면 ansible 사용자로 ssh 키를 모든 노드에 복사합니다. 이렇게 하면 Ansible Automation Platform 설치가 실행되면 암호가 없는 모든 노드에 ssh 를 수행할 수 있습니다.

이 작업은 다음과 같이 ssh-copy-id 명령을 사용하여 수행할 수 있습니다.

$ ssh-copy-id ansible@hostname.example.com
참고

클라우드 공급자 내에서 실행하는 경우 대신 모든 노드에서 ansible 사용자의 공개 키가 포함된 ~/.ssh/ authorized_keys 파일을 생성하고 권한을 소유자(ansible)로 설정하여 읽기 및 쓰기 액세스 권한(권한 644)으로 설정해야 할 수 있습니다.

3.2.4. 방화벽 설정 구성

방화벽 액세스 및 제한 사항은 Ansible Automation Platform 2.1 환경 보안에 중요한 역할을 합니다. Red Hat Enterprise Linux 8.4 사용은 기본적으로 동적 방화벽 데몬인 firewalld 를 사용합니다. firewalld 는 네트워크 영역과 네트워크 및 관련 연결 및 인터페이스에 신뢰 수준을 할당하는 방식으로 작동합니다.

성공적인 Ansible Automation Platform 2.1 설치를 위해 적절한 서비스 및 포트에 대한 액세스를 허용하도록 방화벽 설정을 구성하는 것이 좋습니다.

모든 노드에서 firewalld 가 설치, 시작 및 활성화되어 있는지 확인합니다.

  1. firewalld 패키지 설치

    # dnf install firewalld --assumeyes
  2. firewalld 서비스 시작

    # systemctl start firewalld
  3. firewalld 서비스 활성화

    # systemctl enable firewalld

4장. Ansible Automation Platform 컨트롤러 데이터베이스 구성 세부 정보

4.1. 컨트롤러 데이터베이스 방화벽 설정 구성

Ansible Automation Platform을 성공적으로 설치하기 위해 데이터베이스 노드에서 데이터베이스 포트를 활성화하는 사전 요구 사항 중 하나가 있습니다. 사용되는 포트는 인벤토리 파일 내에서 pg_port 에 의해 구성됩니다.

인벤토리 파일 조각

pg_port='5432'

데이터베이스 노드 내에서 ansible 사용자로 설치에 사용할 firewalld 포트를 설정합니다.

  1. firewalld 가 실행 중인지 확인합니다.

    $ sudo systemctl status firewalld
  2. 컨트롤러 데이터베이스 노드에 firewalld 포트를 추가합니다(예: 포트 5432)

    $ sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
  3. firewalld다시 로드

    $ sudo firewall-cmd --reload
  4. 포트가 열려 있는지 확인합니다.

    $ sudo firewall-cmd --list-ports

5장. Ansible Automation Platform 실행 및 Hop 노드 구성 세부 정보

5.1. 실행 및 홉 노드에 대한 방화벽 설정 구성

Ansible Automation Platform 설치에 성공하려면 사전 요구 사항 중 하나는 메시 노드(실행 및 홉 노드)에서 자동화 메시 포트를 활성화하는 것입니다. 모든 노드의 메시 네트워크에 사용되는 기본 포트는 27199/tcp 로 설정되지만 인벤토리 파일 내의 각 노드의 변수로 수신기_listener_port 를 지정하여 다른 포트를 사용하도록 구성할 수 있습니다.

인벤토리 파일 조각

receptor_listener_port=27199

참고

이 참조 환경에서 모든 Ansible Automation Platform 2 컨트롤러 노드는 노드 유형 제어 로 지정됩니다. 컨트롤 노드를 하이브리드 노드(기본 노드 유형)로 지정하는 경우 메시 포트(기본값: 27199/tcp)를 활성화해야 합니다.

ansible 사용자로 홉 및 실행 노드 내에서 다음을 수행합니다.

  1. firewalld 가 실행 중인지 확인합니다.

    $ sudo systemctl status firewalld
  2. 홉 및 실행 노드에 firewalld 포트 추가(예: 포트 27199)

    $ sudo firewall-cmd --permanent --zone=public --add-port=27199/tcp
  3. firewalld다시 로드

    $ sudo firewall-cmd --reload
  4. 포트가 열려 있는지 확인합니다.

    $ sudo firewall-cmd --list-ports

6장. Ansible Automation Platform 2.1 설치

Ansible Automation Platform 2.1을 설치하면 자동화 컨트롤러 및 자동화 메시를 활용하여 자동화 워크로드를 처리하는 단순하고 안전하며 유연한 방법을 제공합니다.

자동화 컨트롤러는 UI, Restful API, RBAC 워크플로 및 CI/CD 통합을 통해 자동화할 컨트롤 플레인을 제공합니다.

자동화 메시는 기존 네트워크를 사용하여 서로 피어 투 피어 연결을 설정하는 노드를 통해 대규모 작업자 컬렉션에서 작업을 쉽게 배포할 수 있는 기능을 제공하는 오버레이 네트워크입니다.

자동화 메시를 배치하면 다음을 수행할 수 있습니다.

  • 다운타임 없이 클러스터 용량을 동적으로 확장
  • 실행 및 컨트롤 플레인 분리
  • 중단이 자동으로 존재할 수 있는 경우 다른 경로로 실행을 다시 라우팅

다음 단계에서는 자동화 메시를 사용하여 클러스터형 Ansible Automation Platform 2.1을 배포하는 단계를 단계별로 제공합니다.

참고

다음 설치는 이 참조 환경 Ansible Automation Platform 클러스터의 Ansible 사이트 1 에서 수행됩니다. 완료되면 Ansible 사이트 2 에 대해 동일한 단계를 따르십시오.

controlplane-1.site1.example.com 에서 ansible 사용자로 다음을 수행합니다.

  1. Ansible Automation Platform 2.1 설정 tar ansible-automation-platform-setup-2.1.0-1.tar.gz
  2. ansible-automation-platform-setup-2.1.0-1.tar.gz

    $ tar zxvf ansible-automation-platform-setup-2.1.0-1.tar.gz
  3. 디렉터리를 ansible-automation-platform-setup-2.1.0-1.tar.gz로 변경

    cd ansible-automation-platform-setup-2.1.0-1/
  4. 기존 인벤토리 파일 백업

    $ cp inventory inventory.bkup
  5. ansible-core 패키지 설치

    $ sudo dnf install ansible-core --assumeyes
  6. 환경에 대한 적절한 정보와 함께 포함하도록 인벤토리를 수정합니다. 다음은 이 참조 환경의 예입니다.

    [automationcontroller]
    controlplane-1.site1.example.com ansible_connection=local
    controlplane-2.site1.example.com
    controlplane-3.site1.example.com
    
    [automationcontroller:vars]
    node_type=control 1
    peers=execution_nodes 2
    
    [execution_nodes]
    executionnode-1.site1.example.com peers=executionnode-2.site1.example.com 3
    executionnode-2.site1.example.com
    
    [database]
    controldatabase.site1.example.com 4
    
    [all:vars]
    #Handled by Ansible Vault
    admin_password='' 5
    
    pg_host='controldatabase.site1.example.com' 6
    pg_port='5432' 7
    
    pg_database='awx'
    pg_username='awx'
    
    #Handled by Ansible Vault
    pg_password='' 8
    
    pg_sslmode='prefer'
    
    registry_url=’registry.redhat.io’ 9
    registry_username='myusername' 10
    
    #Handled by Ansible Vault
    registry_password='' 11
    1
    컨트롤 노드는 실행 작업이 아닌 프로젝트 및 인벤토리 업데이트 및 시스템 작업을 실행합니다. 이러한 노드에서 실행 기능이 비활성화되어 있습니다.
    2
    피어 관계는 노드 간 연결을 정의합니다. 컨트롤 플레인 노드와 실행 노드 간의 피어 관계를 설정합니다.
    3
    실행 노드 간 피어 관계를 설정합니다.
    4
    컨트롤러 설치를 위해 PostgreSQL 데이터베이스를 설치할 노드를 설정합니다.
    5
    설치 완료 시 UI에 액세스하도록 admin 사용자의 암호를 설정합니다.
    6
    PostgreSQL 호스트(데이터베이스 노드)를 설정합니다.
    7
    데이터베이스 노드에 사용할 PostgreSQL 포트를 설정합니다.
    8
    PostgreSQL 데이터베이스의 암호를 설정합니다.
    9
    실행 환경 이미지가 다운로드되어 설치에 포함됩니다. 이미지를 다운로드하는 데 필요한 적절한 인증 정보입니다.
    10
    registry_url에 액세스할 수 있는 사용자 인증 정보입니다.
    11
    registry_url에 액세스하기 위한 암호 자격 증명입니다.
  7. 암호화된 자격 증명을 저장할 credentials.yml 이라는 레이블이 지정된 파일을 만듭니다.

    $ cat credentials.yml
    admin_password: my_long_admin_pw
    pg_password: my_long_pg_pw
    registry_password: my_long_registry_pw
  8. ansible-vault 를 사용하여 credentials.yml 파일을 암호화합니다.

    $ ansible-vault encrypt credentials.yml
    New Vault password:
    Confirm New Vault password:
    Encryption successful
    주의

    암호화된 vault 암호를 안전한 위치에 저장합니다.

  9. credentials.yml 파일이 암호화되었는지 확인합니다.

    $ cat credentials.yml
    $ANSIBLE_VAULT;1.1;AES256
    36383639653562386534316333333961383336306465336465613831353435313530376464616539
    3765393063303065323466663330646232363065316666310a373062303133376339633831303033
    34313534383962613632303761636632623932653062343839613639653635643365616233313365
    3636616639313864300a353239373433313339613465326339313035633565353464356538653631
    63346434383534643237663862353361366632613634333231316334363939396461326561643336
    3430633534303935646264633034383966336232303365383763
  10. Ansible Automation Platform 2.1 설치에 setup.sh 를 실행하고 credentials.yml--ask-vault-pass 옵션을 전달합니다.

    $ ANSIBLE_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ANSIBLE_HOST_KEY_CHECKING=False ./setup.sh -e @credentials.yml -- --ask-vault-pass
    참고

    다음 ANSIBLE*_ 변수가 성공적으로 설치되도록 설정됩니다.

    참고

    인벤토리 파일 내에서 설정할 수 있는 다양한 값에 대한 자세한 내용은 다음을 참조하십시오. 인벤토리 파일 설정

  11. Ansible Automation Platform 대시보드에 로그인합니다(예: controlplane-cluster.site1.example.com).
  12. 서브스크립션 매니페스트 또는 사용자 이름/암호를 통해 Ansible Automation Platform 서브스크립션을 활성화합니다.

    매니페스트 가져오기
    참고

    서브스크립션 매니페스트를 생성하는 단계를 찾을 수 있습니다. 부록 D. 서브스크립션 매니페스트 생성

7장. Private Automation Hub

Automation Hub는 인증된 컬렉션의 중앙 위치입니다. 신뢰할 수 있고 테스트 및 지원되는 콘텐츠의 주요 소스로 작동합니다. 프라이빗 자동화 허브는 자동화 개발자가 협업하고 자체 자동화 콘텐츠를 게시하고 조직 내에서 Ansible 코드 제공을 간소화할 수 있는 기능을 제공합니다.

Ansible Automation Platform 2.1의 프라이빗 자동화 허브는 주로 자동화 실행 환경을 지원합니다. 실행 환경은 자동화가 실행되는 환경을 정의, 빌드 및 배포하는 표준화된 방법입니다. 간단히 말해 자동화 실행 환경은 플랫폼 관리자가 Ansible을 더 쉽게 관리할 수 있는 컨테이너 이미지입니다.

7.1. High Availability Automation Hub 요구 사항

7.1.1. 방화벽 서비스 활성화

공유 파일 시스템 사용 요구 사항으로 인해 고가용성 자동화 허브 환경의 일부로 다음 섹션에 표시된 대로 파일 시스템을 성공적으로 마운트할 수 있도록 다음 방화벽 서비스를 활성화해야 합니다.

자동화 허브 노드에서 ansible 사용자로 다음을 수행합니다.

  1. 다음 firewalld 서비스(nfs,mountd,rpc-bind)가 활성화되어 있는지 확인합니다.

    $ sudo firewall-cmd --zone=public --add-service=nfs
    $ sudo firewall-cmd --zone=public --add-service=mountd
    $ sudo firewall-cmd --zone=public --add-service=rpc-bind
  2. 변경 사항을 적용하려면 firewalld 를 다시 로드합니다.

    $ sudo firewall-cmd --reload
  3. firewalld 서비스가 활성화되었는지 확인합니다.

    $ sudo firewall-cmd --get-services

7.1.2. 공유 파일 시스템

고가용성 자동화 허브를 사용하려면 환경에 대해 이미 공유 파일 시스템을 설정해야 합니다.

Ansible Automation Platform 설치 프로그램을 실행하기 전에 공유 파일 시스템 설치로 인해 /var/lib/pulp 디렉터리가 클러스터 전체에 있는지 확인합니다. Ansible Automation Platform 설치 프로그램에서 노드 중 하나에서 /var/lib/pulp 가 탐지되지 않으면 오류를 반환하여 고가용성 자동화 허브 설정이 실패합니다.

자동화 허브 노드에서 ansible 사용자로 다음을 수행합니다.

  1. /var/lib/pulp 디렉토리를 만듭니다.

    $ sudo mkdir /var/lib/pulp
  2. 공유 파일 시스템 마운트(이 참조 환경은 NFS 공유 사용)

    $ sudo mount -t nfs4 <nfs_share_ip_address>:/ /var/lib/pulp
  3. 다음을 통해 공유 파일 시스템이 마운트되었는지 확인합니다.

    $ df -h

8장. 프라이빗 Automation Hub 설치

사전 요구 사항이 모두 설정되어 있으면 최종 단계는 클러스터형 자동화 허브 설치에 대한 인벤토리 파일을 수정하고 setup.sh 를 실행하는 것입니다.

이 참조 환경 내에서 controlplane-1.site1.example.com 시스템은 모든 노드에 액세스할 수 있으므로 클러스터형 자동화 허브 환경에 대해 setup.sh 를 실행하는 데 사용됩니다.

참고

다음 설치는 이 참조 환경 Ansible Automation Platform 클러스터의 사이트 Ansible site 1 에서 수행됩니다. 완료되면 Ansible 사이트 2 에 대해 동일한 단계를 따르십시오.

controlplane-1.site1.example.com 에서 ansible 사용자로 다음을 수행합니다.

  1. 디렉터리를 ansible-automation-platform-setup-2.1.0-1.tar.gz로 변경

    cd ansible-automation-platform-setup-2.1.0-1/
  2. 기존 인벤토리 파일 백업

    $ cp inventory inventory-controller.bkup
  3. 환경에 대한 적절한 정보와 함께 포함하도록 인벤토리 파일을 수정합니다. 다음은 이 참조 환경의 예입니다.

    [automationcontroller]
    
    [automationcontroller:vars]
    
    [execution_nodes]
    
    [automationhub]
    ahub-1.site1.example.com 1
    ahub-2.site1.example.com
    ahub-3.site1.example.com
    
    
    [database]
    ahub-db.site1.example.com 2
    
    [servicescatalog_workers]
    
    [sso]
    
    [all:vars]
    admin_password=''
    
    pg_host=''
    pg_port=''
    
    pg_database=''
    pg_username=''
    pg_password=''
    pg_sslmode=''  # set to 'verify-full' for client-side enforced SSL
    
    registry_url= 'registry.redhat.io' 3
    registry_username='myusername' 4
    
    
    #Handled by Ansible vault
    registry_password='' 5
    
    receptor_listener_port=27199
    
    #Handled by Ansible vault
    automationhub_admin_password='' 6
    
    automationhub_pg_host='ahub-db.site1.example.com' 7
    automationhub_pg_port='5432' 8
    
    automationhub_pg_database='automationhub'
    automationhub_pg_username='automationhub'
    
    #Handled by Ansible vault
    automationhub_pg_password='' 9
    
    automationhub_pg_sslmode='prefer'
    
    sso_console_admin_password=''
    1
    Automation Hub 노드
    2
    자동화 허브 설치를 위해 PostgreSQL 데이터베이스를 설치할 노드를 설정합니다.
    3
    실행 환경 이미지가 다운로드되어 설치에 포함됩니다. 이미지를 다운로드하는 데 필요한 적절한 인증 정보입니다.
    4
    registry_url에 액세스할 수 있는 사용자 인증 정보입니다.
    5
    registry_url에 액세스하기 위한 암호 자격 증명입니다.
    6
    설치 완료 시 UI에 액세스하도록 admin 사용자의 암호를 설정합니다.
    7
    PostgreSQL 호스트(데이터베이스 노드)를 설정합니다.
    8
    자동화 허브 데이터베이스 노드에 사용할 PostgreSQL 포트를 설정합니다.
    9
    PostgreSQL 데이터베이스의 암호를 설정합니다.
    참고

    Ansible Automation Platform 컨트롤러 설치에 대한 모든 정보가 제거되었습니다.

  4. 암호화된 자격 증명을 저장할 credentials_ah.yml 이라는 레이블이 지정된 파일을 만듭니다.

    $ cat credentials_ah.yml
    automationhub_admin_password: my_long_ahub_pw
    automationhub_pg_password: my_long_ahub_pw
    registry_password: my_long_registry_pw
  5. ansible-vault 를 사용하여 credentials_ah.yml 파일을 암호화합니다.

    $ ansible-vault encrypt credentials_ah.yml
    New Vault password:
    Confirm New Vault password:
    Encryption successful
    주의

    암호화된 vault 암호를 안전한 위치에 저장합니다.

  6. credentials_ah.yml 파일이 암호화되었는지 확인합니다.

    $ cat credentials_ah.yml
    $ANSIBLE_VAULT;1.1;AES256
    36383639653562386534316333333961383336306465336465613831353435313530376464616539
    3765393063303065323466663330646232363065316666310a373062303133376339633831303033
    34313534383962613632303761636632623932653062343839613639653635643365616233313365
    3636616639313864300a353239373433313339613465326339313035633565353464356538653631
    63346434383534643237663862353361366632613634333231316334363939396461326561643336
    3430633534303935646264633034383966336232303365383763
  7. Ansible Automation Platform 2.1 설치에 setup.sh 를 실행하고 credentials_ah.yml--ask-vault-pass 옵션을 전달합니다.

    $ ANSIBLE_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ANSIBLE_HOST_KEY_CHECKING=False ./setup.sh -e @credentials_ah.yml -- --ask-vault-pass
    참고

    다음 ANSIBLE*_ 변수가 성공적으로 설치되도록 설정됩니다.

    참고

    인벤토리 파일 내에서 설정할 수 있는 다양한 값에 대한 자세한 내용은 다음을 참조하십시오. 인벤토리 파일 설정

  8. automationhub-cluster.site1.example.com과 같이 프라이빗 자동화 허브 대시보드에 로그인합니다.

9장. 중앙 집중식 로깅

로깅에 대해 생각할 때 대부분의 경우 가장 먼저 생각하는 것은 특정 문제를 해결할 수 있는 기능입니다. 기술이 계속 진화함에 따라 많은 애플리케이션이 캡처하는 막대한 양의 데이터가 데이터 캡처뿐만 아니라 운영 인텔리전스 방법을 적용할 수 있도록 하는 데 중요한 역할을 합니다.

Ansible Automation Platform은 자세한 로그를 여러 종류의 타사 외부 로그 집계 서비스로 보낼 수 있는 로깅 기능을 제공합니다. 이 데이터 피드에 연결된 서비스는 자동화 컨트롤러 사용 또는 기술 추세에 대한 인사이트를 얻는 데 유용한 수단 역할을 합니다. 데이터를 사용하여 인프라의 이벤트를 분석하고, 변칙을 모니터링하고, 한 서비스의 이벤트와 다른 서비스의 이벤트 간 상관 관계를 도출할 수 있습니다.

자동화 컨트롤러에 가장 유용한 데이터 유형은 작업 사실 데이터, 작업 이벤트/작업 실행, 활동 스트림 데이터 및 로그 메시지입니다. 데이터는 가져온 라이브러리를 통해 또는 사용자 지정 처리기에서 엔지니어링된 최소 서비스별 조정을 사용하여 HTTP 연결을 통해 JSON 형식으로 전송됩니다.

Ansible Automation Platform의 로깅 기능은 현재 Splunk, Logstash, Loggly, Sumologic에서 쉽게 작동하도록 설정되어 있으며 다른 타사 외부 로그 집계 서비스를 사용하려는 경우 다른 옵션을 제공합니다.

이 참조 환경의 목적을 위해 Splunk Enterprise 8.2.2를 사용하여 Ansible Automation Platform 사이트 모두에서 중앙 집중식 로깅을 설정하는 데 중점을 둡니다.

참고

Splunk Enterprise 설치는 이 참조 아키텍처의 범위를 벗어납니다. 자세한 내용은 Splunk Enterprise 설치 방법을참조하십시오.

9.1. Splunk HTTP 이벤트 수집기(HEC) 설정

HTTP 이벤트 수집기는 개발자가 토큰 기반 인증 모델을 사용하여 HTTP 또는 HTTPS를 통해 Splunk 플랫폼에 직접 애플리케이션 이벤트를 보낼 수 있는 끝점입니다.

HEC를 사용하기 위해 첫 번째 단계는 Splunk 배포 내에서 HEC를 활성화하는 것입니다.

Splunk 관리자로서,

  1. Splunk 대시보드에 로그인합니다.
  2. 설정데이터 입력HTTP 이벤트 수집기 를 클릭합니다.
  3. 오른쪽 상단에 있는 글로벌 설정을 클릭합니다.
  4. 모든 토큰 토글 옵션에서 Enabled (기본값)를 선택합니다.
  5. 모든 HEC 토큰 의 기본 소스 유형 (예: _json)을 선택합니다.
  6. Splunk 배포에서 HTTPS를 사용하는 경우 SSL 활성화를 확인합니다.
  7. HTTP 포트 번호를 통해 HTTP 입력 전용 포트를 설정합니다. 기본값은 8088입니다.
  8. 저장을 클릭합니다.

그림 9.1. 글로벌 설정

글로벌 설정
주의

Splunk 배포에서 포트 8088(또는 할당된 포트)이 열려 있는지 확인합니다.

Splunk 배포에서 HEC를 사용하면 Splunk를 사용한 자동화 컨트롤러 인증에 사용할 HEC 토큰을 생성합니다.

HTTP를 통해 데이터를 수신하기 위해 토큰을 구성하는 방법에는 다른 방법이 있지만 다음은 이 참조 환경에 사용되는 구성 설정입니다.

참고

HEC에 대한 자세한 내용은 HTTP 이벤트 수집기를 참조하십시오.

  1. 설정데이터 추가를 클릭합니다.
  2. 페이지 하단에서 모니터 를 선택합니다.
  3. HTTP 이벤트 수집기 를 클릭합니다.
  4. 이름 필드에 토큰 이름을 입력하십시오 (예: AAP)
  5. Source TypeSelect 로 변경하고 드롭다운에 _json 을 입력합니다.
  6. 인덱스 내에서 ansible 이라는 레이블이 지정된 인덱스를 만듭니다.
  7. 선택한 항목 상자에 새로 생성된 인덱스를 추가합니다.

    입력 설정
  8. 오른쪽 상단에 있는 검토 를 클릭합니다.

    검토
  9. Submit 을 클릭합니다.
  10. Ansible Automation Platform에서 Splunk를 인증하는 데 사용할 생성된 토큰 값을 저장

    생성된 토큰
  11. Start Search green 버튼을 클릭하고 나중에 사용할 수 있도록 제공된 샘플 쿼리를 복사합니다.

    source="http:AAP" (index="ansible") sourcetype="_json"

9.2. Ansible Automation Platform 자동화 컨트롤러 구성

HEC가 활성화되고 HEC 토큰이 생성되면 당사의 Splunk 환경은 Ansible Automation Platform에서 이벤트를 수신할 준비가 되었습니다.

마지막 단계는 다음과 같이 Splunk 환경을 중앙 집중식 로깅에 사용하도록 Ansible Automation Platform 자동화 컨트롤러 클러스터를 구성하는 것입니다.

Ansible Automation Platform 환경에서 다음을 수행합니다.

  1. Ansible Automation Platform 대시보드에 관리자로 로그인합니다.
  2. 페이지 하단으로 스크롤하여 설정을 클릭합니다.
  3. 시스템 에서 로깅 설정을 선택합니다.

    설정
  4. 로깅 수집기 내에서 로그를 보내야 하는 위치를 입력합니다.

    1. 이 Splunk 환경은 https://splunk.example.com:8088/services/collector/event사용

      참고

      기본 8088을 사용하지 않는 경우 위치 프로토콜(HTTP/HTTPS) 및 포트를 수정합니다.

  5. 로깅 수집기 유형 내에서 드롭다운에서 플루크를 선택합니다.
  6. 로깅 수집기 암호/토큰 내에서 이전에 생성한 HEC 토큰을 복사하여 붙여넣습니다.
  7. 로깅 수집기 프로토콜 내에서 드롭다운에서 HTTPS/HTTP 를 선택합니다.
  8. 로깅 수집기 수준 임계값 내에서 사용자 환경의 로깅 수준을 선택합니다(예: INFO).

그림 9.2. 참조 환경 로깅 설정

로깅 세부 정보
참고

위의 설정에는 Splunk를 사용하여 로깅할 수 있는 최소값이 포함되어 있습니다. 환경에 가장 적합하도록 로깅 설정을 조정합니다.

완료되면 사이트 2에서 로깅 기능 구성을 반복합니다. 이렇게 하면 두 사이트에서 모두 동일한 중앙 집중식 로깅 환경을 사용할 수 있습니다.

9.3. Splunk로 전송된 이벤트 확인

마지막으로 Ansible Automation Platform 이벤트가 Splunk로 적절하게 전송되었는지 확인합니다. 이를 위해 Ansible Automation Platform 자동화 컨트롤러를 통해 임시 명령을 실행하여 확인합니다.

Ansible Automation Platform 대시보드 내에서

  1. 리소스인벤토리에서 데모 인벤토리를 선택합니다.
  2. 세부 정보 에서 호스트 를 선택합니다.
  3. Run Command 버튼을 클릭합니다.
  4. Run command Details window 섹션에서 드롭다운에서 모듈 ping 을 선택하고 Next 를 클릭합니다.
  5. Run command Execution Environment 섹션에서 Default execution environment 를 선택하고 Next 를 클릭합니다.
  6. Run command Credential 섹션에서 Demo Credential 을 선택하고 Next 를 클릭합니다.
  7. Run command Preview 섹션에서 blue Launch 버튼을 클릭합니다.

제공된 출력은 다음과 같습니다.

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

이제 Splunk 대시보드로 이동하여 검색에서 Splunk 내에서 Ansible Automation Platform 이벤트가 트리거되었는지 확인합니다.

Splunk 검색

검색에 다음과 유사한 이벤트가 표시되어야 합니다.

출력 검색

각 Ansible Automation Platform 사이트 설정에 대해 동일한 확인 프로세스를 반복합니다.

10장. 다중 Ansible Automation Platform 배포 간의 구성 일관성

10.1. 왜 코드로 구성합니까?

일반적으로 여러 Ansible Automation Platform 배포 사이트에서 일관성이 있다고 생각할 때 데이터베이스 복제를 사용하여 하나의 Ansible Automation Platform 환경에서 데이터를 복사하고 해당 데이터를 다른 Ansible Automation Platform 사이트로 가져오는 것이 좋습니다.

이 작업은 스크립트, 특수 소프트웨어, 데이터베이스 수동 내보내기와 Ansible Automation Platform 데이터베이스를 새 사이트로 가져오거나 비슷한 작업을 수행하는 사용자 지정 Ansible 플레이북을 실행하여 수행할 수 있습니다.

일반적으로 이러한 방법에는 여러 가지 방법이 있지만 이러한 방법에는 연결된 cons가 있습니다.

예를 들어 데이터베이스 복제에는 스토리지 인프라에 대한 투자를 필요로 하며 적절한 전문 지식 없이도 이를 수행하기 어려울 수 있습니다.

10.2. 코드 구성이란 무엇입니까?

코드로 구성은 리포지토리에서 구성 파일을 관리하는 실습으로 정의됩니다. Ansible Automation Platform의 경우 이러한 구성 파일은 Ansible Automation Platform 환경에 적용할 설정을 설정합니다.

Ansible Automation Platform 구성 파일을 코드로 저장하고 관리하면 다음과 같은 작업을 수행할 수 있습니다.

  • 모든 Ansible Automation Platform 환경에 적용되는 설정을 표준화
  • 구성의 버전 제어의 이점 상속
  • 동일한 구성 설정을 사용하도록 추가 Ansible Automation Platform 배포를 쉽게 확장할 수 있습니다.
  • 구성 설정 변경 사항을 쉽게 추적하여 문제를 보다 쉽게 수정할 수 있습니다.

코드 구성은 Ansible Automation Platform 환경에 적용할 수 있는 다양한 이점과 모범 사례를 제공하는 반면, 여러 Ansible Automation Platform 사이트에 구성을 자동으로 간소화하고 자동화하려면 구성을 Git 웹 후크와 코드 솔루션으로 연결해야 합니다.

10.3. Git Webhook란 무엇입니까?

Git Webhook는 리포지토리 또는 조직에서 특정 작업이 발생할 때마다 외부 웹 서버로 전달할 알림 메서드로 정의됩니다.

예를 들어 리포지토리가 업데이트되면 CI 빌드를 트리거하거나 환경을 배포하거나 Ansible Automation Platform 환경에 대한 구성을 업데이트할 수 있는 이벤트가 트리거될 수 있습니다.

코드 및 Git Webhook로 구성 솔루션을 사용하면 모든 Ansible Automation Platform 사이트를 모든 플랫폼의 정확한 구성으로 즉시 업데이트하는 Ansible Automation Platform 작업 흐름을 설정할 수 있습니다.

실제로 데이터베이스 백업을 유지 관리하거나 비용이 많이 드는 데이터베이스 복제 솔루션을 활성화하는 동시에 이러한 솔루션을 구현해야 하는 오버헤드를 제거합니다.

다음 섹션에서는 이 방법론을 고려하여 관리자가 Git 웹 후크를 사용하여 여러 Ansible Automation Platform 환경에서 일관성을 보장하기 위해 구성을 코드로 활용하는 방법에 중점을 둡니다.

10.4. Webhook 작업

Webhook는 웹을 통해 앱 간에 지정된 명령을 실행할 수 있는 기능을 제공합니다. Ansible 자동화 컨트롤러는 현재 GitHub 및 GitLab과 Webhook 통합을 제공합니다. 이 참조 환경은 GitHub를 사용하여 자동화 컨트롤러에서 Webhook를 설정하는 절차를 설명합니다.

10.4.1. GitHub Webhook 설정

자동화 컨트롤러에는 트리거된 Webhook 이벤트를 기반으로 작업을 실행할 수 있습니다. 다음은 해당 설정에 대한 단계별 정보를 제공합니다.

GitHub 개인 액세스 토큰 생성

  1. 자동화 컨트롤러와 함께 사용할 개인 액세스 토큰(PAT)을 생성합니다.

    1. GitHub 계정의 프로필 설정에서 설정을 클릭합니다.
    2. 개인 설정 아래에서 개발자 설정을 클릭합니다.

      Webhook에서 Webhook github 설정 생성
    3. 개발자 설정에서 개인 액세스 토큰을 클릭합니다.
    4. 개인 액세스 토큰 화면에서 새 토큰 생성 버튼을 클릭합니다.
    5. 메시지가 표시되면 GitHub 계정 암호를 입력하여 계속합니다.
    6. 노트 필드에 이 PAT의 용도에 대한 간략한 설명을 입력합니다.
    7. 만료 드롭다운에서 만료 를 선택합니다.
    8. 범위 필드에서 자동화 컨트롤러 Webhook는 초대를 제외하고 리포지터리 범위 액세스 권한만 있으면 됩니다. 다른 범위에 대한 정보를 보려면 테이블 바로 위에 있는 링크를 클릭하여 문서에 액세스합니다.

      범위
    9. 페이지 하단에서 토큰 생성 버튼을 클릭합니다.

      주의

      토큰이 생성되면 이후 단계에서 Ansible Automation Platform 자동화 컨트롤러 클러스터에서 사용되므로 PAT를 복사해야 합니다. GitHub에서는 이 토큰에 다시 액세스할 수 없습니다.

GitHub 리포지토리 생성

PAT를 배치하면 다음 단계는 리포지토리를 변경할 때 GitHub Webhook에서 트리거할 Git 리포지토리를 생성하는 것입니다.

자동화 컨트롤러 구성을 쉽게 업데이트하거나 수정할 수 있으므로 이 참조 환경은 redhat_cop.controller_configuration 이라는 Ansible 컬렉션을 활용합니다.

이 Ansible 컬렉션을 사용하면 컨트롤러 컬렉션 모듈을 사용하여 Ansible 역할을 통해 Ansible 컨트롤러 서버와 쉽게 상호 작용할 수 있습니다.

이 컬렉션의 지원을 통해 기존의 이러한 역할을 사용하여 모든 사이트에서 자동화 컨트롤러 환경을 수정하거나 업데이트할 수 있습니다.

참고

redhat_cop.controller_configuration 컬렉션은 커뮤니티 프로젝트이며 Red Hat에서 공식적으로 지원하지 않습니다.

  1. GitHub에서 새 리포지토리를 생성합니다.

    1. 적절한 소유자를 선택하고 리포지토리 이름을 제공해야 합니다.

      1. 이 참조 환경에서는 리포지토리 이름 aap_refarch 를 사용합니다.
    2. 리포지토리를 설명하는 선택적 설명을 제공합니다.
    3. 리포지토리를 공용 또는 프라이빗으로 설정합니다.

      1. 이 참조 환경은 리포지토리를 공용 으로 설정합니다.
    4. README 파일 추가로 리포지토리를 초기화합니다.
  2. 리포지토리 생성 버튼을 클릭합니다.

새로 생성된 GitHub 리포지토리 내에서 세 개의 파일이 생성됩니다.

  • playbook.yml - 자동화 컨트롤러를 업데이트하거나 수정하는 데 필요한 모든 역할이 있는 플레이북입니다.
  • requirements.yml - 플레이북을 실행하는 데 필요한 모든 컬렉션이 포함된 requirements.yml 파일입니다.
  • group_vars/ all.yml - 특정 구성(역할)에 대해 수정하려는 모든 변수가 포함된 all.yml 파일입니다.

이 세 파일의 목적은 group_vars/all.yml 이 수정 및 리포지토리에 업데이트될 때 Ansible Automation Platform 자동화 컨트롤러 클러스터 내에서 작업 템플릿을 시작하여 적절한 변경 또는 업데이트를 수행하는 방법을 제공하는 것입니다.

참고

이 세 가지 파일의 샘플은 이 가이드의 부록 C. Supplementary 섹션 또는 https://github.com/ansible/aap_refarch에서 확인할 수 있습니다.

Ansible Automation Platform 자동화 컨트롤러 클러스터에서 리소스 인증 정보 설정

리포지토리를 코드로 사용하기 전에 Ansible Automation Platform 사이트 내에서 적절한 인증 정보 리소스를 설정합니다.

이렇게 하면 새 프로젝트, 작업 흐름 및 작업 템플릿이 생성되면 해당 인증 정보를 해당 리소스에 쉽게 연결할 수 있습니다.

다음 단계에서는 필요한 두 개의 자격 증명을 생성하는 방법을 보여줍니다.

이전에 생성한 GitHub(PAT) 토큰과 연결된 인증 정보 중 하나입니다.

업데이트할 Ansible Automation Platform 사이트와 관련된 기타 인증 정보입니다. 각 Ansible Automation Platform 사이트는 자체 환경에 의해 업데이트됩니다(예: site1은 site1에 의해 업데이트됩니다.).

Ansible Automation Platform 사이트에서 다음을 수행합니다.

  1. Ansible Automation Platform 자동화 컨트롤러 대시보드에 로그인
  2. 리소스인증 정보 에서 파란색 추가 버튼을 클릭합니다.

    1. 이름 제공 (예: GitHub PAT)
    2. 인증 정보 유형으로 GitHub 개인 액세스 토큰 을 선택합니다.
    3. 유형 세부 정보 내에서 GitHub에서 이전에 생성된 토큰을 사용하여 시크릿을 추가합니다.
  3. 저장을 클릭합니다.

    참고

    이 인증 정보의 이름은 GitHub에 다시 게시되는 작업 템플릿에서 사용되므로 기록해 두십시오.

GitHub PAT 인증 정보 세트를 사용하여 기존 Ansible Automation Platform 환경에 대한 두 번째 인증 정보를 생성합니다.

  1. 리소스인증 정보 에서 파란색 추가 버튼을 클릭합니다.

    1. AAP_Site1과 같은 이름을 입력하십시오.
    2. Red Hat Ansible Automation Platform인증 정보 유형으로 제공합니다.
    3. 유형 세부 정보 내에서 적절한 세부 정보를 추가합니다.

      1. Red Hat Ansible Automation Platform (예: controlplane-cluster.site1.example.com)
      2. 사용자 이름 (예: admin)
      3. 암호( 예: redhat)
    4. SSL 인증서가 서명된 경우 옵션에서 Verify SSL 을 선택해야 합니다.
  2. 저장을 클릭합니다.

Ansible Automation Platform 사이트 2에서 이 섹션을 반복합니다.

참고

controlPlane-cluster.site1.example.com은 이 참조 환경이 로드 밸런서를 활용하므로 사용됩니다. 이 참조 환경에서는 로드 밸런서의 설정이 범위를 벗어납니다.

코드 프로젝트로 구성 생성

코드 프로젝트로 구성의 목적은 코드 리포지토리가 실행될 때 구성에 업데이트할 때마다 자동으로 실행되는 작업 템플릿이 포함된 작업 흐름을 생성하는 것입니다.

이렇게 하면 변수 설정과 같은 변경을 수행할 때 Git 리포지토리 플레이북은 다양한 자동화 컨트롤러 구성에 적절한 역할을 실행합니다.

이 섹션에서는 위 작업을 수행하기 위해 프로젝트, 작업 흐름 및 작업 템플릿을 생성합니다.

Ansible Automation Platform 사이트 1대 대시보드 내에서

  1. 리소스프로젝트에서 파란색 추가 버튼을 클릭합니다.
  2. 이름 제공(예: Configuration as Code Project)
  3. 조직으로 기본값 선택
  4. 실행 환경으로 기본 실행 환경을 선택합니다 .
  5. 소스 제어 인증 정보유형으로 Git 선택
  6. 유형 세부 정보 내에서,

    1. 소스 제어 URL 추가 (GitHub 리포지토리)
  7. 옵션

    1. 정리,삭제,시작 시 버전 업데이트를선택합니다.
  8. 저장을 클릭합니다.

다음으로 작업 흐름 템플릿을 생성합니다.

  1. 리소스템플릿에서 파란색 추가워크플로우 추가 템플릿을 클릭합니다.
  2. 이름 제공(예: Configuration as Code Workflow)
  3. 옵션 내에서 확인 표시 Webhook 활성화

    1. Webhook 세부 정보 에서 Webhook 서비스로 GitHub 를 선택합니다.
    2. Webhook 세부 정보 내에서 이전에 Webhook 자격 증명 으로 생성된 GitHub PAT 토큰을 선택합니다(예: GitHub PAT).
  4. 저장을 클릭합니다.
  5. Please click the Start button to start window, click the Save at the top right corner에서 시작 버튼을 클릭합니다.
  6. 나중에 사용할 Webhook URLWebhook 키를 복사합니다.

Ansible Automation Platform 사이트 2에서 위의 프로세스를 반복합니다.

리포지토리에 대한 GitHub Webhook 활성화

Ansible Automation Platform 워크플로 템플릿이 생성되고 필요한 파일이 있는 GitHub 리포지토리를 사용하면 다음 단계는 리포지토리에 대한 Webhook(예: aap_refarch )를 활성화하는 것입니다.

  1. GitHub 리포지토리의 홈페이지에서 Settings 탭을 선택합니다.
  2. 설정 탭에서 Webhook 를 선택합니다.

    Webhook 옵션
  3. Webhook 섹션 내에서 Webhook 추가 버튼을 선택합니다.
  4. Payload URL (워크플로우의 URL)을 입력합니다.
  5. 콘텐츠 유형 드롭다운을 application/json 으로 변경합니다.
  6. Secret (워크플로우의 Webhook 키)을 입력합니다.
  7. 기본값을 푸시 이벤트를 사용하도록 두고 Add webhook 버튼을 클릭합니다.

    주의

    기본적으로 GitHub는 페이로드를 전달할 때 SSL 인증서를 확인합니다. 자동화 컨트롤러 SSL 인증서가 서명 되지 않은 경우SSL 확인 기능을 비활성화하십시오.

Ansible Automation Platform 사이트 2에서 위의 프로세스를 반복합니다.

코드 작업 템플릿으로 구성 생성

코드 프로젝트로 구성에 대해 생성할 작업 템플릿은 Git 리포지토리로 업데이트할 때마다 playbook.yml 파일을 자동으로 실행합니다.

이렇게 하면 구성 변경이 필요할 때 Ansible Automation Platform 컨트롤러 API를 사용하여 적절하게 변경할 수 있습니다. 모든 Ansible Automation Platform 사이트에서 동일한 방법론을 결합하면 구성된 사이트 전체에서 모든 변경 사항이 글로벌화됩니다.

  1. 리소스→ 템플릿에서 파란색 추가작업 템플릿 추가 를 클릭합니다.
  2. 이름 제공(예: Configuration as Code Job)
  3. 작업 유형으로 실행을 선택합니다.
  4. 인벤토리로 데모 인벤토리선택
  5. 프로젝트로 구성을 Code Project 로 선택합니다.
  6. 실행 환경으로 기본 실행 환경을 선택합니다 .
  7. Playbook으로 playbook.yml 을 선택합니다.
  8. 인증 정보를 선택하고 머신에서 Red Hat Ansible Automation Platform으로 카테고리 를 전환
  9. Ansible Automation Platform 사이트에 대한 적절한 인증 정보(예: AAP_Site1)를 선택합니다.
  10. 옵션 내에서 Webhook 사용을 선택합니다.
  11. Webhook 서비스로 GitHub 를 선택합니다.
  12. 이전에 Webhook 인증 정보로 생성된 GitHub PAT 토큰을 선택합니다(예: GitHub PAT)
  13. 저장을 클릭합니다.

Ansible Automation Platform 사이트 2에서 위의 프로세스를 반복합니다.

생성된 구성을 코드 워크플로로 업데이트

이전에는 코드 워크플로로 구성 을 생성했습니다. 이 워크플로의 목적은 코드 프로젝트로 구성을 항상 동기화하고 리포지토리를 변경할 때마다 코드 작업으로 구성을 실행하는 것입니다.

  1. 리소스템플릿 아래에서 템플릿을 선택합니다. 예를 들어 Configuration as Code Workflow
  2. 세부 정보 섹션에서 시각화 도구를 선택하고 녹색 시작을 클릭합니다.
  3. Node Type 의 경우 Project Sync 를 선택하고 적절한 프로젝트(예: Configuration as Code Project )를 선택하고 저장을 클릭합니다.
  4. Configuration(구성)을 Code Project로 마우스로 가리키고 더하기 "+" 기호를 선택합니다.
  5. 노드 추가 창에서 이 노드를 실행해야 할 때 Always as to를 선택하고 Next 를 클릭합니다.
  6. 노드 유형으로 구성을 코드 작업으로 선택하고 저장을 클릭합니다.
  7. 시각화 도구로 다시 가져온 후 오른쪽 상단에 있는 저장 버튼을 선택합니다.

구성을 코드 설정으로 확인

redhat_cop.controller_configuration 에 이미 포함된 역할이 많이 있으므로 적절한 yamlgroup_vars/all.yml 파일을 업데이트하여 모든 항목이 예상대로 작동하는지 확인하는 간단한 방법입니다.

사용자를 만들고자 하는 경우 사용자 역할 설명서 를 자세히 살펴보고, 배포 가능한 모든 변수를 보다 자세히 확인할 수 있습니다.

추가로 검토한 후, director라는 관리자가 아닌 사용자 생성은 다음과 같습니다.

group_vars/all.yml

---
controller_user_accounts:
  - user: "john"
    is_superuser: false
    password: "redhat"

위의 를 사용하여 group_vars/all.yml 파일을 업데이트하고 Git 리포지토리로 푸시하면 Ansible Automation Platform 자동화 컨트롤러 내의 작업을 시작해야 합니다.

이는 자동화 컨트롤러 대시보드 내의 보기 섹션에서 작업을 선택하여 확인할 수 있습니다. 참조 중인 작업에는 작업 수와 작업 이름이 있어야 합니다. 이 참조 환경에서는 유형플레이북 실행을사용하여 코드 작업으로 8-Configuration 과 유사한 내용이 표시됩니다.

작업

작업이 완료되면 Successful (성공) 상태가 됩니다.

admin으로 로그아웃하고 암호 redhat 을 사용하여 사용자 john 으로 다시 기록하면 작업이 성공했는지 확인해야 합니다.

이 전체 장을 따르고 각 Ansible Automation Platform 사이트에 대해 Webhook를 적절하게 설정하는 경우 해당 Ansible Automation Platform 플랫폼에서 사용자 john이 동시에 생성되었습니다.

이 예제는 단순화된 예제이지만 Ansible Automation Platform 자동화 컨트롤러 구성을 허용하는 많은 구성(roles)이 redhat_cop.controller_configuration 내에 제공됩니다.

추가 예제는 다음에서 확인할 수 있습니다. 예제 구성.

Ansible 컬렉션에는 필요한 주요 역할이 많이 있지만 이 Ansible 컬렉션 내에서 찾을 수 있는 역할만 한정되지 않습니다. 기능을 추가로 개선하기 위해 조직에서 새 역할을 구현하거나 생성할 수 있습니다.

부록 A. 작성자 정보

작성자

부록 B. 기여자

이 과정에 협력해 주신대로 시간과 확신에 대해 다음과 같은 개인에게 감사의 말씀을 전합니다. 이 문서는 많은 기여 없이는 불가능했을 것입니다.

기여자제목기여

landon Holley

고급 컨설팅 아키텍트

기술 검토

Ajay Chenampara

주요 전문가 솔루션 아키텍트

기술 검토

자주하는 질문

주요 전문가 솔루션 아키텍트

기술 검토

Sean Sullivan

Senior Consultant

기술 검토

Vinny Valdez

Senior 관리 아키텍트

기술 검토

Chris Budzilowicz

주요 기술 기록기

콘텐츠 검토

NetApp Avery

고급 Ansible 전문가 솔루션 아키텍트

기술 검토

부록 C. Supplementary

C.1. 자동화 컨트롤러 플레이북 구성

---
- name: Playbook to configure ansible Controller post installation
  hosts: localhost
  connection: local
  vars:
    controller_validate_certs: false
  collections:
    - awx.awx
    - redhat_cop.controller_configuration

  roles:
    - {role: settings, when: controller_settings is defined, tags: settings}
    - {role: organizations, when: controller_organizations is defined, tags: organizations}
    - {role: labels, when: controller_labels is defined, tags: labels}
    - {role: users, when: controller_user_accounts is defined, tags: users}
    - {role: teams, when: controller_teams is defined, tags: teams}
    - {role: credential_types, when: controller_credential_types is defined, tags: credential_types}
    - {role: credentials, when: controller_credentials is defined, tags: credentials}
    - {role: credential_input_sources, when: controller_credential_input_sources is defined, tags: credential_input_sources}
    - {role: notification_templates, when: controller_notifications is defined, tags: notification_templates}
    - {role: projects, when: controller_projects is defined, tags: projects}
    - {role: execution_environments, when: controller_execution_environments is defined, tags: execution_environments}
    - {role: applications, when: controller_applications is defined, tags: applications}
    - {role: inventories, when: controller_inventories is defined, tags: inventories}
    - {role: instance_groups, when: controller_instance_groups is defined, tags: instance_groups}
    - {role: project_update, when: controller_projects is defined, tags: projects}
    - {role: inventory_sources, when: controller_inventory_sources is defined, tags: inventory_sources}
    - {role: inventory_source_update, when: controller_inventory_sources is defined, tags: inventory_sources}
    - {role: hosts, when: controller_hosts is defined, tags: hosts}
    - {role: groups, when: controller_groups is defined, tags: inventories}
    - {role: job_templates, when: controller_templates is defined, tags: job_templates}
    - {role: workflow_job_templates, when: controller_workflows is defined, tags: workflow_job_templates}
    - {role: schedules, when: controller_schedules is defined, tags: schedules}
    - {role: roles, when: controller_roles is defined, tags: roles}

C.2. 자동화 컨트롤러 구성을 위한 group_vars/all.yml vars 파일(사용자 생성 샘플)

---
controller_user_accounts:
  - user: "colin"
    is_superuser: false
    password: "redhat"

C.3. 자동화 컨트롤러 구성을 위한 requirements.yml

collections:
- name: redhat_cop.controller_configuration
- name: awx.awx

부록 D. 서브스크립션 매니페스트 생성

서브스크립션 매니페스트를 성공적으로 생성하려면 다음을 수행합니다.

  1. access.redhat.com 에 로그인하여 왼쪽 상단 모서리에서 서브스크립션 을 클릭합니다.
  2. 서브스크립션 할당 탭을 선택합니다.
  3. New Subscription allocation 이라는 레이블이 지정된 버튼을 선택합니다.

    하위 할당
  4. Create a New subscription allocation page에서 Name 을 입력하고 Type (유형)에 대해 드롭다운 상자에서 Subscription Asset Manager 1.4 를 선택하고 Create 를 클릭합니다.

    하위 생성
  5. 생성된 서브스크립션 탭을 선택하고 Ansible Automation Platform 서브스크립션 및 제공할 자격 수를 선택합니다.
  6. 세부 정보 탭을 클릭하고 자격 수가 올바른지 검토하고 Export Manifest 버튼을 선택합니다.

    내보내기 매니페스트
  7. Ansible Automation Platform 대시보드로 돌아가서 manifest.zip 가져오기로 돌아가서 다음을 클릭합니다.

    매니페스트 가져오기
  8. (권장) Red Hat 또는 Red Hat Satellite 인증 정보를 제공하여 Ansible Automation Platform에 대한 사용자 분석 및 Insights를 활성화하고 Next 를 클릭합니다.
  9. 최종 사용자 라이센스 계약에 동의합니다.

부록 E. 참고 자료

부록 F. Revision History

고친 과정
고침 1.2-02022-05-03Anshul Behl,Roger Lopez
  • Added hop and execution node automation mesh firewalld port requirements
고침 1.1-02022-04-11Roger Lopez
  • Fixed error in overview image where arrow pointing to wrong location.
  • Added database node minimum requirements to Ch.2 Prerequisites
고침 1.0-02021-12-02Roger Lopez
  • Initial Release

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.