Spielbücher
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
Ich importiere Rollen und spiele aus einem anderen Verzeichnis, also habe ich in ansible.cfg
[defaults]
roles_path = ../../../deployment/playbooks/roles
OSX 10.10.5
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.
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
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
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
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.
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 ...
Hilfreichster Kommentar
Vielleicht sollten Sie die Dokumentation reparieren? Nicht ganz offensichtlich ...