[PYTHON] Ansible Jinja2-Filter Ersetzen und extrahieren Sie variable Zeichenfolgen durch reguläre Ausdrücke

0. Einleitung

Als ich überprüfte, ob Jinja2-Filter reguläre Ausdrücke für von Ansible dynamisch erfasste Variablenwerte verarbeiten können, ohne Ersetzen, Vorlagenmodul, Sed im Befehlsmodul usw. zu verwenden, wurde regex_replace vorbereitet. ..

1. So verwenden Sie ein Beispiel-Playbook

Im Folgenden wird die Variable kb_msu "Windows8.1-KB3140735-x64.msu" mit regex_replace verwendet Beispiel 1) Ersetzen Sie die Erweiterung ** und definieren Sie sie als eine andere Variable Beispiel 2) Extrahieren Sie nur die mittlere Zahl ** und definieren Sie sie als eine andere Variable Beispiel für eine Playbook-Ausgabe durch das Debug-Modul

regex_raplace.yml


---
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    kb_msu: "Windows8.1-KB3140735-x64.msu"
    #Beispiel 1) kb_msu Erweiterung.von msu.Durch XML ersetzen
    kb_xml: "{{ kb_msu | regex_replace('.msu','.xml') }}"
    #Beispiel 2) kb_msu'-KB'Wann'-'Wannの間の数字を抽出
    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. Ausführungsergebnis

# 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. Referenz

Klicken Sie hier, um zu erfahren, wie Jinja2-Filter auf der offiziellen Website (http://docs.ansible.com/ansible/playbooks_filters.html) verwendet werden. Verschiedene andere nützliche Filter (z. B. Windows-Filter und Filter, die regulären Ausdrücken entgehen) Wird hinzugefügt / aktualisiert? Da es fertig war, kann es gut sein, regelmäßig einen Blick darauf zu werfen.

Darüber hinaus ist es derzeit (04.07.2016) nicht auf der offiziellen Website aufgeführt. Es scheint, dass "regex_search" und "regex_findall" auch für reguläre Ausdrücke verwendet werden können. Ab Version 2.2.0? Oder nicht? (ansible 2.2.0 (devel 394430a61e) zuletzt aktualisiert am 28.06.2016 13:25:07 (GMT +900) war verwendbar)

Unten finden Sie einen Teil des Codes für das Ansible-Webinar https://github.com/privateip/Ansible-Webinar-Mar2016/blob/master/roles/network_facts/tasks/ios.yaml

Recommended Posts

Ansible Jinja2-Filter Ersetzen und extrahieren Sie variable Zeichenfolgen durch reguläre Ausdrücke
Zahlen mit regulären Ausdrücken extrahieren
Ersetzen Sie Nicht-ASCII durch reguläre Ausdrücke in Python
Unterscheiden Sie zwischen Zahlen und Buchstaben mit regulären Ausdrücken
Entfernen Sie zusätzliche Zeichenfolgen in der URL mit kanonischem Ausdruck
Ersetzen und löschen Sie Zeichenfolgen
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Über Python und reguläre Ausdrücke
[Anfänger] Extrahieren Sie Zeichenketten mit Python
Umgang mit regulären Ausdrücken durch PHP / Python