Ansible의 vmware_vm_shell에서 실행 한 명령 실행 완료를 기다리는 모듈을 만들어 보았습니다.

6302 단어 Ansiblevmwarepyvmomi
Ansible 모듈에서 vSphere API를 통해 게스트 운영 체제로 명령을 실행하는 모듈vmware_vm_shell이 있습니다.
이 모듈을 사용하여 명령을 실행하면 명령이 백그라운드에서 작동합니다.
모듈은 문제없이 명령이 백그라운드에서 작동했음을 확인할 수 있으면 처리가 완료됩니다.
따라서 백그라운드에서 실행 중인 프로세스의 실행을 기다리지 않습니다.
그래서 vmware_vm_shell 모듈에서 실행한 명령의 처리 완료를 기다리는 모듈을 만들어 보았습니다.

1. 과제의 복습


vmware_vm_shell 모듈에서 명령을 순차적으로 처리하는 경우 이전 명령이 완료된 후 다음 명령을 실행할 수 없습니다.
예를 들어, 다음 Playbook을 실행해 봅니다.
---
- name: VMware Module TEST
  hosts: localhost
  gather_facts: no
  tasks:
    - vmware_vm_shell:
        hostname: vcenter.local
        username: [email protected]
        password: secret
        validate_certs: no
        vm_id: devel
        vm_username: root
        vm_password: secret
        vm_shell: /root/loop.sh
        vm_shell_args: 3

이 Playbook에서는 devel이라는 VM에서 /root/loop.sh 3를 실행합니다.loop.sh 는 단순히 슬립만 하는 것입니다.
#!/usr/bin/bash
for (( i = 0; i <= $1; i++ )) ; do
  sleep 1
done

실행해 보겠습니다.



명령이 실행되어 백그라운드에서 작동하고 모듈 측 처리가 완료되었는지 확인할 수 있습니다.

2. vmware_vm_shell_wait 모듈



그래서 vmware_vm_shell 로 실행한 커멘드의 처리 완료를 기다리는 모듈 vmware_vm_shell_wait 를 만들어 보았습니다.

htps : // 기주 b. 코 m / 스키 - 쵸케 r / 오레 오레 - 안시 b ぇ / b ぉ b / 뭐 r / 모즈 s / c ㄉ . py

2-1. 사용법



2-1-1. 모듈 다운로드


$ curl -L https://raw.githubusercontent.com/sky-joker/ore-ore-ansible/master/modules/cloud/vmware/vmware_vm_shell_wait.py -O

2-1-2. Playbook


vmware_vm_shell에서 명령을 실행하고 vmware_vm_shell_wait에서 실행 완료를 기다리는 Playbook 예입니다.
---
- name: VMware Module TEST
  hosts: localhost
  gather_facts: no
  tasks:
    - vmware_vm_shell:
        hostname: vcenter.local
        username: [email protected]
        password: secret
        validate_certs: no
        vm_id: devel
        vm_username: root
        vm_password: secret
        vm_shell: /root/loop.sh
        vm_shell_args: 3

    - vmware_vm_shell_wait:
        hostname: vcenter.local
        username: [email protected]
        password: secret
        validate_certs: no
        vm_id: devel
        vm_username: root
        vm_password: secret
        vm_shell: /root/loop.sh
        vm_shell_args: 3

2-1-3. 실행하기





백그라운드에서 실행된 명령 처리가 완료되었는지 확인하여 vmware_vm_shell_wait 처리가 완료되었는지 확인할 수 있습니다 :-)

좋은 웹페이지 즐겨찾기