2016-07-17 8 views
1

だから私は、この脚本を持って、この脚本で、私は、変数を持っている、のはthe_var それを呼びましょう今、この変数は常にそれがnot_defaultAnsible変数優先

これがあるべきである特定の在庫を除いて同じ値defaultを持つ必要があります私はそれをやったどのように私はansible-playbook -i inventories/my_special_invを実行すると、私はデフォルトでもオーバーライドするので、変数の値が(not_defaultことを期待

[all:vars]下)group_vars/all.ymlの下で私はthe_var: defaultを入れてinventories/my_special_invの下で、私はthe_var=not_defaultを置きますインベントリファイルを使用する)。それはdefaultに設定されています

この動作を正しく実装するにはどうすればよいですか?

私はあなたがそれをよりよく理解するのに役立ちます作業例与えている

答えて

0

special/inventorydefault/inventory両方の内側に、私はこのグループを持っているので、私はローカルホストのホストに対してそれをちょうどテストしている。この例では

. 
|-- default 
| |-- group_vars 
| | `-- server.yml 
| `-- inventory 
|-- site.yml 
|-- special 
| |-- group_vars 
| | `-- server.yml 
| `-- inventory 

を私の場合、それはです。重要なことは、グループ名である

[server] 
localhost 

、それはdefault/group_varsspecial/group_varsファイル名で一致する必要があります(:、しかし、あなたは何でもあなたの必要性ごとに置くことができますしかし、あなたのケースでは、何もすることができます):

のでdefault/group_varsで、私が置かれています:

--- 
the_var: default 

をしてspecial/group_varsで、私が置かれています:

--- 
the_var: not_default 

私のテストプレイブックで(この場合のsite.yml)は、以下を有する。

--- 
- hosts: all 
    gather_facts: no 
    tasks: 
    - debug: 
     msg: "{{ the_var }}" 
私はデフォルトのインベントリに対する脚本を呼び出すとき210は今、この値を得た:私は特別な在庫に対する脚本を呼び出すときに、この値だ
anansible-playbook -i default site.yml -c local          

PLAY [all] ********************************************************************* 

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "msg": "default" 
} 

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

ansible-playbook -i special site.yml -c local 

PLAY [all] ********************************************************************* 

TASK [debug] ******************************************************************* 
ok: [localhost] => { 
    "msg": "not_default" 
} 

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

-c local

は、ローカルホストの接続用ですがいますあなたのライブ環境では必要ありませんが、私はあなたがデフォルトであるssh接続でリモートホストで作業していると確信しています。それがあなたを助けることを願っています