2017-01-27 2 views
-1

Jedes Mal, wenn ich versuchen, ein Paket wie folgt aus (als Beispiel) auf Ubuntu zu installieren;apt-get nicht Registrierung Variable in ansible

- name: Install gcc 
    apt: 
    name: gcc 
    state: present 
    allow_unauthenticated: yes 
    register: aptout 

Unabhängig davon, ob gcc nicht installiert ist, bekomme ich dies für aptout;

- debug: 
    msg: "Status is {{ aptout }}" 

.

"msg": "Status is {'skipped': True, 'changed': False, 'skip_reason': u'Conditional check failed'}" 

Ich wollte diese Überprüfung registrieren, so dass ich Aufgaben, wenn das Paket bereits mit not aptout.changed und aptout.changed installiert überspringen kann, aber es scheint nicht die Variable ordnungsgemäß registriert zu sein.

Dies funktioniert gut auf RedHat/CentOS, sondern kann einfach nicht das Problem mit Ubuntu herauszufinden.

+1

Bitte senden Sie die [MCVE] (https://stackoverflow.com/help/mcve). Wenn Sie verwirrt sind, was Sie tun sollten - beginnen Sie mit dem Code dieser Frage (nicht der, die Sie gerade ausführen) und fügen Sie Dinge hinzu, bis Sie den Fehler erhalten, den Sie gepostet haben. Wenn Sie das bekommen, schreiben Sie den Code voll (und nicht den vollen Code, den Sie gerade ausführen, sondern den minimalen Code, den Sie benötigen, um das Problem zu replizieren). – techraf

+0

Versuchen Sie [diese] (http://chaosmail.github.io/programming/2015/03/04/install-deb-packages-in-ansible/) – Roopendra

Antwort

1

Alles funktioniert wie erwartet.

apt_out = { 'skipped': True, 
      'changed': False, 
      'skip_reason': u'Conditional check failed'} 

ansible sagt, dass Ihre Aufgabe ausgeführt wurde nicht: (?, Warum Sie sind es nicht in dem Beispiel) skipped: true, wegen falscher Zustand.

So kann es nicht erraten ist gcc installiert oder nicht, weil es nicht Veranstaltung diese Aufgabe gestartet wurde.

+0

Sind Sie ansible 2.1 oder 2.2 (ich verwende 2.1) unter Verwendung von ? Das Problem ist, dass es unabhängig davon, ob gcc installiert ist oder nicht, immer wieder sagt. Es sollte nicht als übersprungen angezeigt werden, wenn es nicht ursprünglich auf dem Server ist. – user1165419

+0

@ user1165419 Sie verwenden 'when' Anweisung, die während der Ausführung Ihres Playbooks als false ausgewertet wird - deshalb wird Ihre Aufgabe übersprungen. Entfernen Sie 'when' Anweisung und Aufgabe wird immer ausgeführt, wobei Sie einen' geänderten' Wert angeben. –

+0

Sie haben Recht. Ich muss das gesamte Playbook posten, ich denke, dass ich versuche, gcc für ubuntu und centos zu installieren, indem ich dieselben Variablen verwende. Also wenn ich es für ubuntu installieren will, installiert es es (registriert die Variable als 'geändert'), dann überspringt Centos (registriert die gleiche Variable wie 'übersprungen'), was wir sehen. Mhm, muss einen Weg finden, um die Registrierung der Variablen zu vermeiden, wenn die Aufgabe übersprungen wird. – user1165419

Verwandte Themen