Ansible Automation Platform 2.1 배포
Roger Lopez
ansible-feedback@redhat.com
초록
의견 및 피드백
오픈 소스의 영점으로 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 사이트 1 및 Ansible 사이트 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 |
|
표 2.2. 자동화 컨트롤러 노드
컨트롤 노드 | 필수 항목 | 참고 |
RAM | 16Gb | |
CPU | 4 |
|
disk: 서비스 노드 | 40GB 전용 하드 디스크 공간 |
|
디스크: 데이터베이스 노드 | 20GB 전용 하드 디스크 공간 |
|
브라우저 | 현재 지원되는 Mozilla FireFox 또는 Google Chrome 버전 | |
데이터베이스 | PostgreSQL 버전 12 |
표 2.3. Automation Hub 노드
Automation Hub 노드 | 필수 항목 | 참고 |
RAM | 최소 8GB |
|
CPU | 최소 2개 |
|
disk: 서비스 노드 | 40GB 전용 하드 디스크 공간 |
|
디스크: 데이터베이스 노드 | 20GB 전용 하드 디스크 공간 |
|
브라우저 | 현재 지원되는 Mozilla FireFox 또는 Google Chrome 버전 | |
데이터베이스 | PostgreSQL 버전 12 |
표 2.4. 데이터베이스 노드
데이터베이스 노드 | 필수 항목 | 참고 |
RAM | 16GB | |
CPU | 4 | |
디스크 | 20GB 전용 하드 디스크 공간 |
|
모든 자동화 컨트롤러 데이터는 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 주소 수를 예약해야 합니다.
- 각 컨트롤 플레인 노드에 대해 하나의 IP 주소입니다.
- 각 실행 노드에 대해 하나의 IP 주소입니다.
- 각 자동화 허브 노드에 대한 하나의 IP 주소입니다.
- 컨트롤 플레인 데이터베이스의 IP 주소 1개
- 자동화 허브 데이터베이스를 위한 하나의 IP 주소입니다.
- Ansible Automation Platform 사이트 1에 대한 로드 밸런서 자동화 컨트롤러 클러스터 주소의 IP 주소 1개입니다.
- Ansible Automation Platform 사이트 2에 대한 로드 밸런서 자동화 컨트롤러 클러스터 주소의 IP 주소 1개입니다.
- Ansible Automation Platform 사이트 1에 대한 로드 밸런서 프라이빗 자동화 허브 클러스터 주소의 IP 주소 1개입니다.
- 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 인증서를 사용할 때 노드 간 날짜와 시간이 동기화되지 않은 경우 실패하지 않습니다.
모든 노드에서,
설치되지 않은 경우 다음과 같이
chrony
를 설치합니다.# dnf install chrony --assumeyes
vi
와 같은 텍스트 편집기로/etc/chrony.conf
파일을 편집합니다.# vi /etc/chrony.conf
다음 공용 서버 풀 섹션을 찾고 적절한 서버를 포함하도록 를 수정합니다. 하나의 서버만 필요하지만 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
-
/etc/chrony.conf
파일 내의 모든 변경 사항을 저장합니다. 호스트가 부팅될 때
chronyd
데몬이 시작되도록 시작하고 활성화합니다.# systemctl --now enable chronyd.service
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
키를 생성합니다.
루트가 아닌 사용자 생성
# useradd ansible
ansible
사용자의 암호를 설정합니다.# passwd ansible
ssh
키를ansible
사용자로 생성합니다.$ ssh-keygen -t rsa
sudo
를ansible
사용자로 사용할 때 암호 요구 사항 비활성화# 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
가 설치, 시작 및 활성화되어 있는지 확인합니다.
firewalld
패키지 설치# dnf install firewalld --assumeyes
firewalld
서비스 시작# systemctl start firewalld
firewalld
서비스 활성화# systemctl enable firewalld
4장. Ansible Automation Platform 컨트롤러 데이터베이스 구성 세부 정보
4.1. 컨트롤러 데이터베이스 방화벽 설정 구성
Ansible Automation Platform을 성공적으로 설치하기 위해 데이터베이스 노드에서 데이터베이스 포트를 활성화하는 사전 요구 사항 중 하나가 있습니다. 사용되는 포트는 인벤토리 파일 내에서 pg_port
에 의해 구성됩니다.
인벤토리 파일 조각
pg_port='5432'
데이터베이스 노드 내에서 ansible
사용자로 설치에 사용할 firewalld
포트를 설정합니다.
firewalld
가 실행 중인지 확인합니다.$ sudo systemctl status firewalld
컨트롤러 데이터베이스 노드에
firewalld
포트를 추가합니다(예: 포트 5432)$ sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
firewalld
다시 로드$ sudo firewall-cmd --reload
포트가 열려 있는지 확인합니다.
$ 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
사용자로 홉 및 실행 노드 내에서 다음을 수행합니다.
firewalld
가 실행 중인지 확인합니다.$ sudo systemctl status firewalld
홉 및 실행 노드에
firewalld
포트 추가(예: 포트 27199)$ sudo firewall-cmd --permanent --zone=public --add-port=27199/tcp
firewalld
다시 로드$ sudo firewall-cmd --reload
포트가 열려 있는지 확인합니다.
$ 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
사용자로 다음을 수행합니다.
- Ansible Automation Platform 2.1 설정 tar ansible-automation-platform-setup-2.1.0-1.tar.gz
ansible-automation-platform-setup-2.1.0-1.tar.gz
$ tar zxvf ansible-automation-platform-setup-2.1.0-1.tar.gz
디렉터리를 ansible-automation-platform-setup-2.1.0-1.tar.gz로 변경
cd ansible-automation-platform-setup-2.1.0-1/
기존 인벤토리 파일 백업
$ cp inventory inventory.bkup
ansible-core
패키지 설치$ sudo dnf install ansible-core --assumeyes
환경에 대한 적절한 정보와 함께 포함하도록 인벤토리를 수정합니다. 다음은 이 참조 환경의 예입니다.
[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에 액세스하기 위한 암호 자격 증명입니다.
암호화된 자격 증명을 저장할 credentials.yml 이라는 레이블이 지정된 파일을 만듭니다.
$ cat credentials.yml
admin_password: my_long_admin_pw pg_password: my_long_pg_pw registry_password: my_long_registry_pw
ansible-vault
를 사용하여 credentials.yml 파일을 암호화합니다.$ ansible-vault encrypt credentials.yml
New Vault password: Confirm New Vault password: Encryption successful
주의암호화된 vault 암호를 안전한 위치에 저장합니다.
credentials.yml 파일이 암호화되었는지 확인합니다.
$ cat credentials.yml
$ANSIBLE_VAULT;1.1;AES256 36383639653562386534316333333961383336306465336465613831353435313530376464616539 3765393063303065323466663330646232363065316666310a373062303133376339633831303033 34313534383962613632303761636632623932653062343839613639653635643365616233313365 3636616639313864300a353239373433313339613465326339313035633565353464356538653631 63346434383534643237663862353361366632613634333231316334363939396461326561643336 3430633534303935646264633034383966336232303365383763
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*_ 변수가 성공적으로 설치되도록 설정됩니다.
참고인벤토리 파일 내에서 설정할 수 있는 다양한 값에 대한 자세한 내용은 다음을 참조하십시오. 인벤토리 파일 설정
- Ansible Automation Platform 대시보드에 로그인합니다(예: controlplane-cluster.site1.example.com).
서브스크립션 매니페스트 또는 사용자 이름/암호를 통해 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
사용자로 다음을 수행합니다.
다음
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
변경 사항을 적용하려면
firewalld
를 다시 로드합니다.$ sudo firewall-cmd --reload
firewalld
서비스가 활성화되었는지 확인합니다.$ sudo firewall-cmd --get-services
7.1.2. 공유 파일 시스템
고가용성 자동화 허브를 사용하려면 환경에 대해 이미 공유 파일 시스템을 설정해야 합니다.
Ansible Automation Platform 설치 프로그램을 실행하기 전에 공유 파일 시스템 설치로 인해 /var/lib/pulp
디렉터리가 클러스터 전체에 있는지 확인합니다. Ansible Automation Platform 설치 프로그램에서 노드 중 하나에서 /var/lib/pulp
가 탐지되지 않으면 오류를 반환하여 고가용성 자동화 허브 설정이 실패합니다.
각 자동화 허브 노드에서 ansible
사용자로 다음을 수행합니다.
/var/lib/pulp
디렉토리를 만듭니다.$ sudo mkdir /var/lib/pulp
공유 파일 시스템 마운트(이 참조 환경은 NFS 공유 사용)
$ sudo mount -t nfs4 <nfs_share_ip_address>:/ /var/lib/pulp
다음을 통해 공유 파일 시스템이 마운트되었는지 확인합니다.
$ 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
사용자로 다음을 수행합니다.
디렉터리를 ansible-automation-platform-setup-2.1.0-1.tar.gz로 변경
cd ansible-automation-platform-setup-2.1.0-1/
기존 인벤토리 파일 백업
$ cp inventory inventory-controller.bkup
환경에 대한 적절한 정보와 함께 포함하도록 인벤토리 파일을 수정합니다. 다음은 이 참조 환경의 예입니다.
[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 컨트롤러 설치에 대한 모든 정보가 제거되었습니다.
암호화된 자격 증명을 저장할 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
ansible-vault
를 사용하여 credentials_ah.yml 파일을 암호화합니다.$ ansible-vault encrypt credentials_ah.yml
New Vault password: Confirm New Vault password: Encryption successful
주의암호화된 vault 암호를 안전한 위치에 저장합니다.
credentials_ah.yml 파일이 암호화되었는지 확인합니다.
$ cat credentials_ah.yml
$ANSIBLE_VAULT;1.1;AES256 36383639653562386534316333333961383336306465336465613831353435313530376464616539 3765393063303065323466663330646232363065316666310a373062303133376339633831303033 34313534383962613632303761636632623932653062343839613639653635643365616233313365 3636616639313864300a353239373433313339613465326339313035633565353464356538653631 63346434383534643237663862353361366632613634333231316334363939396461326561643336 3430633534303935646264633034383966336232303365383763
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*_ 변수가 성공적으로 설치되도록 설정됩니다.
참고인벤토리 파일 내에서 설정할 수 있는 다양한 값에 대한 자세한 내용은 다음을 참조하십시오. 인벤토리 파일 설정
- 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 관리자로서,
- Splunk 대시보드에 로그인합니다.
- 설정 → 데이터 입력 → HTTP 이벤트 수집기 를 클릭합니다.
- 오른쪽 상단에 있는 글로벌 설정을 클릭합니다.
- 모든 토큰 토글 옵션에서 Enabled (기본값)를 선택합니다.
-
모든 HEC 토큰 의 기본 소스 유형 (예:
_json
)을 선택합니다. - Splunk 배포에서 HTTPS를 사용하는 경우 SSL 활성화를 확인합니다.
- HTTP 포트 번호를 통해 HTTP 입력 전용 포트를 설정합니다. 기본값은 8088입니다.
- 저장을 클릭합니다.
그림 9.1. 글로벌 설정
Splunk 배포에서 포트 8088(또는 할당된 포트)이 열려 있는지 확인합니다.
Splunk 배포에서 HEC를 사용하면 Splunk를 사용한 자동화 컨트롤러 인증에 사용할 HEC 토큰을 생성합니다.
HTTP를 통해 데이터를 수신하기 위해 토큰을 구성하는 방법에는 다른 방법이 있지만 다음은 이 참조 환경에 사용되는 구성 설정입니다.
HEC에 대한 자세한 내용은 HTTP 이벤트 수집기를 참조하십시오.
- 설정 → 데이터 추가를 클릭합니다.
- 페이지 하단에서 모니터 를 선택합니다.
- HTTP 이벤트 수집기 를 클릭합니다.
- 이름 필드에 토큰 이름을 입력하십시오 (예: AAP)
- Source Type 을 Select 로 변경하고 드롭다운에 _json 을 입력합니다.
- 인덱스 내에서 ansible 이라는 레이블이 지정된 인덱스를 만듭니다.
선택한 항목 상자에 새로 생성된 인덱스를 추가합니다.
오른쪽 상단에 있는 검토 를 클릭합니다.
- Submit 을 클릭합니다.
Ansible Automation Platform에서 Splunk를 인증하는 데 사용할 생성된 토큰 값을 저장
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 환경에서 다음을 수행합니다.
-
Ansible Automation Platform 대시보드에 관리자로 로그인합니다.
- 페이지 하단으로 스크롤하여 설정을 클릭합니다.
시스템 에서 로깅 설정을 선택합니다.
로깅 수집기 내에서 로그를 보내야 하는 위치를 입력합니다.
이 Splunk 환경은 https://splunk.example.com:8088/services/collector/event사용
참고기본 8088을 사용하지 않는 경우 위치 프로토콜(HTTP/HTTPS) 및 포트를 수정합니다.
- 로깅 수집기 유형 내에서 드롭다운에서 스 플루크를 선택합니다.
- 로깅 수집기 암호/토큰 내에서 이전에 생성한 HEC 토큰을 복사하여 붙여넣습니다.
- 로깅 수집기 프로토콜 내에서 드롭다운에서 HTTPS/HTTP 를 선택합니다.
- 로깅 수집기 수준 임계값 내에서 사용자 환경의 로깅 수준을 선택합니다(예: INFO).
그림 9.2. 참조 환경 로깅 설정
위의 설정에는 Splunk를 사용하여 로깅할 수 있는 최소값이 포함되어 있습니다. 환경에 가장 적합하도록 로깅 설정을 조정합니다.
완료되면 사이트 2에서 로깅 기능 구성을 반복합니다. 이렇게 하면 두 사이트에서 모두 동일한 중앙 집중식 로깅 환경을 사용할 수 있습니다.
9.3. Splunk로 전송된 이벤트 확인
마지막으로 Ansible Automation Platform 이벤트가 Splunk로 적절하게 전송되었는지 확인합니다. 이를 위해 Ansible Automation Platform 자동화 컨트롤러를 통해 임시 명령을 실행하여 확인합니다.
Ansible Automation Platform 대시보드 내에서
- 리소스 → 인벤토리에서 데모 인벤토리를 선택합니다.
- 세부 정보 에서 호스트 를 선택합니다.
- Run Command 버튼을 클릭합니다.
- Run command Details window 섹션에서 드롭다운에서 모듈 ping 을 선택하고 Next 를 클릭합니다.
- Run command Execution Environment 섹션에서 Default execution environment 를 선택하고 Next 를 클릭합니다.
- Run command Credential 섹션에서 Demo Credential 을 선택하고 Next 를 클릭합니다.
- Run command Preview 섹션에서 blue Launch 버튼을 클릭합니다.
제공된 출력은 다음과 같습니다.
localhost | SUCCESS => { "changed": false, "ping": "pong" }
이제 Splunk 대시보드로 이동하여 검색에서 Splunk 내에서 Ansible Automation Platform 이벤트가 트리거되었는지 확인합니다.
검색에 다음과 유사한 이벤트가 표시되어야 합니다.
각 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 개인 액세스 토큰 생성
자동화 컨트롤러와 함께 사용할 개인 액세스 토큰(PAT)을 생성합니다.
- GitHub 계정의 프로필 설정에서 설정을 클릭합니다.
개인 설정 아래에서 개발자 설정을 클릭합니다.
- 개발자 설정에서 개인 액세스 토큰을 클릭합니다.
- 개인 액세스 토큰 화면에서 새 토큰 생성 버튼을 클릭합니다.
- 메시지가 표시되면 GitHub 계정 암호를 입력하여 계속합니다.
- 노트 필드에 이 PAT의 용도에 대한 간략한 설명을 입력합니다.
- 만료 드롭다운에서 만료 를 선택합니다.
범위 필드에서 자동화 컨트롤러 Webhook는 초대를 제외하고 리포지터리 범위 액세스 권한만 있으면 됩니다. 다른 범위에 대한 정보를 보려면 테이블 바로 위에 있는 링크를 클릭하여 문서에 액세스합니다.
페이지 하단에서 토큰 생성 버튼을 클릭합니다.
주의토큰이 생성되면 이후 단계에서 Ansible Automation Platform 자동화 컨트롤러 클러스터에서 사용되므로 PAT를 복사해야 합니다. GitHub에서는 이 토큰에 다시 액세스할 수 없습니다.
GitHub 리포지토리 생성
PAT를 배치하면 다음 단계는 리포지토리를 변경할 때 GitHub Webhook에서 트리거할 Git 리포지토리를 생성하는 것입니다.
자동화 컨트롤러 구성을 쉽게 업데이트하거나 수정할 수 있으므로 이 참조 환경은 redhat_cop.controller_configuration 이라는 Ansible 컬렉션을 활용합니다.
이 Ansible 컬렉션을 사용하면 컨트롤러 컬렉션 모듈을 사용하여 Ansible 역할을 통해 Ansible 컨트롤러 서버와 쉽게 상호 작용할 수 있습니다.
이 컬렉션의 지원을 통해 기존의 이러한 역할을 사용하여 모든 사이트에서 자동화 컨트롤러 환경을 수정하거나 업데이트할 수 있습니다.
redhat_cop.controller_configuration 컬렉션은 커뮤니티 프로젝트이며 Red Hat에서 공식적으로 지원하지 않습니다.
GitHub에서 새 리포지토리를 생성합니다.
적절한 소유자를 선택하고 리포지토리 이름을 제공해야 합니다.
- 이 참조 환경에서는 리포지토리 이름 aap_refarch 를 사용합니다.
- 리포지토리를 설명하는 선택적 설명을 제공합니다.
리포지토리를 공용 또는 프라이빗으로 설정합니다.
- 이 참조 환경은 리포지토리를 공용 으로 설정합니다.
- README 파일 추가로 리포지토리를 초기화합니다.
- 리포지토리 생성 버튼을 클릭합니다.
새로 생성된 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 사이트에서 다음을 수행합니다.
- Ansible Automation Platform 자동화 컨트롤러 대시보드에 로그인
리소스→ 인증 정보 에서 파란색 추가 버튼을 클릭합니다.
- 이름 제공 (예: GitHub PAT)
- 인증 정보 유형으로 GitHub 개인 액세스 토큰 을 선택합니다.
- 유형 세부 정보 내에서 GitHub에서 이전에 생성된 토큰을 사용하여 시크릿을 추가합니다.
저장을 클릭합니다.
참고이 인증 정보의 이름은 GitHub에 다시 게시되는 작업 템플릿에서 사용되므로 기록해 두십시오.
GitHub PAT 인증 정보 세트를 사용하여 기존 Ansible Automation Platform 환경에 대한 두 번째 인증 정보를 생성합니다.
리소스→ 인증 정보 에서 파란색 추가 버튼을 클릭합니다.
- AAP_Site1과 같은 이름을 입력하십시오.
- Red Hat Ansible Automation Platform 을 인증 정보 유형으로 제공합니다.
유형 세부 정보 내에서 적절한 세부 정보를 추가합니다.
- Red Hat Ansible Automation Platform (예: controlplane-cluster.site1.example.com)
- 사용자 이름 (예: admin)
- 암호( 예: redhat)
- SSL 인증서가 서명된 경우 옵션에서 Verify SSL 을 선택해야 합니다.
- 저장을 클릭합니다.
Ansible Automation Platform 사이트 2에서 이 섹션을 반복합니다.
controlPlane-cluster.site1.example.com은 이 참조 환경이 로드 밸런서를 활용하므로 사용됩니다. 이 참조 환경에서는 로드 밸런서의 설정이 범위를 벗어납니다.
코드 프로젝트로 구성 생성
코드 프로젝트로 구성의 목적은 코드 리포지토리가 실행될 때 구성에 업데이트할 때마다 자동으로 실행되는 작업 템플릿이 포함된 작업 흐름을 생성하는 것입니다.
이렇게 하면 변수 설정과 같은 변경을 수행할 때 Git 리포지토리 플레이북은 다양한 자동화 컨트롤러 구성에 적절한 역할을 실행합니다.
이 섹션에서는 위 작업을 수행하기 위해 프로젝트, 작업 흐름 및 작업 템플릿을 생성합니다.
Ansible Automation Platform 사이트 1대 대시보드 내에서
- 리소스→ 프로젝트에서 파란색 추가 버튼을 클릭합니다.
- 이름 제공(예: Configuration as Code Project)
- 조직으로 기본값 선택
- 실행 환경으로 기본 실행 환경을 선택합니다 .
- 소스 제어 인증 정보유형으로 Git 선택
유형 세부 정보 내에서,
- 소스 제어 URL 추가 (GitHub 리포지토리)
옵션내
- 정리,삭제,시작 시 버전 업데이트를선택합니다.
- 저장을 클릭합니다.
다음으로 작업 흐름 템플릿을 생성합니다.
- 리소스→ 템플릿에서 파란색 추가 → 워크플로우 추가 템플릿을 클릭합니다.
- 이름 제공(예: Configuration as Code Workflow)
옵션 내에서 확인 표시 Webhook 활성화
- Webhook 세부 정보 에서 Webhook 서비스로 GitHub 를 선택합니다.
- Webhook 세부 정보 내에서 이전에 Webhook 자격 증명 으로 생성된 GitHub PAT 토큰을 선택합니다(예: GitHub PAT).
- 저장을 클릭합니다.
- Please click the Start button to start window, click the Save at the top right corner에서 시작 버튼을 클릭합니다.
- 나중에 사용할 Webhook URL 및 Webhook 키를 복사합니다.
Ansible Automation Platform 사이트 2에서 위의 프로세스를 반복합니다.
리포지토리에 대한 GitHub Webhook 활성화
Ansible Automation Platform 워크플로 템플릿이 생성되고 필요한 파일이 있는 GitHub 리포지토리를 사용하면 다음 단계는 리포지토리에 대한 Webhook(예: aap_refarch )를 활성화하는 것입니다.
- GitHub 리포지토리의 홈페이지에서 Settings 탭을 선택합니다.
설정 탭에서 Webhook 를 선택합니다.
- Webhook 섹션 내에서 Webhook 추가 버튼을 선택합니다.
- Payload URL (워크플로우의 URL)을 입력합니다.
- 콘텐츠 유형 드롭다운을 application/json 으로 변경합니다.
- Secret (워크플로우의 Webhook 키)을 입력합니다.
기본값을 푸시 이벤트를 사용하도록 두고 Add webhook 버튼을 클릭합니다.
주의기본적으로 GitHub는 페이로드를 전달할 때 SSL 인증서를 확인합니다. 자동화 컨트롤러 SSL 인증서가 서명 되지 않은 경우SSL 확인 기능을 비활성화하십시오.
Ansible Automation Platform 사이트 2에서 위의 프로세스를 반복합니다.
코드 작업 템플릿으로 구성 생성
코드 프로젝트로 구성에 대해 생성할 작업 템플릿은 Git 리포지토리로 업데이트할 때마다 playbook.yml 파일을 자동으로 실행합니다.
이렇게 하면 구성 변경이 필요할 때 Ansible Automation Platform 컨트롤러 API를 사용하여 적절하게 변경할 수 있습니다. 모든 Ansible Automation Platform 사이트에서 동일한 방법론을 결합하면 구성된 사이트 전체에서 모든 변경 사항이 글로벌화됩니다.
- 리소스→ 템플릿에서 파란색 추가 → 작업 템플릿 추가 를 클릭합니다.
- 이름 제공(예: Configuration as Code Job)
- 작업 유형으로 실행을 선택합니다.
- 인벤토리로 데모 인벤토리선택
- 프로젝트로 구성을 Code Project 로 선택합니다.
- 실행 환경으로 기본 실행 환경을 선택합니다 .
- Playbook으로 playbook.yml 을 선택합니다.
- 인증 정보를 선택하고 머신에서 Red Hat Ansible Automation Platform으로 카테고리 를 전환
- Ansible Automation Platform 사이트에 대한 적절한 인증 정보(예: AAP_Site1)를 선택합니다.
- 옵션 내에서 Webhook 사용을 선택합니다.
- Webhook 서비스로 GitHub 를 선택합니다.
- 이전에 Webhook 인증 정보로 생성된 GitHub PAT 토큰을 선택합니다(예: GitHub PAT)
- 저장을 클릭합니다.
Ansible Automation Platform 사이트 2에서 위의 프로세스를 반복합니다.
생성된 구성을 코드 워크플로로 업데이트
이전에는 코드 워크플로로 구성 을 생성했습니다. 이 워크플로의 목적은 코드 프로젝트로 구성을 항상 동기화하고 리포지토리를 변경할 때마다 코드 작업으로 구성을 실행하는 것입니다.
- 리소스→ 템플릿 아래에서 템플릿을 선택합니다. 예를 들어 Configuration as Code Workflow
- 세부 정보 섹션에서 시각화 도구를 선택하고 녹색 시작을 클릭합니다.
- Node Type 의 경우 Project Sync 를 선택하고 적절한 프로젝트(예: Configuration as Code Project )를 선택하고 저장을 클릭합니다.
- Configuration(구성)을 Code Project로 마우스로 가리키고 더하기 "+" 기호를 선택합니다.
- 노드 추가 창에서 이 노드를 실행해야 할 때 Always as to를 선택하고 Next 를 클릭합니다.
- 노드 유형으로 구성을 코드 작업으로 선택하고 저장을 클릭합니다.
- 시각화 도구로 다시 가져온 후 오른쪽 상단에 있는 저장 버튼을 선택합니다.
구성을 코드 설정으로 확인
redhat_cop.controller_configuration 에 이미 포함된 역할이 많이 있으므로 적절한 yaml 로 group_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. 서브스크립션 매니페스트 생성
서브스크립션 매니페스트를 성공적으로 생성하려면 다음을 수행합니다.
- access.redhat.com 에 로그인하여 왼쪽 상단 모서리에서 서브스크립션 을 클릭합니다.
- 서브스크립션 할당 탭을 선택합니다.
New Subscription allocation 이라는 레이블이 지정된 버튼을 선택합니다.
Create a New subscription allocation page에서 Name 을 입력하고 Type (유형)에 대해 드롭다운 상자에서 Subscription Asset Manager 1.4 를 선택하고 Create 를 클릭합니다.
- 생성된 서브스크립션 탭을 선택하고 Ansible Automation Platform 서브스크립션 및 제공할 자격 수를 선택합니다.
세부 정보 탭을 클릭하고 자격 수가 올바른지 검토하고 Export Manifest 버튼을 선택합니다.
Ansible Automation Platform 대시보드로 돌아가서 manifest.zip 가져오기로 돌아가서 다음을 클릭합니다.
- (권장) Red Hat 또는 Red Hat Satellite 인증 정보를 제공하여 Ansible Automation Platform에 대한 사용자 분석 및 Insights를 활성화하고 Next 를 클릭합니다.
- 최종 사용자 라이센스 계약에 동의합니다.
부록 E. 참고 자료
- Red Hat Ansible Automation Platform 설치 가이드
- Tejal에 Ansible Tower 로그를 집계하여 Splunk에 로그 적용
- Ansible Tower 및 Splunk Enterprise by Leonardo Araujo를 사용하여 자동화 로그를 중앙 집중화
- Tower 로깅 및 집계
- Splunk 웹에서 HTTP 이벤트 수집기 설정 및 사용
- Splunk - Indexers 및 Indexers의 클러스터 관리
- Paul Leroux의 Private Automation Hub와의 공유
- Private Automation Hub Part II by#159 Leroux와 함께하는 시간
- Sean Sullivan의 코드로 Automation Controller Workflow Deployment
부록 F. Revision History
고친 과정 | ||
---|---|---|
고침 1.2-0 | 2022-05-03 | Anshul Behl,Roger Lopez |
| ||
고침 1.1-0 | 2022-04-11 | Roger Lopez |
| ||
고침 1.0-0 | 2021-12-02 | Roger Lopez |
|