2017-12-15 3 views
0

Ich bin neu bei Ansible und habe Probleme mit Ansible-Tresoren in Kombination mit Inventar-Dateien.Wie können Passwörter in verschlüsselten vars-Dateien (Vault) in Ansible-Inventar verwendet werden?

Was ich erreichen möchte, ist ein Playbook, das drei Maschinen aktualisiert. Zwei dieser Maschinen benötigen ein Passwort (für sudo), damit ich root werden kann.

Also hier ist mein Textbuch ...

--- 
- name: update all hosts, make sure default software is installed 

    hosts: 
    - vhosts 
    - physical 

    vars_files: 
    - 'vars/main.yml' 

    tasks: 

    - name: Update apt cache 
     apt: update_cache=yes 

    - name: Upgrade packages 
     apt: upgrade=dist 

... und das ist mein Inventar (Dateiname inventory) mit Passwörtern immer noch im Klartext:

[vhosts] 
10.0.0.1 ansible_user=root 

[physical] 
10.0.0.200 ansible_user=xxx ansible_become=yes ansible_become_method=sudo ansible_become_pass=secretpassword1 
10.0.0.201 ansible_user=yyy ansible_become=yes ansible_become_method=sudo ansible_become_pass=secretpassword2 

Dies funktioniert gut.

Aus dem Grund möchte ich secretpassword1 oder secretpassword2 im Inventar nicht. Also habe ich ein Depot (gespeichert in Datei vars/main.yml, die so aussieht:

--- 
- vars: 
    pass1:secretpassword1 
    pass2:secretpassword2 

Und änderte ich die Inventardatei dazu:

[vhosts] 
10.0.0.1 ansible_user=root 

[physical] 
10.0.0.200 ansible_user=xxx ansible_become=yes ansible_become_method=sudo ansible_become_pass="{{ pass1 }}" 
10.0.0.201 ansible_user=yyy ansible_become=yes ansible_become_method=sudo ansible_become_pass="{{ pass2 }}" 

Nun, wenn ich versuche, die Güte mit ansible-playbook update.yml -i inventory --ask-vault-pass auszuführen I erhalten folgende Fehler:

fatal: [10.0.0.200]: FAILED! => {"msg": "The field 'become_pass' has an invalid value, which includes an undefined variable. The error was: 'pass1' is undefined\nexception type: <class 'ansible.errors.AnsibleUndefinedVariable'>\nexception: 'pass1' is undefined"} 
fatal: [10.0.0.201]: FAILED! => {"msg": "The field 'become_pass' has an invalid value, which includes an undefined variable. The error was: 'pass2' is undefined\nexception type: <class 'ansible.errors.AnsibleUndefinedVariable'>\nexception: 'pass2' is undefined"} 

Es scheint, als ob ich nicht in der Lage war, meine Variablen richtig zu definieren, aber ich habe absolut keine Ahnung, wie dies zu tun ist, wenn jemand mir geben konnte.. eine Hand würde ich super glücklich sein. Vielen Dank.

Antwort

2

Machen Sie Ihre Vault-Datei wie folgt aussehen:

--- 
pass1: secretpassword1 
pass2: secretpassword2 

Ihr Fehler:

  1. Sie Variablen in falschen Format innerhalb YAML-Datei definiert werden.
Verwandte Themen