Ansible Been报告成功,但由于缺少权限,命令失败

Ansible Been报告成功,但由于缺少权限,命令失败,ansible,Ansible,我正在运行一个简单的剧本来测试设置K8s,第一步是关闭交换,这需要提升才能成功。我在一个ubuntu docker容器上安装了ansible,试图在另一个centos容器上运行该游戏,这两个容器都在我本地的windows机器上 我的剧本 --- - hosts: local become: yes become_method: sudo roles: - kubernetes 失败的任务 --- - name: turn off swap shell: | sw

我正在运行一个简单的剧本来测试设置K8s,第一步是关闭交换,这需要提升才能成功。我在一个ubuntu docker容器上安装了ansible,试图在另一个centos容器上运行该游戏,这两个容器都在我本地的windows机器上

我的剧本

---
- hosts: local
  become: yes
  become_method: sudo
  roles:
    - kubernetes
失败的任务

---
- name: turn off swap
  shell: |
    swapoff -a
结果输出被剪切到相关部分

ok: [centosbox]
<172.66.2.66> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=config -o ConnectTimeout=10 -o ControlPath=/home/config/.ansible/cp/ansible-ssh-%h-%p-%r -tt 172.66.2.66 '/bin/sh -c '"'"'sudo -H -S -n -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-hvrarwhvnbwtveklbinfwigmrapurugb; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/config/.ansible/tmp/ansible-tmp-1572951151.19-42546213906525/command; rm -rf "/home/config/.ansible/tmp/ansible-tmp-1572951151.19-42546213906525/" > /dev/null 2>&1'"'"'"'"'"'"'"'"''"'"''

fatal: [centosbox]: FAILED! => {"changed": true, "cmd": "swapoff -a", "delta": "0:00:00.119504", "end": "2019-11-05 10:52:31.431316", "failed": true, "invocation": {"module_args": {"_raw_params": "swapoff -a", 
"_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 1, "start": "2019-11-05 10:52:31.311812", "stderr": "swapoff: Not superuser.", "stdout": "", "stdout_lines": [], "warnings": []}
我尝试过改变设置,添加不同级别的BEN,所有这些都会导致相同的错误。我还尝试在剧本中使用不同的方法运行swapoff命令,结果相同。
非常感谢您的任何建议。

我的第一个猜测是,您用来将ubuntu容器中的用户“config”SSH到目标容器中的用户在两个容器中的UID并不相同

由于uid/gid空间在容器及其主机系统之间共享,因此您希望确保在使用ubuntu容器中的“config”用户时,它会转换为目标容器中的同一用户。这可以通过确保这些用户在创建docker映像时具有相同的UID来实现,例如在docker文件中:

RUN useradd -r -u 1001 -g config config 

阅读良好:

在本文中找到了问题和解决方案- 我将
privileged:true
添加到我的compose文件中,它终于工作了。
感谢所有帮助我找到这个答案的人。

你能添加成为用户吗:我试过了,结果返回了相同的错误两个配置用户看起来像同一个内核用户Centos Box
[root@8eda9cde51f6/]#id config uid=1000(配置)gid=1000(配置)groups=1000(配置),10(控制盘)
Ubuntu/Ansible主机盒
root@40da3e97aee1:/#id config uid=1000(config)gid=1000(config)groups=1000(config),27(sudo)
RUN useradd -r -u 1001 -g config config