[PYTHON] Filtres Ansible Jinja2 Remplacer et extraire des chaînes de variables par des expressions régulières

0. Introduction

Quand j'ai vérifié si les filtres Jinja2 pouvaient gérer les expressions régulières pour les valeurs de variables acquises dynamiquement par Ansible sans utiliser replace, module de modèle, sed dans le module de commande, etc., regex_replace a été préparé. ..

1. Comment utiliser un exemple de playbook

Ce qui suit utilise la variable kb_msu "Windows8.1-KB3140735-x64.msu" avec regex_replace Exemple 1) Remplacez l'extension ** et définissez-la comme une autre variable Exemple 2) Extraire uniquement le nombre du milieu ** et le définir comme une autre variable Exemple de sortie de playbook par le module de débogage

regex_raplace.yml


---
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    kb_msu: "Windows8.1-KB3140735-x64.msu"
    #Exemple 1) kb_extension msu.de msu.Remplacer par xml
    kb_xml: "{{ kb_msu | regex_replace('.msu','.xml') }}"
    #Exemple 2) kb_msu'-KB'Quand'-'Quandの間の数字を抽出
    kb_no:  "{{ kb_msu | regex_replace('^.*-KB(\\d*)-.*msu$','\\1') }}"
  tasks:
    - debug: msg="kb_msu={{ kb_msu }} , kb_xml={{ kb_xml }} , kb_no={{ kb_no }}"

2. Résultat de l'exécution

# ansible-playbook regex_raplace.yml

PLAY [localhost] ***************************************************************

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": "kb_msu=Windows8.1-KB3140735-x64.msu, kb_xml=Windows8.1-KB3140735-x64.xml , kb_no=3140735"
}

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0

3. Référence

Cliquez ici pour savoir comment utiliser les filtres Jinja2 sur le site officiel (http://docs.ansible.com/ansible/playbooks_filters.html). Divers autres filtres utiles (tels que ceux liés à Windows et ceux qui échappent aux expressions régulières) Est ajouté / mis à jour? Comme cela a été fait, il peut être bon de jeter un coup d'œil régulièrement.

De plus, pour le moment (04/07/2016), il n'est pas répertorié sur le site officiel, Il semble que regex_search et regex_findall puissent également être utilisés pour les expressions régulières. À partir de la version 2.2.0? N'est-ce pas? (ansible 2.2.0 (devel 394430a61e) dernière mise à jour 2016/06/28 13:25:07 (GMT +900) était utilisable)

Vous trouverez ci-dessous une partie du code pour Ansible-Webinar https://github.com/privateip/Ansible-Webinar-Mar2016/blob/master/roles/network_facts/tasks/ios.yaml

Recommended Posts

Filtres Ansible Jinja2 Remplacer et extraire des chaînes de variables par des expressions régulières
Extraire des nombres avec des expressions régulières
Remplacer non-ASCII par des expressions régulières en Python
Distinguer les chiffres et les lettres avec des expressions régulières
Supprimer les chaînes supplémentaires dans l'URL avec une expression canonique
Remplacer et supprimer des chaînes
Débarrassez-vous des données sales avec Python et les expressions régulières
À propos de Python et des expressions régulières
[Débutant] Extraire des chaînes de caractères avec Python
Gestion des expressions régulières par PHP / Python