2017-02-21 5 views
0

Ich habe einige verschachtelten Standardvariablen in meinem /defaults/main.yml:wie verschachtelte Standardwerte in ansible zu überschreiben

php_fpm_pools: 
    - name: www 
    user: php-fpm 

Im Textbuch, ich den Benutzer Standardwert überschrieben werden soll, und habe ich versucht, die folgende Optionen, ohne Erfolg:

roles: 
    - { 
    name: php-fpm, 

    php_fpm_pools.[www].user: vagrant 
    php_fpm_pools.www.user: vagrant 
    php_fpm_pools.['www'].user: vagrant 
    } 

Was ist die korrekte Syntax, die ich verwenden, um über diesen Teil Standardwert zu überschreiben?

Antwort

2

Es gibt keine easy Möglichkeit, einen Teil des Standard-Dict/Liste zu überschreiben.

entweder Sie voll var überschrieben werden soll, wie:

roles: 
    - role: php-fpm 
    php_fpm_pools: 
     - name: www 
     user: vagrant 

Oder Ihre eigene Logik am Anfang der Rolle schreiben Sie Ihre Parameter mit Standardgrößen zu fusionieren.

Irgendwann gibt es eine einfache Abhilfe wie folgt aus:

def_pool_user: php-fpm 
php_fpm_pools: 
    - name: www 
    user: "{{ def_pool_user }}" 

Auf diese Weise können nur def_pool_user außer Kraft setzen kann.

+0

Danke für die Antwort. Ansible hier überrascht mich negativ, da dies den Zweck der Standardwerte übertrifft - wenn ich den ganzen Satz von 50 Werten aus dem Playbook erneut senden muss. In Ihrem zweiten Vorschlag muss der def_pool_user def_pool_www_user sein und ich werde die Arbeit in der Standarddatei duplizieren. –

+0

Standardvariablen sind in Ansible völlig in Ordnung. Sie müssen sie nur ein wenig reorganisieren. –

Verwandte Themen