2016-07-13 2 views
1

Мой образец сборник пьес (для анзибль 2.1) является:Значение по умолчанию для недоступных хостов в playbook?

--- 
# 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 | default ("all")}} ''' '' –

Смежные вопросы