UsC*_*sCr 15 linux debian ansible
我有大约50个Debian Linux服务器,其中有一个糟糕的cron作业:
0 * * * * ntpdate 10.20.0.1
Run Code Online (Sandbox Code Playgroud)
我想用ntpd配置ntp sync,所以我需要删除这个cron作业.对于配置我使用Ansible.我试图用这个游戏删除cron条目:
tasks:
- cron: name="ntpdate" minute="0" job="ntpdate 10.20.0.1" state=absent user="root"
Run Code Online (Sandbox Code Playgroud)
没啥事儿.
然后我运行这个游戏:
tasks:
- cron: name="ntpdate" minute="0" job="ntpdate pool.ntp.org" state=present
Run Code Online (Sandbox Code Playgroud)
我在"crontab -l"的输出中看到新的cron作业:
...
# m h dom mon dow command
0 * * * * ntpdate 10.20.0.1
#Ansible: ntpdate
0 * * * * ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)
但是/etc/cron.d
空的!我不明白Ansible cron模块是如何工作的.
如何使用Ansible的cron模块删除我手动配置的cron作业?
yda*_*coR 15
用户的crontab项下举行/var/spool/cron/crontab/$USER
,如提到的crontab的手册页:
Crontab是用于安装,删除或列出用于驱动cron(8)守护程序的表的程序.每个用户都可以拥有自己的crontab,虽然这些是/ var/spool /中的文件,但它们不能直接编辑.对于在mls模式下的SELinux,可以为每个范围提供更多的crontabs.有关更多信息,请参阅selinux(8).
正如手册页和上面引用的那样,您不应该直接编辑/使用这些文件,而应该使用可用的crontab
命令,例如crontab -l
列出用户的crontab条目,crontab -r
删除用户的crontab或crontab -e
编辑用户的crontab条目.
要手动删除crontab条目,您可以使用crontab -r
删除所有用户的crontab条目或crontab -e
直接编辑crontab.
使用Ansible,这可以通过使用cron模块来完成,state: absent
如下所示:
hosts : all
tasks :
- name : remove ntpdate cron entry
cron :
name : ntpdate
state : absent
Run Code Online (Sandbox Code Playgroud)
但是,这依赖于Ansible放在crontab条目之上的注释,可以从这个简单的任务中看到:
hosts : all
tasks :
- name : add crontab test entry
cron :
name : crontab test
job : echo 'Testing!' > /var/log/crontest.log
state : present
Run Code Online (Sandbox Code Playgroud)
然后设置一个crontab条目,如下所示:
#Ansible: crontab test
* * * * * echo Testing > /var/log/crontest.log
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果你有在Ansible的cron模块之外设置的crontab条目,那么你将不得不采取一种不太干净的方法来整理你的crontab条目.
为此我们只需要丢弃我们用户的crontab cron -r
,我们可以通过shell调用它,看起来像这样:
hosts : all
tasks :
- name : remove user's crontab
shell : crontab -r
Run Code Online (Sandbox Code Playgroud)
然后,我们可以使用其他任务来设置您想要保留的任务,或者正确使用Ansible的cron模块添加它们.
归档时间: |
|
查看次数: |
10304 次 |
最近记录: |