![Ansible win_get_url モジュールを使用して最新のビルドをダウンロードするにはどうすればよいですか?](https://rvso.com/image/769291/Ansible%20win_get_url%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E6%9C%80%E6%96%B0%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
ダウンロードしようとすると最新のインストールファイル次のタスクを使用して、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"
ドキュメンテーション