Объединение всех моих комментариев во всеобъемлющий ответ.
<127.0.0.1> ESTABLI SH МЕСТНОЕ СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: appuser
Это указывает на то, что вы подключаетесь к localhost через подключаемый модуль local
, либо потому, что вы явно повторно объявили хост как таковой, либо потому, что вы используете неявный localhost . Из обсуждений вы попадаете во вторую ситуацию.
При использовании подключаемого модуля local
, как указано в приведенной выше документации, remote_user
игнорируется. Попытка изменить пользователя не имеет никакого эффекта, как вы можете видеть в следующем тестовом прогоне (идентификаторы пользователя (u) изменены):
# Check we are locally running as user1
$ id -a
uid=xxxx(user1) gid=yyy(group1) groups=yyy(group1)
# Running the same command through ansible returns the same result
$ ansible localhost -a 'id -a'
localhost | CHANGED | rc=0 >>
uid=xxxx(user1) gid=yyy(group1) groups=yyy(group1)
# Trying to change the remote user has no effect
$ ansible localhost -u whatever -a 'id -a'
localhost | CHANGED | rc=0 >>
uid=xxxx(user1) gid=yyy(group1) groups=yyy(group1)
Без изменения вашей книги и / или инвентаря, единственное решение - запустить playbook как пользователь, которому необходимо создать каталог.
Так как у вас есть s sh, другое решение - объявить новый хост, который вы будете использовать только для этой цели, который будет нацелен на локальный IP через с sh. (Примечание: вы можете явно объявить localhost
как это, но тогда все соединения будут go через s sh, что может быть не тем, что вы хотите сделать).
Где-то наверху вашего инвентаря, добавьте строку:
localssh ansible_host=127.0.0.1
И в вашей игровой книге измените
hosts: localssh
Теперь подключение к вашей локальной машине будет go через s sh и remote_user
будет быть послушным правильно.