2017-12-12 2 views
0

Ich habe eine ansible tomcat Rolleansible Weitergabe auf einem zugeordneten variablen

defaults/main.yml

tomcat_http: 
    port: "8080" 
    protocol: "HTTP/1.1" 
    connectionTimeout: "120000" 
    URIEncoding: "UTF-8" 

Ich habe eine weitere Rolle (APP), die tomcat Rolle als Abhängigkeit verwendet und sieht aus wie unten

defaults/main.yml

app_uriencoding: "ISO-8859-1" 

meta/main.yml

dependencies: 
    - { role: common, tags: app } 
    - { role: tomcat, tomcat_http.URIEncoding: "{{ app_uriencoding }}", tags: app } 

Wenn ich die App Rolle auf meine Ziele laufen, erwartet Im die in der App Rolle (ISO-8859-1) definiert URIEncoding Wert auf die tomcat Rolle übergeben werden und die tomcat Rolle Standardwert für URIEncoding außer Kraft setzen.

Ich bin nicht in der Lage, einen Wert in tomcat Rollen '{{ tomcat_http.URIEncoding }} übergeben. Einige der Optionen, die ich versucht habe

Entweder bekomme ich Syntaxfehler oder es funktioniert einfach nicht. Bitte lassen Sie mich wissen, wenn jemand Ideen hat, wie man einen Wert in eine gemappte Variable übergibt.

Antwort

1

In der Regel ist dies nicht möglich, da Ansible-Konfigurationsvariablen bei Standardeinstellungen (und empfohlen) Vorrang vor denen mit niedriger Priorität haben.

Aber es gibt hash_behavior Option, die Sie auf merge einstellen können.

In diesem Fall können Sie verwenden:

- role: tomcat 
    tomcat_http: 
    URIEncoding: "{{ app_uriencoding }}" 
    tags: app 

Auf diese Weise tomcat_http von var Rolle wird mit Rolle der Standardwerte zusammengefasst werden. Aber Vorsicht, dies kann einige andere Teile Ihrer Spielbücher abbremsen.

Wenn Sie erwarten, Rolle der Standardwerte unabhängig außer Kraft gesetzt werden, zu verwenden:

tomcat_http_port: "8080" 
tomcat_http_protocol: "HTTP/1.1" 
tomcat_http_connectionTimeout: "120000" 
tomcat_http_URIEncoding: "UTF-8" 
Verwandte Themen