Donnerstag, Juni 4, 2020

System-spezifische Variablen in ansible

Ansible erwartet, dass python 2. Auf meinem system (Arch Linux), „python“ Python 3, also ich pass -e "ansible_python_interpreter=/usr/bin/python2" mit jedem Befehl.

ansible-playbook my-playbook.yml -e "ansible_python_interpreter=/usr/bin/python2"

Ist es ein Weg, um set ansible_python_interpreter Global auf meinem system, so dass ich nicht haben, um es zu übergeben, um jeden Befehl? Ich will nicht, um es in meine playbooks, da nicht alle Systeme, läuft das playbook hat eine Konfiguration ähnlich der meinen.

3 Kommentare

  1. 29

    Gut Sie können auf drei Arten

    1. http://docs.ansible.com/intro_inventory.html#list-of-behavioral-inventory-parameters ansible_python_interpreter=/usr/bin/python2 so wird es pro host
    2. Legen Sie es host_vars/ ansible_python_interpreter: "/usr/bin/python2" so wird es pro host
    3. legen Sie es für alle Knoten in der Datei group_vars/all (eventuell müssen Sie das Verzeichnis erstellen group_vars und die Datei all) als ansible_python_interpreter: "/usr/bin/python2"

    Hoffe, das hilft

    • Ich will Sie nicht überall auf dem playbook, das ist der Punkt 🙂 Die Tatsache, dass ich brauche, ansible python2 auf meinem Rechner speziell sollte nicht auf andere mit dem playbook.
    • Zuerst die oben genannten änderungen, die nur das Inventar hosts_vars und groups_vars nichts playbook. Aber Sie verwalten Arch linux oder gemischt env?
    • Dies ist nicht wirklich die Antwort. Ich bin auch auf der Suche nach einer Lösung, die nicht mit playbooks für die ich verwenden Ansible Tower und bei Verwendung eines GIT-Projekt es verwendet Ansible ist in python 2.6 mit Krypto-Fehler, wo, wie meine Ansible Tower hat der 2.7 lib!
    • Dies beinhaltet nicht playbooks. dieser ist definiert in der folgenden a) Bestandsaufnahme-Datei b) host_vars oder c) group_vars. Ihr nicht ändern, das playbook oder eine Rolle auf dieser Ebene so 100% portable. Ich würde empfehlen, group_vars
  2. 3

    Ich entschied sich für die Verwendung Ansible s-Fähigkeit, die Quelle Bestand aus einem Verzeichnis. Auf diese Weise konnte ich definieren, die ansible_python_interpreter für nur der localhost für den lokalen Computer

    inventory_dir/local

    [local]
    localhost ansible_python_interpreter="/path/to/alternate/bin/python"
    

    Dann nutzen Sie einfach das Verzeichnis als würden Sie ein inventory-Datei.

    ansible-playbook -i inventory_dir playbook.yml

    • Sie konnte gerade genannt haben, es inventory (die Sie nicht nennen local local_file) 😀
  3. 1

    Für die, die wollen, verwenden Sie die lokale aktiviert virtualenv python-interpreter

    in inventory – Datei eingestellt

    [local]
    localhost ansible_python_interpreter=python
    

Kostenlose Online-Tests