# win_get_url – Downloads file from HTTP, HTTPS, or FTP to node

- Synopsis

- Parameters

- Notes

- See Also

- Examples

- Return Values

- Status

## Synopsis

- Downloads files from HTTP, HTTPS, or FTP to the remote server.

- The remote server must have direct access to the remote resource.

- For non-Windows targets, use the get_url module instead.

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
checksum string added in 2.8 |  | If a checksum is passed to this parameter, the digest of the destination file will be calculated after it is downloaded to ensure its integrity and verify that the transfer completed successfully. This option cannot be set with checksum_url.

checksum_algorithm
string
added in 2.8

Choices:
- md5
- sha1 ←
- sha256
- sha384
- sha512

Specifies the hashing algorithm used when calculating the checksum of the remote and destination file.

checksum_url string added in 2.8 |  | Specifies a URL that contains the checksum values for the resource at url. Like `checksum`, this is used to verify the integrity of the remote transfer. This option cannot be set with checksum.

client_cert
string
added in 2.9

The path to the client certificate (.pfx) that is used for X509 authentication. This path can either be the path to the `pfx` on the filesystem or the PowerShell certificate path `Cert:\CurrentUser\My\<thumbprint>`.
The WinRM connection must be authenticated with `CredSSP` or `become` is used on the task if the certificate file is not password protected.
Other authentication types can set client_cert_password when the cert is password protected.

client_cert_password string added in 2.9 |  | The password for client_cert if the cert is password protected.
dest path / required |  | The location to save the file at the URL. Be sure to include a filename and extension as appropriate.

follow_redirects
string
added in 2.9

Choices:
- all
- none
- safe ←

Whether or the module should follow redirects.
`all` will follow all redirect.
`none` will not follow any redirect.
`safe` will follow only "safe" redirects, where "safe" means that the client is only doing a `GET` or `HEAD` on the URI to which it is being redirected.

force
boolean

Choices:
- no
- yes ←

If `yes`, will download the file every time and replace the file if the contents change. If `no`, will only download the file if it does not exist or the remote file has been modified more recently than the local file.
This works by sending an http HEAD request to retrieve last modified time of the requested resource, so for this to work, the remote web server must support HEAD requests.

force_basic_auth
boolean
added in 2.5

Choices:
- no ←
- yes

By default the authentication header is only sent when a webservice responses to an initial request with a 401 status. Since some basic auth services do not properly send a 401, logins will fail.
This option forces the sending of the Basic authentication header upon the original request.

headers dictionary added in 2.4 |  | Extra headers to set on the request. This should be a dictionary where the key is the header name and the value is the value for that header.
http_agent string added in 2.9 | Default: "ansible-httpget" | Header to identify as, generally appears in web server logs. This is set to the `User-Agent` header on a HTTP request.
maximum_redirection integer added in 2.9 | Default: 50 | Specify how many times the module will redirect a connection to an alternative URI before the connection fails. If set to `0` or follow_redirects is set to `none`, or `safe` when not doing a `GET` or `HEAD` it prevents all redirection.
method string added in 2.9 |  | This option is not for use with `win_get_url` and should be ignored.
proxy_password string |  | The password for proxy_username.
proxy_url string |  | An explicit proxy to use for the request. By default, the request will use the IE defined proxy unless use_proxy is set to `no`.

proxy_use_default_credential
boolean
added in 2.9

Choices:
- no ←
- yes

Uses the current user's credentials when authenticating with a proxy host protected with `NTLM`, `Kerberos`, or `Negotiate` authentication.
Proxies that use `Basic` auth will still require explicit credentials through the proxy_username and proxy_password options.
The module will only have access to the user's credentials if using `become` with a password, you are connecting with SSH using a password, or connecting with WinRM using `CredSSP` or `Kerberos with delegation`.
If not using `become` or a different auth method to the ones stated above, there will be no default credentials available and no proxy authentication will occur.

proxy_username string |  | The username to use for proxy authentication.
timeout integer added in 2.4 | Default: 30 | Specifies how long the request can be pending before it times out (in seconds). Set to `0` to specify an infinite timeout.
url string / required |  | The full URL of a file to download.
url_password string |  | The password for url_username. aliases: password
url_username string |  | The username to use for authentication. aliases: user, username

use_default_credential
boolean
added in 2.9

Choices:
- no ←
- yes

Uses the current user's credentials when authenticating with a server protected with `NTLM`, `Kerberos`, or `Negotiate` authentication.
Sites that use `Basic` auth will still require explicit credentials through the url_username and url_password options.
The module will only have access to the user's credentials if using `become` with a password, you are connecting with SSH using a password, or connecting with WinRM using `CredSSP` or `Kerberos with delegation`.
If not using `become` or a different auth method to the ones stated above, there will be no default credentials available and no authentication will occur.

use_proxy
boolean
added in 2.4

Choices:
- no
- yes ←

If `no`, it will not use the proxy defined in IE for the current user.

validate_certs
boolean
added in 2.4

Choices:
- no
- yes ←

If `no`, SSL certificates will not be validated.
This should only be used on personally controlled sites using self-signed certificates.

## Notes

Note

- If your URL includes an escaped slash character (%2F) this module will convert it to a real slash. This is a result of the behaviour of the System.Uri class as described in the documentation.

- Since Ansible 2.8, the module will skip reporting a change if the remote checksum is the same as the local local even when `force=yes`. This is to better align with get_url.

## See Also

See also

get_url – Downloads files from HTTP, HTTPS, or FTP to node

  The official documentation on the get_url module.

uri – Interacts with webservices

  The official documentation on the uri module.

win_uri – Interacts with webservices

  The official documentation on the win_uri module.

win_inet_proxy – Manages proxy settings for WinINet and Internet Explorer

  The official documentation on the win_inet_proxy module.

## Examples

    - name: Download earthrise.jpg to specified path
      win_get_url:
        url: http://www.example.com/earthrise.jpg
        dest: C:\Users\RandomUser\earthrise.jpg

    - name: Download earthrise.jpg to specified path only if modified
      win_get_url:
        url: http://www.example.com/earthrise.jpg
        dest: C:\Users\RandomUser\earthrise.jpg
        force: no

    - name: Download earthrise.jpg to specified path through a proxy server.
      win_get_url:
        url: http://www.example.com/earthrise.jpg
        dest: C:\Users\RandomUser\earthrise.jpg
        proxy_url: http://10.0.0.1:8080
        proxy_username: username
        proxy_password: password

    - name: Download file from FTP with authentication
      win_get_url:
        url: ftp://server/file.txt
        dest: '%TEMP%\ftp-file.txt'
        url_username: ftp-user
        url_password: ftp-password

    - name: Download src with sha256 checksum url
      win_get_url:
        url: http://www.example.com/earthrise.jpg
        dest: C:\temp\earthrise.jpg
        checksum_url: http://www.example.com/sha256sum.txt
        checksum_algorithm: sha256
        force: True

    - name: Download src with sha256 checksum url
      win_get_url:
        url: http://www.example.com/earthrise.jpg
        dest: C:\temp\earthrise.jpg
        checksum: a97e6837f60cec6da4491bab387296bbcd72bdba
        checksum_algorithm: sha1
        force: True

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
checksum_dest string | success and dest has been downloaded | <algorithm> checksum of the file after the download Sample: 6e642bb8dd5c2e027bf21dd923337cbb4214f827
checksum_src string | force=yes or dest did not exist | <algorithm> checksum of the remote resource Sample: 6e642bb8dd5c2e027bf21dd923337cbb4214f827
dest string | always | destination file/path Sample: C:\Users\RandomUser\earthrise.jpg
elapsed float | always | The elapsed seconds between the start of poll and the end of the module. Sample: 2.1406487
msg string | always | Error message, or HTTP status message from web-server Sample: OK
size integer | success | size of the dest file Sample: 1220
status_code integer | always | HTTP status code Sample: 200
url string | always | requested url Sample: http://www.example.com/earthrise.jpg

## Status

- This module is guaranteed to have backward compatible interface changes going forward. [stableinterface]

- This module is maintained by the Ansible Core Team. [core]

### Red Hat Support

More information about Red Hat’s support of this module is available from this Red Hat Knowledge Base article.

### Authors

- Paul Durivage (@angstwad)

- Takeshi Kuramochi (@tksarah)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.