2017-02-10 29 views
0

У меня есть playbook, и я хочу определить список строк в файле моих хостов.Неспособный, как определить список в инвентаре хоста?

Вот мой хост-файл:

[dashboard] 
1.2.3.4 dashboard_domain=test site_domain=['one','two','foo', 'bar'] 

Вот мой сборник пьес, которые я попытался написать с помощью list documentation:

--- 
- hosts: dashboard 
    gather_facts: False 
    remote_user: ubuntu 
    become: yes 

    tasks: 

    - name: ping 
     ping: 

    - debug: 
     msg: "Domain: {{dashboard_domain}}" 

    - debug: 
     msg: "Site: {{ item }}" 
     with_items: "{{site_domain}}" 

Однако работает этот сборник пьес с ansible-playbook -i hosts ping.yml причины этой ошибки:

TASK: [debug ] ****************************************************************
fatal: [1.2.3.4] => with_items expects a list or a set

Это, похоже, проблема передачи определенный список из хоста-файла в PlayBook, поскольку определение перечня непосредственно в PlayBook работает:

--- 
- hosts: dashboard 
    gather_facts: False 
    remote_user: ubuntu 
    become: yes 
    vars: 
    site_domain: ['one','two','foo', 'bar'] 
    tasks: 

    #### APPLY HTTP-AUTH #### 
    - name: ping 
     ping: 

    - debug: 
     msg: "Domain: {{dashboard_domain}}" 

    - debug: 
     msg: "Site: {{ item }}" 
     with_items: "{{site_domain}}" 

ответ

1

Просто процитирует значение переменного:

[dashboard] 
1.2.3.4 dashboard_domain=test site_domain="['one','two','foo', 'bar']" 

Кажется, в случае INI-файлов в формате инвентаризация , Ansible не анализирует значение переменной, если оно начинается с некотируемого [ и передает его как строку.


Что касается вашего примера: я не знаю, почему вы не получаете expected key=value ошибка при чтении файла инвентаризации, если у вас действительно есть пространство внутри.