|
|
(Une révision intermédiaire par le même utilisateur non affichée) |
Ligne 326 : |
Ligne 326 : |
| listen: reload haproxy | | listen: reload haproxy |
| </syntaxhighlight> | | </syntaxhighlight> |
− |
| |
− | = Transformation de données =
| |
− | == Types de variables ansible ==
| |
− |
| |
− |
| |
− | {| class="wikitable"
| |
− | !colspan="2"|Principaux types de variables
| |
− | |-
| |
− | ! class="wikitable" | Type
| |
− | ! Description
| |
− | |-
| |
− | |{{CODE|Chaîne de carractères}}
| |
− | |Une chaîne est une séquence de caractères qui est le type de données par défaut dans Ansible. Il n'est pas nécessaire de placer les chaînes entre guillemets ou guillemets doubles.
| |
− | Ansible supprime les espaces de fin de chaîne des chaînes sans guillemets.
| |
− |
| |
− | {{CODE|my_string: Those are the contents of the string}}
| |
− |
| |
− | Le format YAML permet de définir des chaînes à plusieurs lignes. Utilisez l'opérateur de barre verticale (|) pour conserver les sauts de ligne, ou l'opérateur supérieur à (>) pour les supprimer.
| |
− | <syntaxhighlight lang="yaml">
| |
− | string_with_breaks: |
| |
− | This string
| |
− | has several
| |
− | line breaks
| |
− | string_without_breaks: >
| |
− | This string will not
| |
− | contain any line breaks.
| |
− | Separated lines are joined
| |
− | by a space character.
| |
− |
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | |-
| |
− | |{{CODE|Nombres}}
| |
− | |Lorsque le contenu de la variable est conforme à un nombre, Ansible (ou YAML, pour être précis) analyse la chaîne et génère une valeur numérique, Integer ou Float.
| |
− | * Integers contient des caractères décimaux qui sont éventuellement précédés des signes
| |
− | + ou - :
| |
− | {{CODE|answer: 42}}
| |
− | * Si un point décimal (.) est inclus dans une valeur de type entier, il est analysé en tant que Float.
| |
− | {{CODE|float_answer: 42.0}}
| |
− | * Il est également possible d'utiliser la notation « Scientific » pour écrire des Integers ou Floats importants.
| |
− | {{CODE|scientific_answer: 0.42e+2}}
| |
− | * Les nombres hexadécimaux commencent par 0x, suivi de caractères hexadécimaux uniquement. La valeur d'exemple suivante est le nombre hexadécimal 2A (42 en décimal) :
| |
− | {{CODE|hex_answer: 0x2A}}
| |
− | * Si vous placez un nombre entre guillemets, il est traité comme une String.
| |
− | {{CODE|string_not_number: "20"}}
| |
− |
| |
− | |-
| |
− | |{{CODE|Booléens}}
| |
− | |Les valeurs booléennes contiennent les chaînes yes, no, y, n, on, off, true ou false. Les valeurs ne sont pas sensibles à la casse, mais la documentation '''Jinja2''' recommande d'utiliser des minuscules à des fins de cohérence.
| |
− | |-
| |
− | |{{CODE|Date}}
| |
− | |Si la chaîne est conforme à la norme ISO-8601, Ansible convertit la chaîne en une valeur
| |
− | typée date.
| |
− | <syntaxhighlight lang="yaml">
| |
− | my_date_time: 2019-05-30T21:15:32.42+02:00
| |
− | my_simple_date: 2019-05-30
| |
− | </syntaxhighlight>
| |
− | |-
| |
− | |{{CODE|Null}}
| |
− | |La valeur null spéciale déclare une variable comme étant « undefined ». La chaîne null, ou le caractère tilde (~), affecte la valeur null à la variable.
| |
− | {{CODE|my_undefined: null}}
| |
− | |-
| |
− | |{{CODE|Listes ou matrices}}
| |
− | |Une liste, également connue sous le nom de matrice, est une collection triée de valeurs. Les listes sont les structures de base des collections de données et des boucles.
| |
− | Écrivez des listes sous la forme d'une séquence de valeurs séparées par des virgules, insérées entre crochets, ou d'une série d'éléments, un par ligne, chacun préfixé par un tiret (-). Les exemples suivants sont équivalents :
| |
− | <syntaxhighlight lang="yaml">
| |
− | my_list: ['Douglas', 'Marvin', 'Arthur']
| |
− | my_list:
| |
− | - Douglas
| |
− | - Marvin
| |
− | - Arthur
| |
− | </syntaxhighlight>
| |
− |
| |
− | À l'instar des matrices de la plupart des langages de programmation, vous pouvez accéder à des éléments spécifiques d'une liste en utilisant un numéro d'index à partir de 0 :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Confirm that the second list element is "Marvin"
| |
− | assert:
| |
− | that:
| |
− | - my_list[1] == 'Marvin'
| |
− | </syntaxhighlight>
| |
− | |-
| |
− | |{{CODE|Dictionnaires}}
| |
− | |Les dictionnaires, également appelés mappages ou hachages dans d'autres contextes, sont des structures qui lient des clés de chaîne à des valeurs pour un accès direct. À l'instar des listes, les dictionnaires peuvent être écrits en une seule ligne ou sur plusieurs lignes à l'aide du signe deux-points (:) :
| |
− | <syntaxhighlight lang="yaml">
| |
− | my_dict: { Douglas: Human, Marvin: Robot, Arthur: Human }
| |
− | my_dict:
| |
− | Douglas: Human
| |
− | Marvin: Robot
| |
− | Arthur: Human
| |
− | </syntaxhighlight>
| |
− |
| |
− | Accédez à un élément dans un dictionnaire par sa clé, fournie entre crochets immédiatement après le nom du dictionnaire :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Confirm that the second list element is "Marvin"
| |
− | assert:
| |
− | that:
| |
− | - my_dict['Marvin'] == 'Robot'
| |
− | </syntaxhighlight>
| |
− | {{NOTE|
| |
− | contenu=Vous pouvez également accéder à l'entrée de dictionnaire my_dict['Marvin'] à l'aide de la syntaxe my_dict.Marvin. Cependant, cette notation par points n'est pas recommandée, car elle peut entrer en conflit avec des noms réservés aux attributs et aux méthodes des dictionnaires Python. Pour plus d'informations, voir [https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#creating-valid-variable-names].
| |
− | }}
| |
− |
| |
− | |}
| |
− |
| |
− |
| |
− | == Utilisation des filtres ==
| |
− |
| |
− | Les filtres permettent de traiter la valeur d'une variable afin d'extraire des informations, de les transformer ou de les utiliser pour calculer une nouvelle valeur. Pour appliquer un filtre, faites suivre le nom de la variable par le caractère de barre verticale ('''|''') et le nom du filtre à appliquer.
| |
− | Certains filtres peuvent nécessiter des arguments ou des options facultatifs entre parenthèses.
| |
− | Il est possible d'enchaîner plusieurs filtres dans une même expression.
| |
− | <br>
| |
− | À titre d'exemple, l'expression suivante filtre la valeur de la variable myname, ce qui garantit que la première lettre de la valeur est mise en majuscule à l'aide d'un filtre '''Jinja2''' standard :
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ myname | capitalize }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | Cette expression peut également être utilisée pour convertir une variable en un type différent.
| |
− |
| |
− | L'exemple d'expression suivant garantit que le résultat est une chaîne, et non un entier ou un nombre flottant :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ mynumber | string }}
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | L'exemple suivant est plus complexe et affiche une tâche complète. Le module assert vérifie si les expressions sont « true » et échoue si elles ne le sont pas. L'expression '''Jinja2''' au début du test prend la liste {{CODE|[ 1, 4, 2, 2 ]}} et utilise le filtre {{CODE|unique}} pour supprimer les éléments dupliqués, puis utilise le filtre sort pour les trier.
| |
− | Cet exemple utilise un filtre pour manipuler des données codées en dur plutôt que la valeur d'une variable.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Test to see if the assertion is true, fail if not
| |
− | assert:
| |
− | that:
| |
− | - "{{ [ 1, 4, 2, 2 ] | unique | sort }} is eq( [ 1, 2, 4 ] )"
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | La sortie du filtre {{CODE|sort}} est comparée avec la liste attendue, aux fins d'égalité, à l'aide du test
| |
− | '''Jinja2''' {{CODE|eq}}. Étant donné que le résultat et la valeur attendue sont égaux, le module assert réussit.
| |
− |
| |
− | {{IMPORTANT|
| |
− | contenu=Les filtres ne modifient pas la valeur stockée dans la variable. L'expression Jinja2 traite cette valeur et utilise le résultat sans changer la variable proprement dite. }}
| |
− |
| |
− | == Principaux filtres ==
| |
− | === Vérification de la définition d'une variable ===
| |
− |
| |
− | Les deux premiers filtres d'Ansible s'appliquent si l'entrée est ou non définie. Ces filtres sont utiles dans les rôles pour s'assurer que les variables ont des valeurs raisonnables.
| |
− |
| |
− | ==== '''mandatory''' ====
| |
− | Échoue et interrompt le playbook Ansible si la variable n'est pas définie avec une valeur.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ my_value | mandatory }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | ==== '''default'''====
| |
− | Si la variable n'est pas définie avec une valeur, alors ce filtre lui affecte la valeur spécifiée entre parenthèses. Si le second paramètre entre parenthèses est True, le filtre affecte alors également la valeur par défaut à la variable, si la valeur initiale de cette dernière est une chaîne vide ou la valeur booléenne False.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ my_value | default(my_default, True) }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | Le filtre {{CODE|default}} peut également prendre la valeur spéciale {{CODE|omit}}, ce qui a pour effet de ne pas définir la valeur dans le cas où il n'y en avait aucune à l'origine. Si la variable possède déjà une valeur, {{CODE|omit}} ne modifie pas celle-ci.
| |
− |
| |
− | La tâche suivante qui vérifie l'existence de l'utilisateur ''jonfoo'' est un exemple d'utilisation du filtre {{CODE|default(omit)}}.
| |
− | Si la variable {{CODE|supplementary_groups['jonfoo']}} est déjà définie, la tâche s'assure que l'utilisateur est membre de ces groupes. S'il n'est pas déjà défini, le paramètre groups du module user n'est pas défini dans cette tâche.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Ensure user jonfoo exists.
| |
− | user:
| |
− | name: jonfoo
| |
− | groups: "{{ supplementary_groups['jonfoo'] | default(omit) }}"
| |
− | </syntaxhighlight>
| |
− |
| |
− | === Exécution de calculs mathématiques ===
| |
− |
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Ensure user jonfoo exists.
| |
− | user:
| |
− | name: jonfoo
| |
− | groups: "{{ supplementary_groups['jonfoo'] | default(omit) }}"
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | ==== Opérations arithmétiques ====
| |
− |
| |
− |
| |
− | {| class="wikitable"
| |
− |
| |
− | ! class="wikitable" | Opérateur
| |
− | ! Description
| |
− | |-
| |
− | |{{CODE|+}}
| |
− | |Ajouter deux nombres.
| |
− | |-
| |
− | |{{CODE|-}}
| |
− | |Soustraire deux nombres.
| |
− | |-
| |
− | |{{CODE|/}}
| |
− | |Effectuer une division en virgule flottante.
| |
− | |-
| |
− | |{{CODE|//}}
| |
− | |Effectuer une division d'entiers.
| |
− | |-
| |
− | |{{CODE|%}}
| |
− | |Récupérer le reste de la division d'un entier.
| |
− | |-
| |
− | |{{CODE|*}}
| |
− | |Multiplier deux nombres.
| |
− | |-
| |
− | |{{CODE|**}}
| |
− | |Augmenter le nombre de gauche à la puissance du nombre correct.
| |
− |
| |
− | |}
| |
− |
| |
− | Dans certains cas, il peut-être nécessaire de d'abord convertir la valeur en un entier avec le filtre {{CODE|int}},
| |
− | ou en une valeur flottante avec le filtre {{CODE|float}}.
| |
− |
| |
− | Par exemple, l'expression '''Jinja2''' suivante ajoute une heure à l'heure actuelle, qui est collectée en tant que fait et stockée en tant que chaîne, et non en tant que nombre entier :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− |
| |
− | {{ ( ansible_facts['date_time']['hour'] | int ) + 1 }}
| |
− |
| |
− | </syntaxhighlight>
| |
− |
| |
− | Il existe également un certain nombre de filtres qui peuvent effectuer une opération mathématique sur un nombre : log, pow, root, abs et round sont des exemples.
| |
− | <syntaxhighlight lang="yaml">
| |
− |
| |
− | {{ 1764 | root }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | ==== Manipulation de listes ====
| |
− |
| |
− | Il existe de nombreux filtres qutilisables pour analyser et manipuler des listes.
| |
− |
| |
− | Si la liste se compose de nombres, utiliser {{CODE|max, min ou sum}} pour trouver le plus grand nombre, le plus petit nombre et la somme de tous les éléments de la liste.
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ [2, 4, 6, 8, 10, 12] | sum }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | ===== Extraire des éléments d'une liste =====
| |
− |
| |
− | * obtenir des informations sur le contenu de la liste, telles que le premier élément ('''first'''), le dernier ('''last'''), ou la longueur ('''length''') de la liste :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: All three of these assertions are true
| |
− | assert:
| |
− | that:
| |
− | - "{{ [ 2, 4, 6, 8, 10, 12 ] | length }} is eq( 6 )"
| |
− | - "{{ [ 2, 4, 6, 8, 10, 12 ] | first }} is eq( 2 )"
| |
− | - "{{ [ 2, 4, 6, 8, 10, 12 ] | last }} is eq( 12 )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | Le filtre '''random''' renvoie un élément aléatoire de la liste :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ ['Douglas', 'Marvin', 'Arthur'] | random }}
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | ===== Modifier l'ordre des éléments d'une liste =====
| |
− |
| |
− | Une liste peut être réordonnée de plusieurs façons. Le filtre '''sort''' trie la liste dans l'ordre naturel de ses éléments. Le filtre '''reverse''' renvoie une liste dans laquelle l'ordre est le contraire de l'ordre d'origine. Le filtre '''shuffle''' renvoie une liste avec les mêmes éléments, mais dans un ordre aléatoire.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: All three of these assertions are true
| |
− | assert:
| |
− | that:
| |
− | - "{{ [ 2, 4, 6, 8, 10 ] | reverse | list }} is eq( [ 10, 8, 6, 4, 2] )"
| |
− | - "{{ [ 4, 8, 10, 6, 2 ] | sort | list }} is eq( [ 2, 4, 6, 8, 10 ] )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | ===== Fusionner des listes =====
| |
− |
| |
− | Dans certains cas, il est utile de fusionner plusieurs listes en une seule pour simplifier l'itération. Le filtre '''flatten''' prend de manière récursive une liste interne dans la valeur de la liste d'entrée, et ajoute les valeurs internes à la liste externe.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− |
| |
− | - name: Flatten turns nested lists on the left to list on the right
| |
− | assert:
| |
− | that:
| |
− | - "{{ [ 2, [4, [6, 8]], 10 ] | flatten }} is eq( [ 2, 4, 6, 8, 10] )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | Utilisez {{CODE|flatten}} pour fusionner les valeurs des listes issues de l'itération d'une liste parente.
| |
− |
| |
− |
| |
− | ===== Listes et opérations ensemblistes =====
| |
− |
| |
− | Assurer qu'une liste ne comporte aucun élément en double avec le filtre '''unique'''. Cela peut s'avérer utile si vous utilisez une liste de faits que vous avez collectés, tels que des noms d'utilisateur ou d'hôte qui peuvent contenir des entrées en double.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: 'unique' leaves unique elements
| |
− | assert:
| |
− | that:
| |
− | - "{{ [ 1, 1, 2, 2, 2, 3, 4, 4 ] | unique | list }} is eq( [ 1, 2, 3, 4 ] )"
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | Si deux listes n'ont aucun élément en double, il est possible d'utiliser des opérations de théorie ensembliste sur celles-ci.
| |
− | * Le filtre '''union''' renvoie un ensemble avec des éléments provenant des deux jeux de données d'entrée.
| |
− | * Le filtre '''intersect''' renvoie un ensemble avec des éléments communs aux deux jeux de données d'entrée.
| |
− | * Le filtre '''difference''' renvoie un ensemble avec des éléments du premier jeu qui ne sont pas présents dans le second jeu.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: 'difference' provides elements not in specified set
| |
− | assert:
| |
− | that:
| |
− | - "{{ [ 2, 4, 6, 8, 10 ] | difference([2, 4, 6, 16]) }} is eq( [8, 10] )"
| |
− |
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | Utilisez le filtre '''symmetric_difference''' pour obtenir les éléments à prendre en compte lors de l'utilisation d'un jeu.
| |
− |
| |
− | ==== Manipulation des dictionnaires ====
| |
− |
| |
− | Contrairement aux listes, les dictionnaires ne respectent aucun ordre. Il s'agit simplement d'une collection de paires clé-valeur. Mais vous pouvez utiliser des filtres pour construire des dictionnaires. Ensuite, vous pouvez les convertir en listes ou convertir des listes en dictionnaires.
| |
− |
| |
− | =====Liaison de dictionnaires=====
| |
− | Deux dictionnaires peuvent être reliés par le filtre combine. Les entrées du second dictionnaire ont une priorité plus élevée que les entrées du premier dictionnaire, comme le montre la tâche suivante :
| |
− |
| |
− | Exemple
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− |
| |
− | - name: 'combine' combines two dictionaries into one
| |
− | vars:
| |
− | expected:
| |
− | A: 1
| |
− | B: 4
| |
− | C: 5
| |
− | assert:
| |
− | that:
| |
− | - "{{ {'A':1,'B':2} | combine({'B':4,'C':5}) }} is eq( expected )"
| |
− | </syntaxhighlight>
| |
− | =====Remodelage de dictionnaires=====
| |
− |
| |
− | Un dictionnaire peut être remodelé en une liste d'éléments avec le filtre '''dict2items''', et une liste d'éléments peut être remodelée en un dictionnaire avec le filtre '''items2dict''' :
| |
− |
| |
− | Exemple
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: converting between dictionaries and lists
| |
− | vars:
| |
− | characters_dict:
| |
− | Douglas: Human
| |
− | Marvin: Robot
| |
− | Arthur: Human
| |
− | characters_items:
| |
− | - key: Douglas
| |
− | value: Human
| |
− | - key: Marvin
| |
− | value: Robot
| |
− | - key: Arthur
| |
− | value: Human
| |
− | assert:
| |
− | that:
| |
− | - "{{ characters_dict | dict2items }} is eq( characters_items )"
| |
− | - "{{ characters_items | items2dict }} is eq( characters_dict )"
| |
− |
| |
− | </syntaxhighlight>
| |
− |
| |
− | ==== Hachage, codage et manipulation de chaînes ====
| |
− |
| |
− | Un certain nombre de filtres sont disponibles pour manipuler le texte d'une valeur. Vous pouvez prendre plusieurs checksums, créer des hachages de mots de passe et convertir du texte à partir d'un encodage '''Base64''' et vers celui-ci, tel qu'il est utilisé par un certain nombre d'applications.
| |
− |
| |
− | =====Hachage de chaînes et de mots de passe=====
| |
− | Le filtre '''hash''' renvoie la valeur de hachage de la chaîne d'entrée, à l'aide de l'algorithme de hachage fourni :
| |
− |
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: the string's SHA-1 hash
| |
− | vars:
| |
− | expected: '8bae3f7d0a461488ced07b3e10ab80d018eb1d8c'
| |
− | assert:
| |
− | that:
| |
− | - "'{{ 'Arthur' | hash('sha1') }}' is eq( expected )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | Utilisez le filtre password_hash pour générer des hachages de mot de passe :
| |
− |
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | {{ 'secret_password' | password_hash('sha512') }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | =====Encodage de chaînes=====
| |
− |
| |
− | Les données binaires peuvent être traduites en base64 par le filtre '''b64encode''', puis retraduites au format binaire par le filtre b64decode :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Base64 encoding and decoding of values
| |
− | assert:
| |
− | that:
| |
− | - "'{{ 'âÉïôú' | b64encode }}' is eq( 'w6LDicOvw7TDug==' )"
| |
− | - "'{{ 'w6LDicOvw7TDug==' | b64decode }}' is eq( 'âÉïôú' )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | Avant d'envoyer des chaînes au shell sous-jacent et d'éviter les problèmes d'analyse ou d'injection de code, il est recommandé d'assainir la chaîne à l'aide du filtre quote :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Put quotes around 'my_string'
| |
− | shell: echo {{ my_string | quote }}
| |
− | </syntaxhighlight>
| |
− |
| |
− | =====Mise en forme de texte=====
| |
− |
| |
− | Utilisez les filtres lower, upper ou capitalize pour appliquer la casse d'une chaîne d'entrée :
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Change case of characters
| |
− | assert:
| |
− | that:
| |
− | - "'{{ 'Marvin' | lower }}' is eq( 'marvin' )"
| |
− | - "'{{ 'Marvin' | upper }}' is eq( 'MARVIN' )"
| |
− | - "'{{ 'marvin' | capitalize }}' is eq( 'Marvin' )"
| |
− | </syntaxhighlight>
| |
− |
| |
− |
| |
− | =====Remplacement de texte=====
| |
− | Le filtre '''replace''' est utile lorsque vous devez remplacer toutes les occurrences d'une sous-chaîne à l'intérieur de la chaîne d'entrée :
| |
− |
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Replace 'ar' with asterisks
| |
− | assert:
| |
− | that:
| |
− | - "'{{ 'marvin, arthur' | replace('ar','**') }}' is eq( 'm**vin, **thur' )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | Des recherches et des remplacements beaucoup plus complexes sont disponibles en utilisant des expressions rationnelles et les filtres '''regex_search''' et '''regex_replace'''.
| |
− |
| |
− | <syntaxhighlight lang="yaml">
| |
− | - name: Test results of regex search and search-and-replace
| |
− | assert:
| |
− | that:
| |
− | - "'{{ 'marvin, arthur' | regex_search('ar\S*r') }}' is eq( 'arthur' )"
| |
− | - "'{{ 'arthur up' | regex_replace('ar(\S*)r','\\1mb') }}' is eq( 'thumbup' )"
| |
− | </syntaxhighlight>
| |
− |
| |
− | ==== Manipulation de données JSON ====
| |