18장. Ansible을 사용하여 구성 작업 자동화
Ansible은 시스템 구성, 소프트웨어 배포, 롤링 업데이트를 수행하는 데 사용되는 자동화 툴입니다. Ansible에는 Red Hat Virtualization에 대한 지원이 포함되어 있으며 데이터 센터 설정 및 구성, 사용자 또는 가상 머신 작업과 같은 설치 후 작업을 자동화할 수 있는 Ansible 모듈을 사용할 수 있습니다.
Ansible은 REST API 및 SDK에 비해 Red Hat Virtualization 구성을 더 쉽게 자동화하고 다른 Ansible 모듈과 통합할 수 있는 방법을 제공합니다. Red Hat Virtualization에서 사용할 수 있는 Ansible 모듈에 대한 자세한 내용은 Ansible 설명서의 Ovirt 모듈을 참조하십시오.
Ansible Tower는 웹 인터페이스 및 Ansible용 REST API를 통해 액세스할 수 있는 그래픽으로 활성화된 프레임워크입니다. Ansible Tower에 대한 지원을 원한다면 Red Hat Virtualization 서브스크립션에 포함되지 않은 Ansible Tower 라이센스가 있어야 합니다.
Ansible은 Red Hat Virtualization과 함께 제공됩니다. Ansible을 설치하려면 Manager 시스템에서 다음 명령을 실행합니다.
# yum install ansible
대체 설치 지침은 Ansible 설명서 및 Ansible 사용에 대한 정보를 참조하십시오.
Ansible 플레이북을 실행할 때 관리자의 세부 정보 수준을 영구적으로 늘리려면 다음 행을 사용하여 /etc/ovirt-engine/engine.conf.d/
에 구성 파일을 만듭니다.
ANSIBLE_PLAYBOOK_VERBOSE_LEVEL=4
systemctl restart ovirt-engine
을 실행하여 파일을 생성한 후 Manager를 다시 시작해야 합니다.
18.1. Ansible 역할
Red Hat Virtualization 인프라의 다양한 부분을 구성하고 관리하는 데 도움이 되는 여러 Ansible 역할을 사용할 수 있습니다. Ansible 역할은 대규모 플레이북을 다른 사용자와 공유할 수 있는 작고 재사용 가능한 파일로 분할하여 Ansible 코드를 모듈화하는 방법을 제공합니다.
Red Hat Virtualization에서 사용할 수 있는 Ansible 역할은 다양한 내부 구성 요소로 분류됩니다. Ansible 역할에 대한 자세한 내용은 oVirt Ansible Roles 설명서를 참조하십시오. Ansible 역할로 설치된 문서는 18.1.1절. “Ansible 역할 설치” 을 참조하십시오.
18.1.1. Ansible 역할 설치
Red Hat Virtualization Manager 리포지토리에서 Red Hat Virtualization에 대한 Ansible 역할을 설치할 수 있습니다. 다음 명령을 사용하여 Manager 시스템에 Ansible 역할을 설치합니다.
# yum install ovirt-ansible-roles
기본적으로 역할은 /usr/share/ansible/roles 에 설치됩니다. ovirt-ansible-roles
패키지의 구조는 다음과 같습니다.
- /usr/share/ansible/roles - 역할을 저장합니다.
- /usr/share/doc/ovirt-ansible-roles/ - 예제, 기본 개요 및 권한 부여를 저장합니다.
- /usr/share/doc/ansible/roles/role_name - 역할과 관련된 문서를 저장합니다.
18.1.2. Ansible 역할을 사용하여 Red Hat Virtualization 구성
다음 절차에서는 Ansible 역할을 사용하여 Red Hat Virtualization을 구성하는 플레이북을 생성 및 실행하는 방법을 안내합니다. 이 예에서는 Ansible을 사용하여 로컬 시스템의 Manager에 연결하고 새 데이터 센터를 생성합니다.
사전 요구 사항
-
/etc/ansible/ansible.cfg 의
roles_path
옵션이 Ansible 역할의 위치(/usr/share/ansible/roles)를 가리키는지 확인합니다. - Playbook을 실행하는 머신에 Python SDK가 설치되어 있는지 확인합니다.
Ansible 역할을 사용하여 Red Hat Virtualization 구성
Red Hat Virtualization Manager 사용자 암호를 저장할 파일을 작업 디렉터리에 만듭니다.
# cat passwords.yml --- engine_password: youruserpassword
사용자 암호를 암호화합니다. Vault 암호를 요청합니다.
# ansible-vault encrypt passwords.yml New Vault password: Confirm New Vault password:
URL, 인증서 위치 및 사용자와 같은 관리자 세부 정보를 저장하는 파일을 생성합니다.
# cat engine_vars.yml --- engine_url: https://example.engine.redhat.com/ovirt-engine/api engine_user: admin@internal engine_cafile: /etc/pki/ovirt-engine/ca.pem
참고원하는 경우 이러한 변수를 플레이북에 직접 추가할 수 있습니다.
플레이북을 생성합니다. 이를 단순화하기 위해 /usr/share/doc/ovirt-ansible-roles/examples 의 예제를 복사하고 수정할 수 있습니다.
# cat rhv_infra.yml --- - name: RHV infrastructure hosts: localhost connection: local gather_facts: false vars_files: # Contains variables to connect to the Manager - engine_vars.yml # Contains encrypted
engine_password
variable using ansible-vault - passwords.yml pre_tasks: - name: Login to RHV ovirt_auth: url: "{{ engine_url }}" username: "{{ engine_user }}" password: "{{ engine_password }}" ca_file: "{{ engine_cafile | default(omit) }}" insecure: "{{ engine_insecure | default(true) }}" tags: - always vars: data_center_name: mydatacenter data_center_description: mydatacenter data_center_local: false compatibility_version: 4.1 roles: - ovirt-datacenters post_tasks: - name: Logout from RHV ovirt_auth: state: absent ovirt_auth: "{{ ovirt_auth }}" tags: - always플레이북을 실행합니다.
# ansible-playbook --ask-vault-pass rhv_infra.yml
ovirt-datacenters
Ansible 역할을 사용하여 mydatacenter
라는 데이터 센터를 생성합니다.