如何使用Ansible更新root用户crontab并解决权限报错问题
错误原因
你对become参数的用法存在误解:become: true是Ansible的任务级/Play级全局参数,不属于cron模块的内置参数,不能写在cron模块的参数块中,并非cron模块不支持become。
报错must be privileged to use -u的根因是:你当前执行任务的远程普通用户没有权限为root用户创建crontab规则。
解决方案(最推荐,完全匹配sudo crontab -e的执行效果)
将become: true写在与任务name同级的位置,以root权限执行整个cron任务即可,修改后配置如下:
- name: foo become: true ansible.builtin.cron: name: "bar" minute: "*/5" job: "/home/mytask.sh" # 已通过become切换为root执行,user: root可省略,保留也不影响
验证方法
任务执行成功后,登录目标主机执行sudo crontab -u root -l,即可看到新增的定时任务。
内容的提问来源于stack exchange,提问作者Nakrule
相关产品推荐
相关产品推荐

