o nnh$@sddlmZdZdZdZddlmZmZddlm Z ddl m Z m Z ddl mZmZmZdd lmZdd lmZeZGd d d eZd S)) annotationsa name: url author: Brian Coca (@bcoca) version_added: "1.9" short_description: return contents from URL description: - Returns the content of the URL requested to be used as data in play. options: _terms: description: urls to query validate_certs: description: Flag to control SSL certificate validation type: boolean default: True split_lines: description: Flag to control if content is returned as a list of lines or as a single text blob type: boolean default: True use_proxy: description: Flag to control if the lookup will observe HTTP proxy environment variables when present. type: boolean default: True username: description: Username to use for HTTP authentication. type: string version_added: "2.8" password: description: Password to use for HTTP authentication. type: string version_added: "2.8" headers: description: HTTP request headers type: dictionary default: {} version_added: "2.9" force: description: Whether or not to set "cache-control" header with value "no-cache" type: boolean version_added: "2.10" default: False vars: - name: ansible_lookup_url_force env: - name: ANSIBLE_LOOKUP_URL_FORCE ini: - section: url_lookup key: force timeout: description: How long to wait for the server to send data before giving up type: float version_added: "2.10" default: 10 vars: - name: ansible_lookup_url_timeout env: - name: ANSIBLE_LOOKUP_URL_TIMEOUT ini: - section: url_lookup key: timeout http_agent: description: User-Agent to use in the request. The default was changed in 2.11 to V(ansible-httpget). type: string version_added: "2.10" default: ansible-httpget vars: - name: ansible_lookup_url_agent env: - name: ANSIBLE_LOOKUP_URL_AGENT ini: - section: url_lookup key: agent force_basic_auth: description: Force basic authentication type: boolean version_added: "2.10" default: False vars: - name: ansible_lookup_url_force_basic_auth env: - name: ANSIBLE_LOOKUP_URL_FORCE_BASIC_AUTH ini: - section: url_lookup key: force_basic_auth follow_redirects: description: String of urllib2, all/yes, safe, none to determine how redirects are followed type: string version_added: "2.10" default: 'urllib2' vars: - name: ansible_lookup_url_follow_redirects env: - name: ANSIBLE_LOOKUP_URL_FOLLOW_REDIRECTS ini: - section: url_lookup key: follow_redirects choices: all: Will follow all redirects. none: Will not follow any redirects. safe: Only redirects doing GET or HEAD requests will be followed. urllib2: Defer to urllib2 behavior (As of writing this follows HTTP redirects). 'no': (DEPRECATED, will be removed in the future version) alias of V(none). 'yes': (DEPRECATED, will be removed in the future version) alias of V(all). use_gssapi: description: - Use GSSAPI handler of requests - As of Ansible 2.11, GSSAPI credentials can be specified with O(username) and O(password). type: boolean version_added: "2.10" default: False vars: - name: ansible_lookup_url_use_gssapi env: - name: ANSIBLE_LOOKUP_URL_USE_GSSAPI ini: - section: url_lookup key: use_gssapi use_netrc: description: - Determining whether to use credentials from ``~/.netrc`` file - By default .netrc is used with Basic authentication headers - When set to False, .netrc credentials are ignored type: boolean version_added: "2.14" default: True vars: - name: ansible_lookup_url_use_netrc env: - name: ANSIBLE_LOOKUP_URL_USE_NETRC ini: - section: url_lookup key: use_netrc unix_socket: description: String of file system path to unix socket file to use when establishing connection to the provided url type: string version_added: "2.10" vars: - name: ansible_lookup_url_unix_socket env: - name: ANSIBLE_LOOKUP_URL_UNIX_SOCKET ini: - section: url_lookup key: unix_socket ca_path: description: String of file system path to CA cert bundle to use type: string version_added: "2.10" vars: - name: ansible_lookup_url_ca_path env: - name: ANSIBLE_LOOKUP_URL_CA_PATH ini: - section: url_lookup key: ca_path unredirected_headers: description: A list of headers to not attach on a redirected request type: list elements: string version_added: "2.10" vars: - name: ansible_lookup_url_unredir_headers env: - name: ANSIBLE_LOOKUP_URL_UNREDIR_HEADERS ini: - section: url_lookup key: unredirected_headers ciphers: description: - SSL/TLS Ciphers to use for the request - 'When a list is provided, all ciphers are joined in order with C(:)' - See the L(OpenSSL Cipher List Format,https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html#CIPHER-LIST-FORMAT) for more details. - The available ciphers is dependent on the Python and OpenSSL/LibreSSL versions type: list elements: string version_added: '2.14' vars: - name: ansible_lookup_url_ciphers env: - name: ANSIBLE_LOOKUP_URL_CIPHERS ini: - section: url_lookup key: ciphers a - name: url lookup splits lines by default ansible.builtin.debug: msg="{{item}}" loop: "{{ lookup('ansible.builtin.url', 'https://github.com/gremlin.keys', wantlist=True) }}" - name: display ip ranges ansible.builtin.debug: msg="{{ lookup('ansible.builtin.url', 'https://ip-ranges.amazonaws.com/ip-ranges.json', split_lines=False) }}" - name: url lookup using authentication ansible.builtin.debug: msg="{{ lookup('ansible.builtin.url', 'https://some.private.site.com/file.txt', username='bob', password='hunter2') }}" - name: url lookup using basic authentication ansible.builtin.debug: msg: "{{ lookup('ansible.builtin.url', 'https://some.private.site.com/file.txt', username='bob', password='hunter2', force_basic_auth='True') }}" - name: url lookup using headers ansible.builtin.debug: msg: "{{ lookup('ansible.builtin.url', 'https://some.private.site.com/api/service', headers={'header1':'value1', 'header2':'value2'} ) }}" zg _list: description: list of list of lines or content of url(s) type: list elements: str ) HTTPErrorURLError) AnsibleError)to_text to_native)open_urlConnectionErrorSSLValidationError) LookupBase)Displayc@seZdZdddZdS) LookupModuleNc Ks|j||dg}|D]}td|zht|fid|dd|dd|dd|dd |d d |d d |d d |d d |d d|dd|dd|dd|dd|dd|dd|d}WnUty}z td|t|fd}~wty}z td|t|fd}~wt y}z td|t|fd}~wt y}z td|t|fd}~ww|dr| D] }| t|qq | t| q |S)N) var_optionsdirectzurl lookup connecting to %svalidate_certs use_proxy url_usernameusername url_passwordpasswordheadersforcetimeout http_agentforce_basic_authfollow_redirects use_gssapi unix_socketca_pathunredirected_headersciphers use_netrczReceived HTTP error for %s : %szFailed lookup url for %s : %sz4Error validating the server's certificate for %s: %szError connecting to %s: %s split_lines) set_optionsdisplayvvvvr get_optionrrrrr r read splitlinesappendr) selfterms variableskwargsrettermresponseeliner3E/usr/local/lib/python3.10/dist-packages/ansible/plugins/lookup/url.pyrunsv                 zLookupModule.run)N)__name__ __module__ __qualname__r5r3r3r3r4r sr N) __future__r DOCUMENTATIONEXAMPLESRETURN urllib.errorrransible.errorsr+ansible.module_utils.common.text.convertersrransible.module_utils.urlsrr r ansible.plugins.lookupr ansible.utils.displayr r$r r3r3r3r4s 9