Выполнение collect_facts: true завершается с ошибкой «uid not found: 1001» - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть ANSIBLE-PlayBook, для которого для collect_facts установлено значение true. Но он не может получить UID. Вот ошибка, которую я получаю:

TASK [Gathering Facts] **************************************************************************************************************************************************************
The full traceback is:
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 144, in run
    res = self._execute()
  File "/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 516, in _execute
    self._play_context = self._play_context.set_task_and_variable_override(task=self._task, variables=variables, templar=templar)
  File "/usr/lib/python2.7/site-packages/ansible/playbook/play_context.py", line 335, in set_task_and_variable_override
    new_info.remote_user = pwd.getpwuid(os.getuid()).pw_name
KeyError: 'getpwuid(): uid not found: 1001'

fatal: [localhost]: FAILED! => {
    "msg": "Unexpected failure during module execution.",
    "stdout": ""
}

Теперь в настройке присутствует идентификатор 1001:

$ echo $UID
1001

Я запускаю это внутри контейнера, это может быть проблемой? Любые указатели, которые помогут отладить это, приветствуются. ТИА.

1 Ответ

1 голос
/ 01 октября 2019

Я запускаю это внутри контейнера, может ли это быть проблемой?

Хотя это не создает автоматических проблем, возможно, это уместно, поскольку вы можете легче выполнитьпроцесс как произвольный UID внутри контейнера докера. Обычно вы не видите этой проблемы на виртуальной машине, потому что для запуска чего-либо на виртуальном хосте вы должны сначала пройти аутентификацию, что почти всегда включает поиск всех видов пользовательской информации в /etc/passwd. Однако обычно для контейнера не выполняется процесс входа в систему, поскольку это просто обман пространства имен Linux

Вы можете попробовать его самостоятельно, запустив docker run --rm -u 12345 ubuntu:18.04 id -a и наблюдая за uid=12345 gid=0(root) groups=0(root), но в * 1010 нет записи* для UID 12345 (обратите внимание на отсутствие (something) после результата uid=)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...