Ansible win_get_url モジュールを使用して最新のビルドをダウンロードするにはどうすればよいですか?

Ansible win_get_url モジュールを使用して最新のビルドをダウンロードするにはどうすればよいですか?

ダウンロードしようとすると最新のインストールファイル次のタスクを使用して、JFrog リポジトリから取得します。

- name: Download Server.msi file from JFrog repository
  ansible.windows.win_get_url:
    url: "{{ jfrog_url }}/Product/20.100.999.4112/x64/Server.msi"
    dest: C:\Server.msi
    url_username: "{{ jfrog_username }}"
    url_password: "{{ jfrog_password }}"
    validate_certs: no

現在、URL は特定のバージョン (つまり/20.100.999.4112/)を指しています
。ご覧のとおり、フォルダー名にはビルドのバージョン番号が含まれています
。このタスクを編集して、毎回最新のファイルをダウンロードするにはどうすればよいでしょうか?

答え1

毎回最新のファイルをダウンロードするようにこのタスクを編集するにはどうすればよいでしょうか?

最小限のサンプルプレイブック(...これは本番環境での作業と似ています)は最新バージョンを最初にキャッチします

---
- hosts: localhost # controlnode.example.com
  become: false
  gather_facts: false
  
  vars:
  
    jfrog_url: artifactory.example.com
  
  tasks:

  - name: Get latest version from internal repository
    uri:
      url: "https://{{ jfrog_url }}/api/storage/Product/?lastModified"
      method: GET
      url_username: "{{ jfrog_username }}"
      url_password: "{{ jfrog_password }}"
      validate_certs: true
      return_content: true
      status_code: 200
      body_format: json
    register: response
    check_mode: false

  - set_fact:
      filename: '{{ response.json.uri.split("/")[8] }}'
      version: '{{ response.json.uri.split("-")[2] }}'

response.json.uri正しいカスタムデータ構造を取得するには、filenameの解析と分割タスクを調整する必要があることに注意してくださいversion。ダウンロード後

  - name: Download file from internal repository
    delegate_to: windows.example.com
    win_get_url:
      url: "https://{{ jfrog_url }}/Product/{{ filename }}"
      url_username: "{{ jfrog_username }}"
      url_password: "{{ jfrog_password }}"
      dest: "C:\Server-{{ version }}.msi"

ドキュメンテーション

関連情報