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얻으려면 구문 분석 및 분할 작업을 조정해야 합니다 . 다운로드가 완료된 후filenameversion

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

선적 서류 비치

관련 정보