Note

Ce module fait partie de ansible-base et est inclus dans toutes les installations Ansible. Dans la plupart des cas, vous pouvez utiliser le nom court du module uri même sans spécifier le module collections: .collections:mot-clé. Malgré cela, nous vous recommandons d'utiliser le FQCN pour faciliter les liens vers la documentation du module et pour éviter tout conflit avec d'autres collections qui peuvent avoir le même nom de module.

Nouveau dans la version 1.1 : de ansible.builtin

  • Synopsis
  • Paramètres
  • Notes
  • Voir aussi
  • Exemples
  • Valeurs de retour

Synopsis

  • Interagit avec les services web HTTP et HTTPS et supporte les mécanismes d'authentification HTTP Digest, Basic et WSSE.
  • Pour les cibles Windows, utilisez l'option ansible.windows.win_uri à la place.

Note

Ce module a un module correspondant plugin d'action.

Paramètres

Paramètre Choix/par défaut Commentaires
attributschaîne de caractères ajouté dans la version 2.3 de ansible.builtin Les attributs que le fichier ou le répertoire résultant devrait avoir.Pour obtenir les drapeaux supportés, regardez la page de manuel de chattr sur le système cible.Cette chaîne doit contenir les attributs dans le même ordre que celui affiché par lsattr.Le = est supposé par défaut, sinon + ou - doivent être inclus dans la chaîne.
alias : attr
corpsbrut Le corps de la demande/réponse http au service web. Si body_format est défini à 'json', il prendra une chaîne JSON déjà formatée ou convertira une structure de données en JSON.Si body_format est défini à 'form-urlencoded', il convertira un dictionnaire ou une liste de tuples en une chaîne 'application/x-www-form-urlencoded'. (Ajouté dans la v2.7)Si body_format est défini sur 'form-multipart', il convertira un dictionnaire en corps 'multipart/form-multipart'. (Ajouté dans la v2.10)
body_formatchaîne de caractères ajouté dans la version 2.0 de ansible.builtin
    Choix :

  • form-urlencoded
  • json
  • brut
  • formulaire-multipart
Le format de sérialisation du corps. Lorsqu'il est défini sur json, form-multipartou form-urlencoded, encode l'argument du corps, si nécessaire, et définit automatiquement l'en-tête Content-Type en conséquence.A partir de 2.3 il est possible d'outrepasser l'en-tête `Content-Type`, lorsqu'il est défini sur... json ou form-urlencoded via l'en-tête en-têtes L'en-tête "Content-Type" ne peut pas être remplacé lors de l'utilisation de l'option form-multipartform-urlencoded .form-multipartform-urlencodeda été ajouté dans la v2.7.form-multipart a été ajouté dans la v2.10.
ca_pathchemin ajouté dans la version 2.11 de ansible.builtin Fichier au format PEM qui contient un certificat d'autorité de certification à utiliser pour la validation.
client_certchemin d'accès ajouté dans la version 2.4 de ansible.builtin Fichier de chaîne de certificats au format PEM à utiliser pour l'authentification des clients SSL.Ce fichier peut également inclure la clé également, et si la clé est incluse, clé_client n'est pas nécessaire
clé_clientchemin d'accès ajouté dans la version 2.4 de ansible.builtin Fichier au format PEM qui contient votre clé privée à utiliser pour l'authentification du client SSL.Si client_cert contient à la fois le certificat et la clé, cette option n'est pas nécessaire.
créechemin d'accès Un nom de fichier, lorsqu'il existe déjà, cette étape ne sera pas exécutée.
destchemin d'accès Un chemin d'accès de l'endroit où télécharger le fichier (si souhaité). Si dest est un répertoire, le nom de base du fichier sur le serveur distant sera utilisé.
follow_redirectschaîne de caractères
    Choix :

  • tout
  • pas de
  • aucun
  • sûr
  • urllib2
  • oui
Si le module URI doit ou non suivre les redirections. all suivra toutes les redirections. safe suivra uniquement les redirections "sûres", où "sûres" signifie que le client ne fait qu'un GET ou un HEAD sur l'URI vers lequel il est redirigé. none ne suivra aucune redirection. Notez que yes et no sont acceptés pour des raisons de compatibilité ascendante, où yes est l'équivalent de all et no est l'équivalent de safe. yes et no sont dépréciés et seront supprimés dans une future version d'Ansible.
forcebooléen
    Choix :

  • pas de
  • oui
Si yes n'obtenez pas de copie en cache.alias thirsty a été déprécié et sera supprimé dans la version 2.13.
alias : assoiffé
force_basic_authboolean
    Choix :

  • pas de
  • oui
Force l'envoi de l'en-tête d'authentification de base lors de la demande initiale. La bibliothèque utilisée par le module uri n'envoie les informations d'authentification que lorsqu'un service Web répond à une demande initiale avec un statut 401. Comme certains services d'authentification de base n'envoient pas correctement un 401, les connexions échoueront.
groupechaîne de caractères Nom du groupe qui devrait posséder le fichier/répertoire, comme serait alimenté à... chown.
en-têtesdictionnaire ajouté dans la version 2.1 de ansible.builtin Ajoute des en-têtes HTTP personnalisés à une requête au format d'un hachage YAML. A partir de 2.3 fourniture de Content-Type ici remplacera l'en-tête généré en fournissant json ou form-urlencoded pour format_corps.
http_agentchaîne de caractères Par défaut :
"ansible-httpget"
En-tête à identifier comme, apparaît généralement dans les journaux du serveur web.
méthodechaîne de caractères Par défaut :
"GET"
La méthode HTTP de la requête ou de la réponse.Dans les versions plus récentes, nous ne restreignons plus la méthode au niveau du module mais elle doit toujours être une méthode valide acceptée par le service qui traite la requête.
modebrut Les permissions que le fichier ou le répertoire résultant doit avoir.Pour ceux qui sont habitués à /usr/bin/chmod rappelez-vous que les modes sont en fait des nombres octaux. Vous devez soit ajouter un zéro de tête pour que l'analyseur YAML d'Ansible sache qu'il s'agit d'un nombre octal (comme 0644 ou 01777) ou le citer (comme '644' ou '1777') afin qu'Ansible reçoive une chaîne de caractères et puisse effectuer sa propre conversion de chaîne en nombre.Donner à Ansible un nombre sans suivre l'une de ces règles aboutira à un nombre décimal qui aura des résultats inattendus.À partir d'Ansible 1.8, le mode peut être spécifié comme un mode symbolique (par exemple, u+rwx ou u=rw,g=r,o=r).si mode n'est pas spécifié et que le fichier de destination n'est pas existe pas, la valeur par défaut umask du système sera utilisé lors de la définition du mode pour le fichier nouvellement créé.Si mode n'est pas spécifié et que le fichier de destination fait existe, le mode du fichier existant sera utilisé.En spécifiant mode est le meilleur moyen de s'assurer que les fichiers sont créés avec les bonnes permissions. Voir CVE-2020-1736 pour plus de détails.
propriétairechaîne de caractères Nom de l'utilisateur qui devrait être le propriétaire du fichier/répertoire, comme cela serait alimenté par. chown.
remote_srcbooléen ajouté dans la version 2.7 de ansible.builtin
    Choix :

  • pas de
  • oui
Si nole module recherchera le src sur le nœud du contrôleur.Si yesle module recherchera l'élément src sur le nœud géré (distant).
supprimechemin d'accès Un nom de fichier, lorsqu'il n'existe pas, cette étape ne sera pas exécutée.
retour_contenubooléen
    Choix :

  • pas de
  • oui
Si oui ou non le corps de la réponse doit être retourné comme une clé "content" dans le résultat du dictionnaire, qu'il ait réussi ou échoué.Indépendamment de cette option, si le Content-type rapporté est "application/json", alors le JSON est toujours chargé dans une clé appelée json dans les résultats du dictionnaire.
selevelchaîne de caractères La partie niveau du contexte de fichier SELinux.Il s'agit de l'attribut MLS/MCS, parfois connu sous le nom de rangeLorsqu'il est défini à _defaultil utilisera l'attribut level de la politique si elle est disponible.
serolechaîne de caractères La partie rôle du contexte de fichier SELinux.Lorsqu'elle est définie sur _defaultil utilisera l'option role de la politique si elle est disponible.
setypechaîne de caractères La partie type du contexte de fichier SELinux.Lorsqu'elle est définie sur _defaultil utilisera le type type de la politique si elle est disponible.
seuserchaîne de caractères La partie utilisateur du contexte de fichier SELinux.Par défaut, il utilise la chaîne de caractères system lorsqu'elle est applicable.lorsqu'elle est définie sur _defaultil utilisera la politique user de la politique si elle est disponible.
srcchemin d'accès ajouté dans la version 2.7 de ansible.builtin Chemin vers le fichier à soumettre au serveur distant.Ne peut pas être utilisé avec corps.
code_statutliste / elements=initiale Par défaut :
[200]
Une liste de codes d'état HTTP valides, numériques, qui signifient le succès de la demande.
timeoutnombre entier Par défaut :
30
Le délai d'attente au niveau de la socket en secondes.
unix_socketchemin d'accès ajouté dans la version 2.8 de ansible.builtin Chemin vers le socket de domaine Unix à utiliser pour la connexion.
unsafe_writesbooléen ajouté dans la version 2.2 de ansible.builtin
    Choix :

  • pas de
  • oui
Influence quand utiliser l'opération atomique pour empêcher la corruption des données ou les lectures incohérentes à partir du fichier cible.Par défaut, ce module utilise les opérations atomiques pour empêcher la corruption des données ou les lectures incohérentes à partir des fichiers cibles, mais parfois les systèmes sont configurés ou simplement cassés d'une manière qui l'empêche. Cette option permet à Ansible de se rabattre sur des méthodes non sécurisées de mise à jour des fichiers lorsque les opérations atomiques échouent (cependant, elle ne force pas Ansible à effectuer des écritures non sécurisées).IMPORTANT ! Les écritures non sécurisées sont sujettes à des conditions de course et peuvent entraîner une corruption des données.
urlchaîne de caractères / obligatoire URL HTTP ou HTTPS sous la forme (http|https)://host.domain.[:port]/chemin
url_passwordchaîne de caractères Un mot de passe pour le module à utiliser pour l'authentification Digest, Basic ou WSSE.
alias : mot de passe
url_usernamechaîne de caractères Un nom d'utilisateur pour le module à utiliser pour l'authentification Digest, Basic ou WSSE.
alias : utilisateur
use_gssapibooléen ajouté dans la 2.11 de ansible.builtin
    Choix :

  • pas de
  • oui
Utiliser GSSAPI pour effectuer l'authentification, typiquement c'est pour une authentification Kerberos ou Kerberos par négociation.Nécessite la bibliothèque Python. gssapi d'être installée.Les informations d'identification pour GSSAPI peuvent être spécifiées avec les éléments suivants . url_username/url_password ou avec la var. env. GSSAPI KRB5CCNAME qui a spécifié un cache d'informations d'identification Kerberos personnalisé.L'authentification NTLM est not supportée même si le mech GSSAPI pour NTLM a été installé.
use_proxybooléen
    Choix :

  • pas de
  • oui
Si no, il n'utilisera pas de proxy, même si un est défini dans une variable d'environnement sur les hôtes cibles.
valider_certsbooléen ajouté dans la version 1.9.2 de ansible.builtin
    Choix :

  • pas de
  • oui
Si no, les certificats SSL ne seront pas validés, ce qui ne doit être défini que sur no utilisé sur des sites contrôlés personnellement utilisant des certificats auto-signés.Avant la version 1.9.2, le code était réglé par défaut sur no.

Notes

Note

  • La dépendance sur httplib2 a été supprimée dans Ansible 2.1.
  • Le module renvoie tous les en-têtes HTTP en minuscules.
  • Pour les cibles Windows, utilisez le module ansible.windows.win_uri à la place.

Voir aussi

Voir aussi

ansible.builtin.get_url

La documentation officielle sur le ansible.builtin.get_url module.

ansible.windows.win_uri

La documentation officielle sur le module ansible.windows.win_uri module.

Exemples

-name: Check that you can connect (GET) to a page and it returns a status 200
  uri:url: http://www.example.com

-name: Check that a page returns a status 200 and fail if the word AWESOME is not in the page contents
  uri:url: http://www.example.com
    return_content: yes
  register: this
  failed_when:"'AWESOME' not in this.content"-name: Create a JIRA issue
  uri:url: https://your.jira.example.com/rest/api/2/issue/
    user: your_username
    password: your_pass
    method: POST
    body:"{{ lookup('file','issue.json') }}"force_basic_auth: yes
    status_code:201body_format: json

-name: Login to a form based webpage, then use the returned cookie to access the app in later tasks
  uri:url: https://your.form.based.auth.example.com/index.php
    method: POST
    body_format: form-urlencoded
    body:name: your_username
      password: your_password
      enter: Sign in
    status_code:302register: login

-name: Login to a form based webpage using a list of tuples
  uri:url: https://your.form.based.auth.example.com/index.php
    method: POST
    body_format: form-urlencoded
    body:-[ name, your_username ]-[ password, your_password ]-[ enter, Sign in ]status_code:302register: login

-name: Upload a file via multipart/form-multipart
  uri:url: https://httpbin.org/post
    method: POST
    body_format: form-multipart
    body:file1:filename: /bin/true
        mime_type: application/octet-stream
      file2:content: text based file content
        filename: fake.txt
        mime_type: text/plain
      text_form_field: value

-name: Connect to website using a previously stored cookie
  uri:url: https://your.form.based.auth.example.com/dashboard.php
    method: GET
    return_content: yes
    headers:Cookie:"{{ login.cookies_string }}"-name: Queue build of a project in Jenkins
  uri:url: http://{{ jenkins.host }}/job/{{ jenkins.job }}/build?token={{ jenkins.token }}user:"{{ jenkins.user }}"password:"{{ jenkins.password }}"method: GET
    force_basic_auth: yes
    status_code:201-name: POST from contents of local file
  uri:url: https://httpbin.org/post
    method: POST
    src: file.json

-name: POST from contents of remote file
  uri:url: https://httpbin.org/post
    method: POST
    src: /path/to/my/file.json
    remote_src: yes

-name: Create workspaces in Log analytics Azure
  uri:url: https://www.mms.microsoft.com/Embedded/Api/ConfigDataSources/LogManagementData/Save
    method: POST
    body_format: json
    status_code:[200,202]return_content:trueheaders:Content-Type: application/json
      x-ms-client-workspace-path: /subscriptions/{{ sub_id }}/resourcegroups/{{ res_group }}/providers/microsoft.operationalinsights/workspaces/{{ w_spaces }}x-ms-client-platform: ibiza
      x-ms-client-auth-token:"{{ token_az }}"body:-name: Pause play until a URL is reachable from this host
  uri:url:"http://192.0.2.1/some/test"follow_redirects: none
    method: GET
  register: _result
  until: _result.status == 200
  retries:720# 720 * 5 seconds = 1hour (60*60/5)delay:5# Every 5 seconds# There are issues in a supporting Python library that is discussed in# https://github.com/ansible/ansible/issues/52705 where a proxy is defined# but you want to bypass proxy use on CIDR masks by using no_proxy-name: Work around a python issue that doesn't support no_proxy envvar
  uri:follow_redirects: none
    validate_certs:falsetimeout:5url:"http://{{ ip_address }}:{{ port | default(80) }}"register: uri_data
  failed_when:falsechanged_when:falsevars:ip_address: 192.0.2.1
  environment:|
      {
        {% for no_proxy in (lookup('env', 'no_proxy') | regex_replace('s*,s*', ' ') ).split() %}
          {% if no_proxy | regex_search('/') and
                no_proxy | ipaddr('net') != '' and
                no_proxy | ipaddr('net') != false and
                ip_address | ipaddr(no_proxy) is not none and
                ip_address | ipaddr(no_proxy) != false %}
            'no_proxy': '{{ ip_address }}'
          {% elif no_proxy | regex_search(':') != '' and
                  no_proxy | regex_search(':') != false and
                  no_proxy == ip_address + ':' + (port | default(80)) %}
            'no_proxy': '{{ ip_address }}:{{ port | default(80) }}'
          {% elif no_proxy | ipaddr('host') != '' and
                  no_proxy | ipaddr('host') != false and
                  no_proxy == ip_address %}
            'no_proxy': '{{ ip_address }}'
          {% elif no_proxy | regex_search('^(*|).') != '' and
                  no_proxy | regex_search('^(*|).') != false and
                  no_proxy | regex_replace('*', '') in ip_address %}
            'no_proxy': '{{ ip_address }}'
          {% endif %}
        {% endfor %}
      }

Valeurs de retour

Les valeurs de retour courantes sont documentées ici, les champs suivants sont uniques à ce module :

Clé Retourné Description
contenuchaîne de caractères status pas dans status_code ou return_content est vrai Le contenu du corps de la réponse.
Exemple :{}
cookiesdictionnaire ajouté dans la version 2.4 de ansible.builtin sur le succès Les valeurs du cookie placées dans la boîte à cookies.
Echantillon :{'SESSIONID' : '[SESSIONID]'}
cookies_stringchaîne de caractères ajouté dans la version 2.6 de ansible.builtin sur le succès La valeur pour les futurs en-têtes Cookie de la requête.
Exemple : SESSIONID=[SESSIONID]
écoulénombre entier en cas de succès Le nombre de secondes qui se sont écoulées pendant l'exécution du téléchargement.
Exemple : 23
msgchaîne de caractères toujours Le message HTTP de la demande.
Exemple : OK (octets inconnus)
redirigébooléen en cas de succès Indique si la requête a été redirigée.
statutnombre entier toujours Le code d'état HTTP de la requête.
Exemple : 200
urlchaîne de caractères toujours L'URL réelle utilisée pour la requête.
Exemple : https://www.ansible.com/

Auteurs

  • Romeo Theriault (@romeotheriault)