Ansible vmware_guest_file_operation 大容量ファイルをコピー失敗 urlopen error The write operation timed out

Ansible vmware_guest_file_operation 大容量の10MBを超えるファイルをコピー失敗 urlopen error The write operation timed outの警告がでる事象があるようです。

 

30 MB のファイルを VM にコピーするときのタイムアウト エラー。

問題の種類
バグレポート
コンポーネント
vmware_guest_file_operation

アンシブルバージョン
ansible [core 2.12.5]
python version = 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
jinja version = 3.1.2
libyaml = True

コレクションバージョン
# /usr/local/lib/python3.8/dist-packages/ansible_collections
Collection       Version
---------------- -------
community.vmware 1.18.0

# /root/.ansible/collections/ansible_collections
Collection       Version
---------------- -------
community.vmware 2.4.0
#

構成
DEFAULT_LOG_PATH(/etc/ansible/ansible.cfg) = /var/log/ansible.log
DEFAULT_STDOUT_CALLBACK(/etc/ansible/ansible.cfg) = json
HOST_KEY_CHECKING(/etc/ansible/ansible.cfg) = False

OS / 環境
Debian を使用した Docker コンテナ

YAML ファイル
---
- hosts: localhost
  gather_facts: no
  become: false
  connection: localhost

  tasks:
    - name: copy file to vm
      vmware_guest_file_operation:
        hostname: "{{ esxi_host }}"
        username: "{{ esxi_username }}"
        password: "{{ esxi_password }}"
        datacenter: "{{ datacenter_name }}"
        vm_id: "{{ vm_name }}"
        validate_certs: "{{ validate_certs }}"
        vm_username: "{{ vm_username }}"
        vm_password: "{{ vm_password }}"
        copy:
            src: "{{ src }}"
            dest: "{{ dest }}"
            overwrite: False
      delegate_to: localhost

 

 

 

 

実績
30 MB のファイルをコピーしようとすると、タイムアウト エラーが発生します。すべてが正常に開始されますが、数秒後に次のエラーメッセージが表示されます。実際に vm に転送されるのは、30 MB のうち 10 MB だけです。
同じモジュールを使用して vm からファイルをフェッチすると、正常に機能しました。

 

"msg": "problem during file transfer, http message:{'url': 'https://{{ip here}}/guestFile?id=526&token=5258550d-69f6-ccbb-be4e-16a7aec674df526', 'status': -1, 'msg': 'Request failed: <urlopen error The write operation timed out>'}"

 

以下のメソッドにタイムアウトパラメータを追加してみました。

resp, info = urls.fetch_url(self.module, url, data=data, method="PUT", timeout=10000)

 

そして、それは今も機能しているようです。これが正しい解決策なのか、それとも何か間違ったことをしているのかはわかりませんが。

 

 

こちらに解決したとあります。

https://github.com/ansible-collections/community.vmware/pull/1513

 

最新のAnsibleならこの問題は発生しないと思われます。

 

Acer公式 モニター EK240YCbi 23.8インチ VA 非光沢 フルHD 5ms(GTG)75Hz HDMI AMD FreeSync 広い視野角178° フリッカーレス ブルーライト軽減 メーカー3年保証