ansible遇到的必须在root下执行命令的错误 "This command has to be run under the root user."

在执行ansible剧本的时候遇到这样一个报错,意思是这个命令必须在root用户下执行。因为我这个错误是在执行roles时遇到的,这里就说一下我找到的解决方法。

一、问题

报错提示:”FAILED! => {"changed": false, "msg": "This command has to be run under the root user.", "results": []}“
如下所示:

报错提示

二、问题分析

这个问题其实是因为我是通过目标主机的普通用户去执行ansible命令的,这里就涉及到一个权限的问题,我这里是想通过dnf安装chrony服务。所以需要root权限去执行dnf安装命令。所以只需要将普通用户提权到root用户就可以。

三、解决方法

方法一、在执行ansible命令时通过”-b“ 参数启用提权,这里需要在hosts清单文件中指明root的密码ansible_become_pass="密码"或者使用--become-password-file指定存有root用户密码的文件。
命令如下:ansible-playbook -b chrony.yml --become-password-file testpasswd
命令注解:
-b : 启用sudo提权
--become-password-file : 指定root用户密码文件testpasswd

image.png

不使用--become-password-file参数情况下,可以在主机清单文件hosts中指定root用户的密码,如下所示:
image.png

注解:
ansible_become_pass :root用户的密码
ansible_ssh_pass :普通用户的密码
方法二、不使用”-b“ 参数启用提权,在yaml文件中使用become来启用提权。需要在hosts清单文件中指明root的密码ansible_become_pass="密码"或者使用--become-password-file指定存有root用户密码的文件
如下所示:
image.png

效果如下:
image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。