Red Hat Ansible Automation Platform 운영 가이드
Ansible Automation Platform 설치를 원활하게 배포하기 위한 설치 구성 게시
초록
머리말
Red Hat Ansible Automation Platform을 설치한 후 배포가 원활하게 실행되도록 시스템에 추가 구성이 필요할 수 있습니다. 이 가이드에서는 Red Hat Ansible Automation Platform을 설치한 후 수행할 수 있는 구성 작업에 대한 절차를 제공합니다.
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
Red Hat의 기술 콘텐츠에 대한 귀하의 피드백에 감사드리며, 귀하가 생각하는 것을 알려 주시기 바랍니다. 주석을 추가하거나, 인사이트를 제공하거나, 오타를 수정하거나, 질문을 하려면 문서에서 직접 이 작업을 수행할 수 있습니다.
Red Hat 계정이 있어야 하며 고객 포털에 로그인해야 합니다.
고객 포털에서 문서 피드백을 제출하려면 다음을 수행하십시오.
- 다중 페이지 HTML 형식을 선택합니다.
- 문서 오른쪽 상단에 있는 피드백 버튼을 클릭합니다.
- 피드백을 제공하려는 텍스트 섹션을 강조 표시합니다.
- 강조 표시된 텍스트 옆에 있는 피드백 추가 대화 상자를 클릭합니다.
- 페이지 오른쪽에 있는 텍스트 상자에 피드백을 입력한 다음 제출을 클릭합니다.
피드백을 제출할 때마다 추적 문제가 자동으로 생성됩니다. Submit 을 클릭한 후 표시되는 링크를 열고 문제 모니터링을 시작하거나 의견을 더 추가합니다.
1장. Red Hat Ansible Automation Platform 활성화
Red Hat Ansible Automation Platform은 사용 가능한 서브스크립션 또는 서브스크립션 매니페스트를 사용하여 Ansible Automation Platform 사용을 승인합니다. 서브스크립션을 얻으려면 다음 중 하나를 수행할 수 있습니다.
- Ansible Automation Platform을 시작할 때 Red Hat 고객 또는 Satellite 인증 정보를 사용합니다.
- Red Hat Ansible Automation Platform 인터페이스를 사용하거나 Ansible 플레이북에서 수동으로 서브스크립션 매니페스트 파일을 업로드합니다.
1.1. 인증 정보를 사용하여 활성화
Ansible Automation Platform이 처음 시작되면 Ansible Automation Platform 서브스크립션 화면이 자동으로 표시됩니다. Red Hat 인증 정보를 사용하여 서브스크립션을 Ansible Automation Platform으로 직접 검색하고 가져올 수 있습니다.
프로시저
- Red Hat 사용자 이름과 암호를 입력합니다.
서브스크립션 가져오기 를 클릭합니다.
참고클러스터 노드가 서브스크립션 관리자를 통해 Satellite에 등록된 경우 Satellite 사용자 이름과 암호를 사용할 수도 있습니다.
- 최종 사용자 라이센스 계약을 검토하고 최종 사용자 라이센스 계약에 동의함을 선택합니다.
- 추적 및 분석 옵션은 기본적으로 확인됩니다. 이러한 선택 사항은 Red Hat이 훨씬 더 나은 사용자 환경을 제공하여 제품을 개선하는 데 도움이 됩니다. 옵션을 선택 해제하여 옵트아웃할 수 있습니다.
- 제출을 클릭합니다.
- 서브스크립션이 승인되면 라이센스 화면이 표시되고 Ansible Automation Platform 인터페이스 대시보드로 이동합니다. 설정 아이콘 Cryostat를 클릭하고 설정 화면에서 라이센스 탭을 선택하여 라이센스 화면으로 돌아갈 수 있습니다.
1.2. 매니페스트 파일로 활성화
서브스크립션 매니페스트가 있는 경우 Red Hat Ansible Automation Platform 인터페이스를 사용하거나 Ansible 플레이북에서 수동으로 매니페스트 파일을 업로드할 수 있습니다.
사전 요구 사항
Red Hat 고객 포털에서 내보낸 Red Hat 서브스크립션 매니페스트 파일이 있어야 합니다. 자세한 내용은 매니페스트 파일 가져오기를 참조하십시오.
인터페이스를 사용하여 업로드
- 매니페스트 파일을 생성하고 다운로드하는 전체 단계
- Red Hat Ansible Automation Platform에 로그인합니다.
- 매니페스트 파일을 즉시 입력하라는 메시지가 표시되지 않으면 설정 → 라이센스 로 이동합니다.
- Username 및 Password 필드가 비어 있는지 확인합니다.
- 찾아보기 를 클릭하고 매니페스트 파일을 선택합니다.
- 다음을 클릭합니다.
BROWSE 버튼이 라이센스 페이지에서 비활성화된 경우 USERNAME 및 PASSWORD 필드를 지웁니다.
수동으로 업로드
Red Hat Ansible Automation Platform 인터페이스를 사용하여 서브스크립션 정보를 적용하거나 업데이트할 수 없는 경우 ansible.controller 컬렉션의 license 모듈을 사용하여 Ansible 플레이북에 서브스크립션 매니페스트를 수동으로 업로드할 수 있습니다.
- name: Set the license using a file license: manifest: "/tmp/my_manifest.zip"
2장. 매니페스트 파일 가져오기
Red Hat 서브스크립션 관리의 서브스크립션 할당 섹션에서 서브스크립션 매니페스트를 받을 수 있습니다. 서브스크립션 할당을 얻은 후 매니페스트 파일을 다운로드하여 업로드하여 Ansible Automation Platform을 활성화할 수 있습니다.
시작하려면 관리자 계정을 사용하여 Red Hat 고객 포털에 로그인하고 이 섹션의 절차를 따르십시오.
2.1. 서브스크립션 할당 생성
새 서브스크립션 할당을 생성하면 현재 오프라인 또는 Air-gapped 시스템에 대한 서브스크립션 및 인타이틀먼트를 별도로 설정할 수 있습니다. 이는 매니페스트를 다운로드하여 Ansible Automation Platform에 업로드하기 전에 필요합니다.
절차
- 서브스크립션 할당 페이지에서 새 서브스크립션 할당 을 클릭합니다.
- 나중에 찾을 수 있도록 할당 이름을 입력합니다.
- 관리 애플리케이션으로 Type: Satellite 6.8 을 선택합니다.
- 생성을 클릭합니다.
2.2. 서브스크립션 할당에 서브스크립션 추가
할당이 생성되면 Ansible Automation Platform을 올바르게 실행하는 데 필요한 서브스크립션을 추가할 수 있습니다. 매니페스트를 다운로드하여 Ansible Automation Platform에 추가하려면 이 단계가 필요합니다.
절차
- 서브스크립션 할당 페이지에서 서브스크립션을 추가할 서브스크립션 할당 의 이름을 클릭합니다.
- 서브스크립션 탭을 클릭합니다.
- 서브스크립션 추가를 클릭합니다.
- 추가할 Ansible Automation Platform 인타이틀먼트 수를 입력합니다.
- 제출을 클릭합니다.
검증
서브스크립션이 승인되면 서브스크립션 세부 정보가 표시됩니다. Compliant 상태는 서브스크립션이 서브스크립션 수 내에서 자동화된 호스트 수를 준수함을 나타냅니다. 그렇지 않으면 서브스크립션의 호스트 수를 초과했음을 나타내는 상태가 Out of Compliance 로 표시됩니다.
표시되는 기타 중요한 정보는 다음과 같습니다.
- 자동화된 호스트
- 라이센스 수를 사용하는 작업에 의해 자동화된 호스트 수
- 가져온 호스트
- 모든 인벤토리 소스를 고려한 호스트 수(남은 호스트에는 영향을 미치지 않음)
- 남아 있는 호스트
- 총 호스트 수에서 자동화된 호스트 수를 뺀 수
2.3. 매니페스트 파일 다운로드
할당이 생성되고 적절한 서브스크립션이 있는 경우 Red Hat 서브스크립션 관리에서 매니페스트를 다운로드할 수 있습니다.
절차
- 서브스크립션 할당 페이지에서 매니페스트를 생성하려는 서브스크립션 할당 의 이름을 클릭합니다.
- 서브스크립션 탭을 클릭합니다.
- Export Manifest 를 클릭하여 매니페스트 파일을 다운로드합니다.
파일이 기본 다운로드 폴더에 저장되므로 이제 Red Hat Ansible Automation Platform을 활성화하기 위해 업로드할 수 있습니다.
3장. Red Hat Ansible Automation Platform에 대한 프록시 지원 구성
프록시를 사용하여 트래픽과 통신하도록 Red Hat Ansible Automation Platform을 구성할 수 있습니다. 프록시 서버는 다른 서버의 리소스를 찾는 클라이언트의 요청에 대해 중개자 역할을 합니다. 클라이언트는 프록시 서버에 연결하여 다른 서버에서 일부 서비스 또는 사용 가능한 리소스를 요청하고 프록시 서버는 요청을 간소화하고 복잡성을 제어하는 방법으로 평가합니다. 다음 섹션에서는 지원되는 프록시 구성과 설정 방법에 대해 설명합니다.
3.1. 프록시 지원 활성화
자동화 컨트롤러는 프록시 서버 지원을 제공하기 위해 자동화 컨트롤러 설정의 REMOTE_HOST_HEADERS 목록을 통해 프록시된 요청(예: ALB, NLB, HAProxy, Squid, Squid, Nginx 및 tinyproxy)을 처리합니다. 기본적으로 REMOTE_HOST_HEADERS 는 ["REMOTE_ADDR", "REMOTE_HOST"] 로 설정됩니다.
프록시 서버 지원을 활성화하려면 자동화 컨트롤러의 설정 페이지에서 REMOTE_HOST_HEADERS 필드를 편집합니다.
절차
- 자동화 컨트롤러에서 Settings → Miscellaneous System 으로 이동합니다.
REMOTE_HOST_HEADERS 필드에 다음 값을 입력합니다.
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]
자동화 컨트롤러는 첫 번째 IP 주소가 있을 때까지 REMOTE_HOST_HEADERS 의 헤더 목록을 검색하여 원격 호스트의 IP 주소를 결정합니다.
3.2. 알려진 프록시
자동화 컨트롤러가 REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST'] 로 구성된 경우 X-Forwarded-For 의 값이 자동화 컨트롤러 앞에 있는 프록시/로드 밸런서에서 발생했다고 가정합니다. 프록시/로드 밸런서를 사용하지 않고 자동화 컨트롤러에 도달하거나 프록시에서 헤더의 유효성을 검사하지 않는 경우 X-Forwarded-For 의 값을 위조하여 원래 IP 주소를 위조할 수 있습니다. REMOTE _FOR를 사용하면 취약점이 발생합니다.
_HOST_HEADERS 설정에서 HTTP_X_FORARDED
이를 방지하려면 자동화 컨트롤러의 설정 메뉴에서 PROXY_IP_ALLOWED_LIST 필드를 사용하여 허용되는 알려진 프록시 목록을 구성할 수 있습니다. 알려진 프록시 목록에 없는 로드 밸런서와 호스트는 거부된 요청을 생성합니다.
3.2.1. 알려진 프록시 구성
자동화 컨트롤러에 대해 알려진 프록시 목록을 구성하려면 자동화 컨트롤러의 설정 페이지의 PROXY_IP_ALLOWED_LIST 필드에 프록시 IP 주소를 추가합니다.
절차
- 자동화 컨트롤러에서 Settings → Miscellaneous System 으로 이동합니다.
PROXY_IP_ALLOWED_LIST 필드에 아래 예제의 구문에 따라 자동화 컨트롤러에 연결할 수 있는 IP 주소를 입력합니다.
PROXY_IP_ALLOWED_LIST 항목 예
[ "example1.proxy.com:8080", "example2.proxy.com:8080" ]
-
PROXY_IP_ALLOWED_LIST는 목록의 프록시가 헤더 입력을 올바르게 제거하고 클라이언트의 실제 소스 IP와 동일한X-Forwarded-For값을 올바르게 설정해야 합니다. 자동화 컨트롤러는PROXY_IP_ALLOWED_LIST의 IP 주소 및 호스트 이름을 사용하여X-Forwarded-For필드에 스푸핑되지 않은 값을 제공할 수 있습니다. 다음 조건이 모두 충족되지 않는 한
HTTP_X_FOR을 'REMOTE_HOST_HEADERS'의 항목으로 구성하지 마십시오.- ssl 종료가 있는 프록시된 환경을 사용하고 있습니다.
-
프록시는 클라이언트 스푸핑을 방지하기 위해
X-Forwarded-For헤더의 종료 또는 검증을 제공합니다. -
/etc/tower/conf.d/remote_host_headers.py는 신뢰할 수 있는 프록시 또는 로드 밸런서의 원래 IP 주소만 포함하는PROXY_IP_ALLOWED_LIST를 정의합니다.
3.3. 역방향 프록시 구성
자동화 컨트롤러 설정의 REMOTE_HOST_HEADERS 필드에 HTTP_X_FORARDED _FOR를 추가하여 역방향 프록시 서버 구성을 지원할 수 있습니다. X-Forwarded-For (XFF) HTTP 헤더 필드는 HTTP 프록시 또는 로드 밸런서를 통해 웹 서버에 연결하는 클라이언트의 원래 IP 주소를 식별합니다.
절차
- 자동화 컨트롤러에서 Settings → Miscellaneous System 으로 이동합니다.
REMOTE_HOST_HEADERS 필드에 다음 값을 입력합니다.
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]
-
아래 행을
/etc/tower/conf.d/custom.py에 추가하여 애플리케이션이 올바른 헤더를 사용하는지 확인합니다.
USE_X_FORWARDED_PORT = True USE_X_FORWARDED_HOST = True
3.4. 고정 세션 활성화
기본적으로 Application Load Balancer는 선택한 로드 밸런싱 알고리즘에 따라 각 요청을 등록된 대상으로 개별적으로 라우팅합니다. 로드 밸런서 뒤에서 자동화 허브의 여러 인스턴스를 실행할 때 인증 오류를 방지하려면 고정 세션을 활성화해야 합니다. 고정 세션을 활성화하면 로드 밸런서에 구성된 쿠키와 일치하는 사용자 지정 애플리케이션 쿠키가 설정되어 고정성을 활성화합니다. 이 사용자 지정 쿠키는 애플리케이션에 필요한 모든 쿠키 속성을 포함할 수 있습니다.
추가 리소스
- 고정 세션 활성화에 대한 자세한 내용은 Application Load Balancer 의 Cryostat 세션을 참조하십시오.
면책 조항:이 노트에 포함된 외부 웹 사이트 링크는 편의를 위해서만 제공됩니다. Red Hat은 링크를 검토하지 않았으며 컨텐츠 또는 이용 가능 여부에 대해 책임을 지지 않습니다. 외부 웹 사이트에 대한 링크가 포함되어 있다고 해서 Red Hat이 해당 웹 사이트 또는 해당 엔티티, 제품, 서비스를 보증한다는 의미는 아닙니다. 사용자는 본인이 그러한 외부 사이트나 콘텐츠를 사용(또는 신뢰)하여 초래되는 어떠한 손실이나 비용에 대해 Red Hat이 어떠한 책임도 지지 않는 데 동의합니다.
4장. 자동화 컨트롤러 웹 소켓 연결 구성
websocket 구성을 nginx 또는 로드 밸런서 구성과 정렬하도록 자동화 컨트롤러를 구성할 수 있습니다.
4.1. 자동화 컨트롤러를 위한 WebSocket 구성
자동화 컨트롤러 노드는 시스템에 모든 websocket-emitted 메시지를 배포하기 위해 websockets를 통해 상호 연결됩니다. 이 구성 설정을 사용하면 모든 브라우저 클라이언트 websocket이 모든 자동화 컨트롤러 노드에서 실행될 수 있는 모든 작업을 구독할 수 있습니다. WebSocket 클라이언트는 특정 자동화 컨트롤러 노드로 라우팅되지 않습니다. 대신 모든 자동화 컨트롤러 노드는 웹 소켓 요청을 처리할 수 있으며 각 자동화 컨트롤러 노드는 모든 클라이언트에 대해 예정된 모든 websocket 메시지를 알고 있어야 합니다.
모든 자동화 컨트롤러 노드에서 /etc/tower/conf.d/websocket_config.py 에서 웹 소켓을 구성할 수 있으며, 변경 사항은 서비스를 다시 시작한 후 적용됩니다.
자동화 컨트롤러는 데이터베이스의 인스턴스 레코드를 통해 다른 자동화 컨트롤러 노드 검색을 자동으로 처리합니다.
자동화 컨트롤러 노드는 웹 소켓 트래픽을 신뢰할 수 있는 프라이빗 서브넷(오픈 인터넷 아님) 간에 브로드캐스트하도록 설계되었습니다. 따라서 대부분의 Ansible 플레이북 stdout으로 구성된 websocket 트래픽은 자동화 컨트롤러 노드 간에 암호화되지 않은 상태로 전송됩니다.
4.1.1. 다른 자동화 컨트롤러 노드의 자동 검색 구성
웹 소켓 연결을 구성하여 자동화 컨트롤러에서 데이터베이스의 인스턴스 레코드를 통해 다른 자동화 컨트롤러 노드의 검색을 자동으로 처리할 수 있습니다.
포트 및 프로토콜에 대한 자동화 컨트롤러 웹 소켓 정보를 편집하고 웹 소켓 연결을 설정할 때
True또는False로 인증서를 확인할지 여부를 확인합니다.BROADCAST_WEBSOCKET_PROTOCOL = 'http' BROADCAST_WEBSOCKET_PORT = 80 BROADCAST_WEBSOCKET_VERIFY_CERT = False
5장. 자동화 컨트롤러에서 사용성 분석 및 데이터 수집 관리
자동화 컨트롤러 사용자 인터페이스에서 설정을 선택하거나 변경하여 자동화 컨트롤러에서 사용성 분석 및 데이터 수집에 참여하는 방법을 변경할 수 있습니다.
5.1. 유용성 분석 및 데이터 수집
사용성 데이터 수집은 자동화 컨트롤러 사용자가 자동화 컨트롤러와 구체적으로 상호 작용하는 방식을 더 잘 이해하고, 향후 릴리스를 개선하고, 사용자 환경을 계속 간소화하기 위해 데이터를 수집할 수 있는 자동화 컨트롤러에 포함되어 있습니다.
자동화 컨트롤러 평가판 또는 자동화 컨트롤러 신규 설치를 설치하는 사용자만 이 데이터 수집에 옵트인됩니다.
추가 리소스
- 자세한 내용은 Red Hat 개인 정보 보호 정책을 참조하십시오.
5.1.1. 자동화 컨트롤러에서 데이터 수집 제어
설정 메뉴의 사용자 인터페이스 탭에서 참여 수준을 설정하여 자동화 컨트롤러에서 데이터를 수집하는 방법을 제어할 수 있습니다.
절차
- 자동화 컨트롤러에 로그인합니다.
- Settings → User Interface 로 이동합니다.
사용자 분석 추적 상태 드롭다운 목록에서 원하는 데이터 수집 수준을 선택합니다.
- off: 모든 데이터 수집을 차단합니다.
- 익명: 특정 사용자 데이터없이 데이터 수집을 활성화합니다.
- 세부 정보: 특정 사용자 데이터를 포함하여 데이터 수집을 활성화합니다.
- 저장을 클릭하여 설정을 적용하거나 취소 를 클릭하여 변경 사항을 삭제합니다.
6장. 자동화 컨트롤러 구성 파일에서 일반 텍스트 암호 암호화
자동화 컨트롤러 구성 파일에 저장된 암호는 일반 텍스트로 저장됩니다. /etc/tower/conf.d/ 디렉터리에 대한 액세스 권한이 있는 사용자는 데이터베이스에 액세스하는 데 사용되는 암호를 볼 수 있습니다. 디렉터리에 대한 액세스는 권한으로 제어되므로 보호되지만 일부 보안 결과는 이러한 보호가 부적절하다고 가정합니다. 해결책은 암호를 개별적으로 암호화하는 것입니다.
6.1. PostgreSQL 암호 해시 생성
절차
자동화 컨트롤러 노드에서 다음을 실행합니다.
# awx-manage shell_plus
그런 다음 python 프롬프트에서 다음을 실행합니다.
>>> from awx.main.utils import encrypt_value, get_encryption_key \ >>> postgres_secret = encrypt_value('$POSTGRES_PASS') \ >>> print(postgres_secret)참고$POSTGRES_PASS변수를 암호화하려는 실제 일반 텍스트 암호로 바꿉니다.출력은 다음과 유사해야 합니다.
$encrypted$UTF8$AESCBC$Z0FBQUFBQmtLdGNRWXFjZGtkV1ZBR3hkNGVVbFFIU3hhY21UT081eXFkR09aUWZLcG9TSmpndmZYQXFyRHVFQ3ZYSE15OUFuM1RHZHBqTFU3S0MyNEo2Y2JWUURSYktsdmc9PQ==
이러한 해시의 전체 값을 복사하여 저장합니다.
해시 값은
$encrypted$로 시작하며 다음 예와 같이 문자 문자열뿐만 아니라 다음과 같습니다.$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ==
$*_PASS값은 이미 인벤토리 파일의 일반 텍스트에 있습니다.
이 단계에서는 자동화 컨트롤러 구성 파일 내에서 일반 텍스트 암호를 대체하는 해시 값을 제공합니다.
6.2. Postgres 암호 암호화
다음 절차에서는 일반 텍스트 암호를 암호화된 값으로 교체합니다. 클러스터의 각 노드에서 다음 단계를 수행합니다.
절차
다음을 사용하여
/etc/tower/conf.d/postgres.py를 편집합니다.$ vim /etc/tower/conf.d/postgres.py
파일 상단에 다음 행을 추가합니다.
from awx.main.utils import decrypt_value, get_encryption_key
'PASSWORD' 뒤에 나열된 암호 값을 제거하고 다음 행으로 교체하여 제공된
$encrytpted 값을 자체 해시 값으로 바꿉니다.decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='),참고이 단계의 해시 값은
postgres_secret의 출력 값입니다.전체
postgres.py는 다음과 유사합니다.# Ansible Automation platform controller database settings. from awx.main.utils import decrypt_value, get_encryption_key DATABASES = { 'default': { 'ATOMIC_REQUESTS': True, 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'awx', 'USER': 'awx', 'PASSWORD': decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='), 'HOST': '127.0.0.1', 'PORT': 5432, } }
6.3. 자동화 컨트롤러 서비스 다시 시작
절차
모든 노드에서 암호화가 완료되면 다음을 사용하여 클러스터에서 서비스를 다시 시작합니다.
# automation-controller-service restart
- UI로 이동하여 모든 노드에서 작업을 실행할 수 있는지 확인합니다.