
Я пытаюсь скачатьпоследний установочный файлиз нашего репозитория 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"
Документация