Я пытаюсь использовать доступную синхронизацию для копирования файлов между двумя пультами дистанционного управления.
Моя книга выглядит так:
- hosts: newserver
tasks:
- name: Copy images from old to new
synchronize:
src: /var/www/production/
dest: /var/www/production/
delegate_to: oldserver
куда newserver
и oldserver
определены в моем инвентарном файле. Если я заменю oldserver
с полным именем хоста работает delegate_to. В противном случае он жалуется на недоступность. oldserver
отлично работает в других местах в других плейбуках.
Не использует ли delegate_to инвентарь?
Я получаю следующую ошибку:
TASK [Copy images from old to new] *************************************************
fatal: [thr.cs.unc.edu]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ", "unreachable": true}
newserver
доступен из oldserver
. Как я сказал выше, если я изменю oldserver
к gbserver3.cs.unc.edu
в delegate_to он работает.
Файл моих хостов выглядит так:
[newserver]
thr.cs.unc.edu
[oldserver]
gbserver3.cs.unc.edu
delegate_to
ожидает инвентаризации имя хоста.
Из вашего инвентаря, oldserver
это Название группы потенциально может содержать несколько имен хостов.
Быстрое и грязное решение, если вы уверены, что ваша группа всегда будет содержать один хост, - это использовать первый в списке внутри группы. Итак, в этом случае вы можете delegate_to: "{{ groups['oldserver'][0] }}"
Проблема в том, что newserver
и oldserver
не имена хостов, а имена групп. Это невозможно delegate_to группа. Видеть Основы инвентаризации: форматы, хосты и группы
[newserver]
thr.cs.unc.edu
[oldserver]
gbserver3.cs.unc.edu
Исправьте инвентарь. Например
newserver ansible_host=thr.cs.unc.edu
oldserver ansible_host=gbserver3.cs.unc.edu