Ansible VMware 모듈 병렬 실행

5821 단어 Ansiblevmware
Ansible VMware 모듈은 vSphere API (SOAP)를 사용하여 조작하는 제작되었습니다.
접속처는 vCenter 1대에 대해 복수의 VM을 조작하는 경우, 보통으로 Playbook을 쓰면 싱글 처리로 움직여 버리고 있었으므로 병렬로 움직이는 방식에 대해 기록해 둡니다.

1. VMware 모듈



이 예에서는 vmware_guest_file_operation 모듈을 예로 사용합니다.

htp : // cs. 안시 bぇ. 이 m/안시 bぇ/ぁ st/모즈 s/vm해_구에 st_후에_오페라치온_모즈. html # vm 우리 굿 st ぃ

1-1. 싱글 처리에 대해서



문서에 따라 Playbook을 만들어 봅니다.
---
- name: VMware Module Test
  hosts: localhost
  gather_facts: no
  tasks:
    - name: copy file to guest os
      vmware_guest_file_operation:
        hostname: vCenterIP or FQDN
        username: [email protected]
        password: secret
        validate_certs: no
        vm_id: "{{ item }}"
        vm_username: root
        vm_password: secret
        copy:
          src: ./testfile
          dest: /root/upload/testfile
          overwrite: False
      with_items:
        - devel
        - devel2

이 Playbook에서는 devel devel2에 대해 testfile를 VM의 게스트 OS에 복사합니다.
실제로 실행하면 다음과 같습니다.



화면 왼쪽 상단은 devel이고 오른쪽 상단은 devel2입니다.with_items 에서는 하나의 태스크가 끝나면 다음 태스크라고 하는 순서대로 실행되는 것을 알 수 있습니다.
이것이라고 하나하나 실행해 나가므로 VM수에 비례하여 시간이 걸립니다.

1-2. 병렬 처리에 대해서



병렬 처리로 하는 예입니다.inventory 파일을 사용하여 병렬화해 봅니다.
다음은 inventory 파일의 예입니다.
[vms]
devel ansible_connection=local
devel2 ansible_connection=local

Playbook에서 vm_id를 매직 변수 inventory_hostname로 지정합니다.
---
- name: VMware Module Test
  hosts: vms
  gather_facts: no
  tasks:
    - name: copy file to guest os
      vmware_guest_file_operation:
        hostname: vCenterIP or FQDN
        username: [email protected]
        password: secret
        validate_certs: no
        vm_id: "{{ inventory_hostname }}"
        vm_username: root
        vm_password: secret
        copy:
          src: ./testfile
          dest: /root/upload/testfile
          overwrite: False

실제로 실행하면 병렬로 업로드되어 있음을 알 수 있습니다.



2. 주의



vSphere API를 통해 파일을 게스트 OS로 복사할 때 VMware Tools가 실행 중이어야 합니다.
또한 한 번 vCenter/ESXi를 통해 게스트 OS에 복사하기 때문에 오버헤드가 크기 때문에 크기가 큰 파일이나 한 번에 대량 연결을 하면 부하가 우려됩니다.
※ 큰 크기의 파일의 복사는 정직 느립니다.

좋은 웹페이지 즐겨찾기