2016-07-13 25 views
1

我的樣品劇本(用於ansible 2.1)是:劇本中的主持人的默認值?

--- 
# This is sample playbook. 

- name: add sample_role 
    hosts: '{{ target }}' 
    become: true 
    become_user: root 
    roles: 
    - sample role 

當我運行它,一切都很好:

ansible-playbook -i staging test_playbook.yml --extra-vars "target=192.168.15.29" 

我怎麼能忽略目標?

我已經試過這樣的事情:

hosts: '{{ target | default(all) }}' 

hosts: '{{ target | default(hostvars) }}' 

然後運行:

ansible-playbook -i staging test_playbook.yml 

,但遺憾的是:

錯誤! '所有' 是未定義

或:

錯誤! 「HOSTVARS」未定義

回答

3

如果您只需添加all中沒有報價,然後它把它作爲變量,這樣你就可以修復它是這樣的:

hosts: '{{ target | default("all") }}'

hostvars這是一個保留字在我看來,這是不可能的。它的價值將是這樣的:

ok: [localhost] => { 
    "msg": { 
     "localhost": { 
      "ansible_check_mode": false, 
      "ansible_version": { 
       "full": "2.1.0.0", 
       "major": 2, 
       "minor": 1, 
       "revision": 0, 
       "string": "2.1.0.0" 
      }, 
      "group_names": [], 
      "groups": { 
       "all": [ 
        "localhost" 
       ], 
       "ungrouped": [] 
      }, 
      "inventory_dir": null, 
      "inventory_file": null, 
      "inventory_hostname": "localhost", 
      "inventory_hostname_short": "localhost", 
      "omit": "__omit_place_holder__41c600ef78930ed8b38e6eed4e5b5ab51199729e", 
      "playbook_dir": "/Users/xyz/test-ansible" 
     } 
    } 
} 

希望可以幫助你。

+0

「all」周圍的雙引號對我有用:''''hosts:'{{target |默認(「全部」)}}''''' –