2017-04-03 1 views
1

Ich mag würde einen Test in ansible tun und /etc/sysconfig/rhn/up2date unter Attribute haben keinen Wert in der Datei sicher:Stat-Register in ansible für Sonderzeichen

proxyUser= 
proxyPassword= 

Dazu habe ich die folgenden Befehle einschließlich $ verwendet am Ende von proxyPassword = und proxyUser = um zu überprüfen, dass sie leer sind und keinen Wert haben.

- name: Check proxy configuration for Red Hat Subscription manager 
    shell: "grep -i proxy /etc/sysconfig/rhn/up2date" 
    register: cmd_result 

- name: Make sure that proxy configuration for Red Hat Subscription manager is as expected 
    assert: 
    that: 
     - "'proxyPassword=$' in cmd_result.stdout" 
     - "'proxyUser=$' in cmd_result.stdout" 

Allerdings habe ich Fehler bekommen. Es sieht so aus, dass Ansible diese Zeile in meiner Datei nicht findet, obwohl sie existiert.

Ich habe versucht, \ vor Sonderzeichen ($), wie folgend:

proxyUser=\$ 
proxyPassword=\$ 

Noch immer Fehler. Irgendeine Idee darüber?

Antwort

0

Ich denke, wäre einfacher, die Logik auf den grep Befehl (Beispiel für GNU grep) zu bewegen:

grep -e proxyUser=$ -e proxyPassword=$ /etc/sysconfig/rhn/up2date 

Dann mit in Operator für die proxyUser und proxyPassword Saiten mit einem einfachen assert fortzufahren.

Achten Sie auf den Rückgabecode von grep, der dazu führen kann, dass die Aufgabe fehlschlägt, wenn keine Übereinstimmungen auftreten. Überprüfen Sie die Problemumgehung in this answer.

Außerdem: es könnte sich von Anfang bis Ende der Zeile überprüfen, so dass Grep nicht übereinstimmen Kommentare (^proxyUser=$).

Auch für einen vollständig zuverlässigen Code möchten Sie vielleicht überprüfen, ob nicht überschreibende Einstellungen sind, d. H. Die grep-Logik ändern, um nach Zeilen mit einem Wert nach = zu suchen.


Andernfalls könnten Sie die Saiten in stdout_lines mit filters übereinstimmen, aber das würde erfordern die Ergebnisse Schleifen.


Noch ein anderes Verfahren eine native ansible Modul wie lineinfile mit check_mode: yes Satz in der Aufgabe und wirken auf der Grundlage des Ergebnisses zu verwenden wäre.

Dies würde das Spiel tragbarer machen, da Sie GNU/BSD-Unterschiede in grep Syntax nicht berücksichtigen müssten.