Основная причина
Настройка remote_user
в playbook (remote_user: root
в вопросе) игнорируется при использовании Ansible Provider в Vagrant с настройками по умолчанию.
Объяснение
Существует важное различие между "обычными" переменными и переменными соединения в Ansible в отношении приоритета:
Другая важная вещь, которую следует учитывать (для всех версий), - это то, что переменные соединенияпереопределить конфигурацию, командную строку и параметры / директивы, относящиеся к игре / роли / задаче.Например:
ansible -u lola myhost
Это все равно будет подключено как ramon, потому что ansible_ssh_user настроен на ramon в инвентаре для myhost.Для игр / задач это также верно для remote_user:
- hosts: myhost
tasks:
- command: i'll connect as ramon still
remote_user: lola
Это сделано для того, чтобы специфичные для хоста настройки могли переопределять общие настройки.
Поскольку вы используете Vagrant, он создает файл инвентаризации в каталоге .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
и по умолчанию (зависит также от заданий коробки) указывает ansible_user='vagrant'
внутри, что означает, что remote_user: root
переопределяетсяпо умолчанию.
Это также упоминается в Vagrant docs :
force_remote_user
(логическое значение) - требуется Vagrant для установки ansible_ssh_user
установка в сгенерированном инвентаре или в качестве дополнительной переменной при использовании статического инвентаря. Все параметры Ansible remote_user
будут затем переопределены значением config.ssh.username
настроек Vagrant SSH.
Если для этой опции установлено значение false
Vagrant установит VagrantИмя пользователя SSH в качестве удаленного пользователя Ansible по умолчанию, но параметры remote_user
ваших игр или заданий Ansible будут по-прежнему учитываться и, следовательно, переопределять конфигурацию Vagrant.
Значение по умолчанию true
.
Решения
Вы можете:
изменить свою игру, добавив become: true
либо ко всей игре, либо к одной задаче;
установите force_remote_user
в false
в Vagrantfile;
установите config.ssh.username
в root
в Vagrantfile.
Первый путь предпочтительнее.