Ansible 运行“收集事实:true失败,并使用”;找不到uid:1001“;

Ansible 运行“收集事实:true失败,并使用”;找不到uid:1001“;,ansible,Ansible,我有一本可靠的剧本,它把收集到的事实变成了事实。但它无法获取uid。以下是我得到的错误: TASK [Gathering Facts] ************************************************************************************************************************************************************** The full traceback is:

我有一本可靠的剧本,它把收集到的事实变成了事实。但它无法获取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 uid:

$ echo $UID
1001
我在一个容器中运行这个,这会是一个问题吗?任何有助于调试的指针都将不胜感激。蒂亚

我在一个容器中运行这个,这会是一个问题吗

虽然这不会自动造成问题,但这可能是相关的,因为您可以更轻松地在docker容器中以任意UID的形式执行流程。您通常不会在虚拟机上看到这个问题,因为为了在虚拟主机上运行任何东西,您必须首先进行身份验证,这几乎总是涉及在
/etc/passwd
中查找各种用户信息。然而,容器通常没有“登录”过程,因为这只是Linux名称空间的诡计


您可以通过运行
docker run--rm-u 12345 ubuntu:18.04 id-a
自己尝试,并观察
uid=12345 gid=0(root)groups=0(root)
,但是在
/etc/passwd
中没有uid
12345
的条目(注意
uid=/code>结果之后缺少的
(某物)

你能给我看一下代码吗谢谢Matthew。是的,这就是问题所在。我修改了
/etc/passwd
,并且能够运行剧本。你认为这是一个更清洁的解决方案,还是应该有一些额外的步骤?