Wie kann ich den neuesten Build mit dem Ansible-Modul „win_get_url“ herunterladen?

Wie kann ich den neuesten Build mit dem Ansible-Modul „win_get_url“ herunterladen?

Ich versuche, dieneueste Installationsdateiaus unserem JFrog-Repository mit der folgenden Aufgabe:

- 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

Derzeit verweist die URL auf eine bestimmte Version (d. h. /20.100.999.4112/)
. Wie Sie sehen, enthält der Ordnername die Versionsnummer des Builds.
Wie kann ich diese Aufgabe so bearbeiten, dass jedes Mal die neueste Datei heruntergeladen wird?

Antwort1

Wie kann ich diese Aufgabe so bearbeiten, dass jedes Mal die neueste Datei heruntergeladen wird?

Ein minimales Beispiel-Playbook (... was der Arbeit in einer Produktionsumgebung ähnelt) wird die neueste Version zuerst abfangen

---
- 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] }}'

Bitte beachten Sie, dass es notwendig sein wird, die Parse- und Split-Aufgabe anzupassen, response.json.urium die korrekte filenameund versionbenutzerdefinierte Datenstruktur zu erhalten. Nachdem es heruntergeladen werden kann

  - 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"

Dokumentation

verwandte Informationen