Ansible: vars_files kann keine Fakten oder andere Variablen sehen, die eine Rolle in demselben Spiel kann

Erstellt am 10. Aug. 2017  ·  3Kommentare  ·  Quelle: ansible/ansible

AUSGABETYP
  • Fehlerbericht
KOMPONENTENNAME

Spielbücher

ANSIBLE VERSION
ansible 2.4.0
  config file = None
  configured module search path = [u'/Users/szabop/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /Library/Python/2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0
AUFBAU

Ich importiere Rollen und spiele aus einem anderen Verzeichnis, also habe ich in ansible.cfg

[defaults]
roles_path = ../../../deployment/playbooks/roles
OS / UMWELT

OSX 10.10.5

ZUSAMMENFASSUNG

Wenn ich versuche, mithilfe einer Variablen in vars_files (Komponententests sollten keine Produktionskennwörter verwenden!) Für importierte Spiele dynamisch zu entscheiden, welche Tresordatei ich importieren möchte, kann ich weder group_vars noch host_vars oder Fakten verwenden in einem Setup-Spiel einstellen. Ich kann nur ein ansible Befehlszeilenargument verwenden.

SCHRITTE ZUM REPRODUZIEREN

ansible-playbook -t app_test -i inventories/localhost/local.hosts unit.yml

---
#
# network.yml
#
- name: Setup the networks
  hosts: dockerhosts
  vars_files:
     - demoVars.yml
     - "{{ vault_file }}"   # this will only be valid if declared on the ansible command line.
  roles:
    - role: debug     # note this will print out a valid {{ vault_file }} in all cases (but comment out the vars_files line or it will error first)
    - role: network_setup
      options:
        internal: "{{ networks.internal }}"
        external: "{{ networks.external }}"
        nginx: "{{ networks.nginx }}"
  tags:
    - setup
    - standalone
    - app_test
# unit.yml
---
- name: create facts used to compose variables later in this playbook
  hosts: dockerhosts
  vars:
    esTmpDir: "/tmp/es"
  roles:
    - role: unitenv_setup
  tags:
    - app_test
- import_playbook: ../../../deployment/playbooks/network.yml
ERWARTETE ERGEBNISSE

Wenn die Variable vault_file in der ansible-Befehlszeile mit --extra-vars läuft das Skript einwandfrei. Es sollte einwandfrei funktionieren, wenn vault_file aus einer Inventardatei oder als Fakt in unitenv_setup wird, dies ist jedoch nicht der Fall

TATSÄCHLICHE ERGEBNISSE

Bei Verwendung einer anderen Methode als der Befehlszeile zum Festlegen von vault_file wird der folgende Fehler angezeigt:

PLAY [Setup the networks] *********************************************************************
ERROR! vars file {{ vault_file }} was not found

extrem ausführlicher Modus:

ETA: ran handlers
META: ran handlers
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable

PLAY [Setup the networks] *********************************************************************
Read vars_file 'demoVars.yml'
ERROR! vars file {{ vault_file }} was not found

affects_2.4 bug core

Hilfreichster Kommentar

Vielleicht sollten Sie die Dokumentation reparieren? Nicht ganz offensichtlich ...

Alle 3 Kommentare

Ich stelle fest, dass meine Produktionsumgebung etwas Komplexes hat, das ich scheinbar nicht in eine einfache, gemeinsam nutzbare Reproduktion bringen kann. Hier ist auf jeden Fall der Versuch zu reproduzieren.

Mögliches Missverständnis

Hallo!

Vielen Dank für Ihre Übermittlung an Ansible. Es bedeutet uns aufrichtig viel.

Wir glauben, dass das Ticket, das Sie eingereicht haben, etwas missverstanden wird, da eines etwas anders funktioniert als angegeben.

Fakten, Host- und Gruppen-Vars. Grundsätzlich sind keine 'Host-assoziierten Vars' für vars_files verfügbar. Zu diesem Zeitpunkt sind nur Vars mit Spielbereich oder zusätzliche Vars verfügbar. Verwenden Sie stattdessen eine include_vars Aufgabe.

In Zukunft könnte dies ein Thema sein, das besser für die Benutzerliste geeignet ist. Sie können es auch hier posten, wenn Sie weitere Hilfe zu den oben genannten Themen benötigen.

Nochmals vielen Dank dafür und Ihr Interesse an Ansible!

Vielleicht sollten Sie die Dokumentation reparieren? Nicht ganz offensichtlich ...

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen