在 Ansible 中调整单用户的 crontab MAILTO

问题描述 投票:0回答:3

我当前正在编辑特定用户的 crontab 条目,如下所示:

---
- name: Create example cron entry
  cron:
      name: "Examplecrontab entry"
      minute: "5"
      hour: "5"
      day: "5"
      user: exampleuser
      job: "examplejob"
      state: present

这会在我的用户的 crontab 中创建以下条目 (

crontab -l
):

#Ansible: Example cron entry
5 5 5 * * examplejob

我想将

MAILTO=""
添加到该用户的 crontab 的顶部。结果应该如下:

MAILTO=""
#Ansible: Example cron entry
5 5 5 * * examplejob

我尝试将其添加到我的 ansible 游戏中:

---
- name: Disable cron mailing to root
  cronvar:
    name: MAILTO
    value: "\"\""

这运行时没有错误,但不会创建如上所述的预期结果。

我从另一个post复制了这个,但这仅在创建

/etc/cron.d
文件时有效,而我的工作不这样做。

如何才能用我原来的玩法得到预期的结果?

从技术上讲,我可以使用

lineinfile
模块并通过手动将
/var/spool/cron/exampleuser
添加到其顶部来手动编辑
MAILTO=""
文件,但据我所知,这被认为是不好的做法,并且不是合法的解决方案。

提前致谢。

ansible cron
3个回答
1
投票

看来我没有正确阅读文档。看到 user 属性(默认为 root),我添加了我的特定用户,并且我的问题已得到解决。对于其他人来说,我的玩法现在看起来像这样:

---
- name: Disable cron mailing to root
  cronvar:
    name: MAILTO
    value: "\"\""
    user: exampleuser

- name: Create example cron entry
  cron:
      name: "Examplecrontab entry"
      minute: "5"
      hour: "5"
      day: "5"
      user: exampleuser
      job: "examplejob"
      state: present

crontab -l
作为示例用户现在给了我这个:

MAILTO=""
#Ansible: Example cron entry
5 5 5 * * examplejob

0
投票

我认为你正在寻找的是cronvar_module

例如:

---
- name: Create example cron entry
  cron:
      name: "Examplecrontab entry"
      minute: "5"
      hour: "5"
      day: "5"
      user: exampleuser
      job: "examplejob"
      state: present

- name: MAILTO exists for user username
  cronvar:
    name: MAILTO
    user: username
    value: "\"\""
    state: present
    

MAILTO=""
#Ansible: test


0
投票

您可以指定

cron_file
指令将 cronvar 应用于某些 crons

---
# Set MAILTO
- name: MAILTO for some crons
  community.general.cronvar:
    name: MAILTO
    value: "\"\""
    user: root
    cron_file: "{{ item }}"
  loop:
    - cron_file_1
    - cron_file_2
    - cron_file_3
...
© www.soinside.com 2019 - 2024. All rights reserved.