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.cfgroles_path 옵션이 Ansible 역할의 위치(/usr/share/ansible/roles)를 가리키는지 확인합니다.
  • Playbook을 실행하는 머신에 Python SDK가 설치되어 있는지 확인합니다.

Ansible 역할을 사용하여 Red Hat Virtualization 구성

  1. Red Hat Virtualization Manager 사용자 암호를 저장할 파일을 작업 디렉터리에 만듭니다.

    # cat passwords.yml
      ---
    engine_password: youruserpassword
  2. 사용자 암호를 암호화합니다. Vault 암호를 요청합니다.

    # ansible-vault encrypt passwords.yml
    New Vault password:
    Confirm New Vault password:
  3. 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
    참고

    원하는 경우 이러한 변수를 플레이북에 직접 추가할 수 있습니다.

  4. 플레이북을 생성합니다. 이를 단순화하기 위해 /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
  5. 플레이북을 실행합니다.

    # ansible-playbook --ask-vault-pass rhv_infra.yml

ovirt-datacenters Ansible 역할을 사용하여 mydatacenter 라는 데이터 센터를 생성합니다.