2017-05-11 4 views
1

私はネストされた不可解なプレイブック(マスター)ファイルを持っています。私は含まれているプレイブック(スレーブ)に自分のJSONバールを呼びたいと思っています。入れ子にされた無能なプレイブックでvarsを渡すには?

Master.yaml

- name: this is a play at the top level of a file 
    hosts: local 
    connection: local 
    tasks: 
    - debug: msg=hello 

- include: slave_first.yaml 
- include: slave_second.yaml 

slave_first.yamlは "VARS/slave_second_vars.json" ファイルの使用をしなければならない "VARS/slave_first_vars.json" ファイルとslave_second.yamlを利用する必要があります。

答えて

3

ようにあなたが唯一、vars文で変数を上書きすることができますプレイブックを含む:PlaybookIncludeのための他のオプションはありません

- include: slave_first.yaml 
    vars: 
    myvar: foo 
- include: slave_second.yaml 
    vars: 
    myvar: foo 

を。

ファイルから変数をロードする必要がある場合は、スレーブのプレイブックにvars_filesまたはinclude_varsを使用する必要があります。あなたのシナリオでは

0

、私はこのように使用します、master.yml:このようなものです

- hosts: localhost 
    connection: local 
    tasks: 
    - include: slave_first.yml 
     vars: 
     VAR_FILE: "slave_first_vars" 
    - include: slave_second.yml 
     vars: 
     VAR_FILE: "slave_second_vars" 

slave_first.ymlながらslave_second.yml、私の場合には、どちらも同じですが、あなたは、あなたがそれらを使用することができますどのようにアイデアを得ます: slave_first.yml:

--- 
- include_vars: "{{ VAR_FILE }}.yml" 

- debug: 
    msg: "{{ DOMAIN_NAME }}" 

slave_second.yml:

--- 
- include_vars: "{{ VAR_FILE }}.yml" 

- debug: 
    msg: "{{ DOMAIN_NAME }}" 

今すぐ別の変数部分に来る:あなたのケースで slave_first_vars.yml:を、それは次にあなたが実行して仕事として期待される場合ことを確認することができますjson

--- 
DOMAIN_NAME: "first.com" 

slave_second_vars.yml:

--- 
DOMAIN_NAME: "second.com" 

次のようになります。

➤ansible-playbook -i localhost, master.yml 

PLAY [localhost] ********************************************************************************** 

TASK [Gathering Facts] ********************************************************************************** 
ok: [localhost] 

TASK [include_vars] ********************************************************************************** 
ok: [localhost] 

TASK [debug] ********************************************************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "first.com" 
} 

TASK [include_vars] ********************************************************************************** 
ok: [localhost] 

TASK [debug] ********************************************************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "second.com" 
} 

PLAY RECAP ********************************************************************************** 
localhost     : ok=5 changed=0 unreachable=0 failed=0 

希望するmiあなたを助けて!

関連する問題