Параллельные процессы Ansible
Во-первых, нам нужно убедиться, что Vagrant настроил виртуальные машины с правильными именами хостов. Используйте аргумент Ansible -a
с аргументом "hostname"
для отображения hostname на всех серверах:
ansible multi -a "hostname"
Ansible будет запускать эту команду на всех серверах и возвращать результаты (если Ansible не удастся достичь какого-то сервера, на этом сервере будет отображена ошибка, но продолжится выполнение команды на других).
Если Ansible сообщает, что нет соответствующих хостов или возвращает inventory-related er-ror, попробуйте установить значение переменной среды ANSIBLE_HOSTS явным образом:
export ANSIBLE_HOSTS=/etc/ansible/hosts
. Обычно Ansible автоматически читает файл в /etc/ansible/hosts, но в зависимости от того, как вы установили Ansible, может потребоваться явно задать ANSIBLE_HOSTS для правильной работы команды ansible.
Возможно, вы заметили, что команды не выполнялись в том порядке, в котором вы ожидали. Запустите команду еще несколько раз и посмотрите порядок:
По умолчанию Ansible будут запускать команды параллельно. Если вы управляете несколькими серверами, это может ускорить процесс выполнения задач, чем выполнение команды последовательно, на каждом сервере.
Повторить эту команду еще раз, но на этот раз добавьте аргумент -f 1
, чтобы сказать Ansible использовать только один fork (по существу, для выполнения команды на каждом сервере по очереди):
$ ansible multi -a "hostname" -f 1
192.168.60.4 | success | rc=0 >>
orc-app1.dev
192.168.60.5 | success | rc=0 >>
orc-app2.dev
192.168.60.6 | success | rc=0 >>
orc-db.dev