和 anacron 我如何经常使用 Ansible 成功智能化

智能化是平凡的 IT 和 DevOps 现实,但依据我的阅历,或许基本不存在什么不繁难的物品。有很屡次,我为某些义务想出了一个很好的处置打算,我甚至会编写脚本,但我没有让它真正成功智能化,由于在我上班的机器上不存在易于智能化的基础设备。

我最青睐的繁难智能化工具曾经是 cron 系统,它新鲜、牢靠、面向用户,而且繁难(除了一个我永远无法记住的调度语法之外)。但是,cron 的疑问是,它假设一台电脑每天 24 小时都在上班。在错过了太多预约的备份之后,我发现了,一个基于期间戳而非预约期间的 cron 系统。假设你的电脑在通常状况下运转时处于封锁形态,anacron 会确保它在电脑从新开启时运转。创立一个作业只有要繁难地把一个 shell 脚本放到三个目录中:、 cron.weekly 或许 cron.monthly (假设你想的话,你可以定义更多)。有了 anacron,我发现自己把脚本和 Ansible 剧本用在了各种琐碎的义务中,包含弹出到期和事情提示。

这是一个现代疑问的繁难而显著的处置打算,但假设 anacron 没有装置在电脑上,那它对我就没有用。

用 Ansible 启动软件设置

任何时刻我设置一台新的计算机,无论是笔记本电脑、上班站还是主机,我都会装置 anacron。这很繁难,但是 anacron 的装置只提供了命令。它并没有设置 anacron 的用户环境。所以我创立了一个 Ansible 剧原本设置用户须要什么来经常使用 anacron 并装置命令。

首先,规范的 Ansible 模板:

用 Ansible 创立目录

接上去,我创立了用于 Anacron 的目录树。你可以把它看成是一种透明的 crontab。

这个语法或许看起来有点奇异,但它实践上是一个循环。 with_items: 指令定义了四个要创立的目录,Ansible 在 ansible.buildin.file: 指令中为每个目录迭代一次性(目录名填充了变量)。与 Ansible 中的一切一样,假设目录曾经存在,不会有失误或抵触。

用 Ansible 复制文件

ansible.buildin.copy 模块将文件从一个中央复制到另一个中央。为了让它上班,我须要创立一个叫做 anacrontab 的文件。它不是 Ansible 剧本,所以我把它放在我的 ~/Ansible/data 目录下,那里是我的剧本的允许文件。

我的 anacrontab 文件很繁难,模拟了一些发行版自动装置在 /etc/anacron 中的文件:

登录时运转 anacron

大少数 Linux 发行版将 anacron 性能为从 /etc/anacron 读取作业。我重要是作为一个普通用户经常使用 anacron,所以我从我的登录账号 ~/.profile 启动 anacron。我不想让自己记住这些性能,所以我让 Ansible 来做。我经常使用 ansible.buildin.lineinfile 模块,它会在 ~/.profile 不存在时创立它,并拔出 anacron 的启动行。

用 Ansible 装置 anacron

关于我的大少数系统来说,模块可以用来装置软件包,但我的上班站运转的是 Slackware(经常使用),有时不同的 Linux 发行版也会进入我的收藏。 ansible.buildin.package 模块提供了一个装置软件包的通用接口,所以我把它用在这个剧本上。幸运的是,我还没有遇到一个名为的仓库不是,所以如今,我不用思考软件包称号的潜在差异。

这实践上是一个独自的剧本,由于软件包的装置须要权限更新,它由 becomes: true 指令提供。

经常使用 anacron 和 Ansible 成功轻松智能化

为了用 Ansible 装置 anacron,我运转该剧本:

从此,我就可以编写 shell 脚原本口头一些琐碎但重复的义务,而后把它复制到 ~/.local/etc/cron.daily ,让它每天智能运转一次性(或许大概如此)。我还为诸如 清算下载文件夹 之类的义务编写了 Ansible 剧本。我把我的剧本放在里,这是我保留 Ansible 剧本的中央,而后在 ~/.local/etc/cron.daily 里创立一个 shell 脚原本口头这个剧本。这很繁难,不费吹灰之力,而且很快成为习气。

您可能还会对下面的文章感兴趣: