Ansible 是一种自动化工具,用于配置管理、应用部署、任务自动化等。它使用 YAML 格式的文件来定义任务和配置。Ansible 的 cron 作业模块允许你在目标主机上管理 cron 作业。
在使用 Ansible 的 cron 作业模块时,百分号(%
)会被解释为换行符,而不是普通字符。这会导致 cron 作业无法正确执行。
Ansible 默认会对百分号进行转义,以防止 shell 解释错误。
为了避免百分号被转义,可以使用以下几种方法:
将百分号放在双引号中,这样 Ansible 就不会对其进行转义。
- name: Add a cron job
cron:
name: "My Cron Job"
job: "/path/to/script.sh '%Y-%m-%d %H:%M:%S'"
user: root
state: present
raw
参数使用 raw
参数可以避免 Ansible 对百分号进行转义。
- name: Add a cron job
cron:
name: "My Cron Job"
job: "/path/to/script.sh %Y-%m-%d %H:%M:%S"
user: root
state: present
raw: true
cron_file
参数将 cron 作业写入特定的文件中,这样可以避免百分号被转义。
- name: Add a cron job to a specific file
cron:
name: "My Cron Job"
job: "/path/to/script.sh %Y-%m-%d %H:%M:%S"
user: root
state: present
cron_file: my_cron_job
以下是一个完整的 Ansible playbook 示例,展示了如何使用双引号来避免百分号被转义:
---
- name: Manage Cron Jobs
hosts: all
become: true
tasks:
- name: Add a cron job with escaped percentage
cron:
name: "My Cron Job"
job: "/path/to/script.sh '%Y-%m-%d %H:%M:%S'"
user: root
state: present
通过以上方法,你可以成功地在 Ansible 中添加 cron 作业,并避免百分号被错误转义的问题。
领取专属 10元无门槛券
手把手带您无忧上云