2016-03-15 3 views
0

Я пытаюсь настроить очень хакерскую среду развертывания vm, используя незаменимый 1.9.4 для моего homeoffice.Несущие динамические хосты пропускают

Я довольно далеко, но последний шаг просто не сработает. У меня есть письменный плагин 10loc, который генерирует временные имена DNS для промежуточного vlan, и я хочу передать это значение в качестве хоста для следующей роли в ролике.

 

    TASK: [localhost-eval | debug msg="{{ hostvars['127.0.0.1'].dns_record.stdout_lines }}"] *** 
    ok: [127.0.0.1] => { 
     "msg": "['vm103.local', 'vm-tmp103.local']" 
    } 

Это доступно в глобальном масштабе PlayBook через hostvars:

{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}

и должны быть переданы:

 

    - name: configure vm template 
     hosts: "{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}" 
     gather_facts: no 
     roles: 
     - template-vm-configure 

, что приводит к:

PLAY [configure vm template] ************************************************** 
skipping: no hosts matched 

мой инвентарь выглядит как и, похоже, работает. Hardcoding 'vm-tmp103.local' получает роль.

[vm] 
vm[001:200].local 
[vm-tmp] 
vm-tmp[001:200].local 

Заранее благодарю вас, надеюсь, кто-то может указать мне в правильном направлении. План B состоит в передаче dns-записей в сценарий bash для завершения настройки, так как я просто хочу настроить сетевой интерфейс перед добавлением vm к мониторингу.

Edit: Модифицированный игру использовать добавить узлы и добавить их к группе темп - add_host: имя = {. {Hostvars [ '127.0.0.1'] dns_record.stdout_lines [1]}} группы = just_vm

но он все еще не совпадает.

+0

Я не вижу проблемы. Если эти хосты действительно находятся в инвентаре, это не должно приводить к тому, что «никакие хосты не совпадают». В качестве альтернативы добавлению узлов в инвентарь вы можете использовать модуль add_host: http://docs.ansible.com/ansible/add_host_module.html – udondan

+0

Получил его, но, похоже, он тоже не работает, он все еще говорит, что нет хосты согласованы.

ok: [vh-desktop.local] => {"new_host": "vm-tmp103.local"} PLAY [configure vm template] ************************************************** skipping: no hosts matched 
joeysql1

+0

Это действительно странно. Раньше я использовал метод add_host в Ansible 1.9.4, поэтому я, по крайней мере, знаю, что в этой версии нет общей проблемы. Оба варианта должны были работать, ИМХО. – udondan

ответ

0

Это не намеренное поведение, я думаю. #9733 привести меня к решению.

Добавив эту задачу, позвольте мне использовать постановку в качестве группы.

tasks: 
    - set_fact: hostname_next="{{ hostvars['127.0.0.1'].dns_record.stdout_lines[1] }}" 
    - add_host: group=staging name='{{ hostname_next }}' 
Смежные вопросы