Como posso baixar a versão mais recente com o módulo Ansible win_get_url?

Como posso baixar a versão mais recente com o módulo Ansible win_get_url?

eu tento baixar oarquivo de instalação mais recentedo nosso repositório JFrog com a seguinte tarefa:

- 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

Atualmente, o URL aponta para uma versão específica (ou seja /20.100.999.4112/)
Como você pode ver, o nome da pasta contém o número da versão da compilação.
Como posso editar esta tarefa de forma que ela baixe o arquivo mais recente a cada vez?

Responder1

Como posso editar esta tarefa de forma que ela baixe o arquivo mais recente a cada vez?

Um manual de exemplo mínimo (... que é semelhante ao trabalho em um ambiente de produção) capturará a versão mais recente primeiro

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

Observe que será necessário ajustar a tarefa de análise e divisão response.json.uripara obter a estrutura de dados correta filenamee versionpersonalizada. Depois que ele puder ser baixado

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

Documentação

informação relacionada