2016-06-19 6 views
0

私はファイルからいくつかの変数を使用する役割を構築しようとしています。 この変数は、すべてのロールに対して定義するいくつかの共通変数にも依存しますが、コピーを持たないものは&を1つの変数ファイルに貼り付けます。変数内の可能な変数

どうすればいいのか分かりませんが、私はvarsファイルだけについて話しています。

など。 roles/dns/tasks/main.ymlには、特定の場所のファイルが含まれています。

- include_vars: ../vars/dns/domains_{{ location }}.yml 

場所はロールレベルで定義されています。この内部Iは、例えば、さまざまなDNS名の設定を定義しようとしています。:

domains: [ 
    { 
    domain: "domain.com", 
    location: "america", 
    ip: "xx.xx.xx.xx", 
    ttl: 1800, 
    mx: "10 mail", 
    subdomains: [ 
     { name: "www", ip: "xx.xx.xx.xx"}, 
    ] 
    }, 
] 

をので、ここで私はそれぞれ、すべてのエントリに定義された同じIPを持っています。 いくつかのグローバルvarファイルへのすべてのIP(例えばgroup_vars /すべて/ vars_file.yml)を入れて、このように、この役割の特定varファイル内でそれを使用する方法があります:

domains: [ 
    { 
    domain: "domain.com", 
    location: "america", 
    ip: server.america.ip, 
    ttl: 1800, 
    mx: "10 mail", 
    subdomains: [ 
     { name: "www", ip: server.america.ip }, 
    ] 
    }, 
] 

がserver.america.ipがありますグローバルなどこかで定義されている?

答えて

1

はい、可能です。変数ファイルは実際にはjinjaでも実行されるので、変数ファイルに基本式と変数を含めることができます。

domains: [ 
    { 
    domain: "domain.com", 
    location: "america", 
    ip: "{{ server.america.ip }}", 
    ttl: 1800, 
    mx: "10 mail", 
    subdomains: [ 
     { name: "www", ip: "{{ server.america.ip }}" }, 
    ] 
    }, 
] 
0

たとえば、ロールYのタスク/ main.ymlの先頭に、ロールXの変数を含めることができます。 共通の役割を持っている場合は、たとえば、この場所に場所を入れてみましょう。 潜在的な問題は、インクルード変数を呼び出すために 'with_items'を使う必要があるかもしれないということだけです。

関連する問題