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. ..
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 }}"
# 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
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