自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我如何使用 Ansible 和 anacron 實(shí)現(xiàn)自動(dòng)化

系統(tǒng) Linux 自動(dòng)化
有了 anacron,我可以把腳本和 Ansible 劇本放到合適的地方,以完成各種瑣碎的任務(wù)。

[[428886]]

有了 anacron,我可以把腳本和 Ansible 劇本放到合適的地方,以完成各種瑣碎的任務(wù)。

自動(dòng)化是偉大的 IT 和 DevOps 理想,但根據(jù)我的經(jīng)驗(yàn),可能根本不存在什么不方便的東西。有很多次,我為某些任務(wù)想出了一個(gè)很好的解決方案,我甚至?xí)帉懩_本,但我沒(méi)有讓它真正實(shí)現(xiàn)自動(dòng)化,因?yàn)樵谖夜ぷ鞯臋C(jī)器上不存在易于自動(dòng)化的基礎(chǔ)設(shè)施。

我最喜歡的簡(jiǎn)易自動(dòng)化工具曾經(jīng)是 cron 系統(tǒng),它古老、可靠、面向用戶,而且簡(jiǎn)單(除了一個(gè)我永遠(yuǎn)無(wú)法記住的調(diào)度語(yǔ)法之外)。然而,cron 的問(wèn)題是,它假定一臺(tái)電腦每天 24 小時(shí)都在工作。在錯(cuò)過(guò)了太多預(yù)定的備份之后,我發(fā)現(xiàn)了 anacron,一個(gè)基于時(shí)間戳而非預(yù)定時(shí)間的 cron 系統(tǒng)。如果你的電腦在通常情況下運(yùn)行時(shí)處于關(guān)閉狀態(tài),anacron 會(huì)確保它在電腦重新開(kāi)啟時(shí)運(yùn)行。創(chuàng)建一個(gè)作業(yè)只需要簡(jiǎn)單地把一個(gè) shell 腳本放到三個(gè)目錄中:cron.day、cron.weekly 或者 cron.monthly (如果你想的話,你可以定義更多)。有了 anacron,我發(fā)現(xiàn)自己把腳本和 Ansible 劇本用在了各種瑣碎的任務(wù)中,包括彈出到期和事件提醒。

這是一個(gè)現(xiàn)代問(wèn)題的簡(jiǎn)單而明顯的解決方案,但如果 anacron 沒(méi)有安裝在電腦上,那它對(duì)我就沒(méi)有用。

用 Ansible 進(jìn)行軟件設(shè)置

任何時(shí)候我設(shè)置一臺(tái)新的計(jì)算機(jī),無(wú)論是筆記本電腦、工作站還是服務(wù)器,我都會(huì)安裝 anacron。這很簡(jiǎn)單,但是 anacron 的安裝只提供了 anacron 命令。它并沒(méi)有設(shè)置 anacron 的用戶環(huán)境。所以我創(chuàng)建了一個(gè) Ansible 劇本來(lái)設(shè)置用戶需要什么來(lái)使用 anacron 并安裝 anacron 命令。

首先,標(biāo)準(zhǔn)的 Ansible 模板:

  1. ---
  2. - hosts: localhost
  3. tasks:

用 Ansible 創(chuàng)建目錄

接下來(lái),我創(chuàng)建了用于 Anacron 的目錄樹(shù)。你可以把它看成是一種透明的 crontab。

  1. - name: create directory tree
  2. ansible.builtin.file:
  3. path: "{{ item }}"
  4. state: directory
  5. with_items:
  6. - '~/.local/etc/cron.daily'
  7. - '~/.local/etc/cron.weekly'
  8. - '~/.local/etc/cron.monthly'
  9. - '~/.var/spool/anacron'

這個(gè)語(yǔ)法可能看起來(lái)有點(diǎn)奇怪,但它實(shí)際上是一個(gè)循環(huán)。with_items: 指令定義了四個(gè)要?jiǎng)?chuàng)建的目錄,Ansible 在 ansible.buildin.file: 指令中為每個(gè)目錄迭代一次(目錄名填充了 {{ item }} 變量)。與 Ansible 中的一切一樣,如果目錄已經(jīng)存在,不會(huì)有錯(cuò)誤或沖突。

用 Ansible 復(fù)制文件

ansible.buildin.copy 模塊將文件從一個(gè)地方復(fù)制到另一個(gè)地方。為了讓它工作,我需要?jiǎng)?chuàng)建一個(gè)叫做 anacrontab 的文件。它不是 Ansible 劇本,所以我把它放在我的 ~/Ansible/data 目錄下,那里是我的劇本的支持文件。

  1. - name: copy anacrontab into place
  2. ansible.builtin.copy:
  3. src: ~/Ansible/data/anacrontab
  4. dest: ~/.local/etc/anacrontab
  5. mode: '0755'

我的 anacrontab 文件很簡(jiǎn)單,模仿了一些發(fā)行版默認(rèn)安裝在 /etc/anacron 中的文件:

  1. SHELL=/bin/sh
  2. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3. 1 0 cron.day run-parts $HOME/.local/etc/cron.daily/
  4. 7 0 cron.wek run-parts $HOME/.local/etc/cron.weekly/
  5. 30 0 cron.mon run-parts $HOME/.local/etc/cron.monthly/

登錄時(shí)運(yùn)行 anacron

大多數(shù) Linux 發(fā)行版將 anacron 配置為從 /etc/anacron 讀取作業(yè)。我主要是作為一個(gè)普通用戶使用 anacron,所以我從我的登錄賬號(hào) ~/.profile 啟動(dòng) anacron。我不想讓自己記住這些配置,所以我讓 Ansible 來(lái)做。我使用 ansible.buildin.lineinfile 模塊,它會(huì)在 ~/.profile 不存在時(shí)創(chuàng)建它,并插入 anacron 的啟動(dòng)行。

  1. - name: add local anacrontab to .profile
  2. ansible.builtin.lineinfile:
  3. path: ~/.profile
  4. regexp: '^/usr/sbin/anacron'
  5. line: '/usr/sbin/anacron -t ~/.local/etc/anacrontab'
  6. create: true

用 Ansible 安裝 anacron

對(duì)于我的大多數(shù)系統(tǒng)來(lái)說(shuō),dnf 模塊可以用來(lái)安裝軟件包,但我的工作站運(yùn)行的是 Slackware(使用 slackpkg),有時(shí)不同的 Linux 發(fā)行版也會(huì)進(jìn)入我的收藏。ansible.buildin.package 模塊提供了一個(gè)安裝軟件包的通用接口,所以我把它用在這個(gè)劇本上。幸運(yùn)的是,我還沒(méi)有遇到一個(gè)名為 anacron 的倉(cāng)庫(kù)不是 anacron,所以現(xiàn)在,我不必考慮軟件包名稱的潛在差異。

這實(shí)際上是一個(gè)單獨(dú)的劇本,因?yàn)檐浖陌惭b需要權(quán)限升級(jí),它由 becomes: true 指令提供。

  1. - hosts: localhost
  2. become: true
  3. tasks:
  4. - name: install anacron
  5. ansible.builtin.package:
  6. name: anacron
  7. state: present

使用 anacron 和 Ansible 實(shí)現(xiàn)輕松自動(dòng)化

為了用 Ansible 安裝 anacron,我運(yùn)行該劇本:

  1. $ ansible-playbook ~/Ansible/setup-anacron.yaml

從此,我就可以編寫 shell 腳本來(lái)執(zhí)行一些瑣碎但重復(fù)的任務(wù),然后把它復(fù)制到 ~/.local/etc/cron.daily,讓它每天自動(dòng)運(yùn)行一次(或者大約如此)。我還為諸如 清理下載文件夾 之類的任務(wù)編寫了 Ansible 劇本。我把我的劇本放在 ~/Ansible 里,這是我保存 Ansible 劇本的地方,然后在 ~/.local/etc/cron.daily 里創(chuàng)建一個(gè) shell 腳本來(lái)執(zhí)行這個(gè)劇本。這很簡(jiǎn)單,不費(fèi)吹灰之力,而且很快成為習(xí)慣。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2018-08-31 09:55:38

Ansible網(wǎng)絡(luò)自動(dòng)化

2020-10-29 10:17:24

AnsibleKubernetes容器編排自動(dòng)化

2023-03-09 14:02:00

Inkscape圖形創(chuàng)作

2024-06-11 10:41:14

2021-09-08 16:03:12

Kubernetes 安全開(kāi)源

2019-10-30 14:47:05

工具代碼開(kāi)發(fā)

2020-01-16 09:00:00

AI人工智能ML

2021-09-17 15:56:14

數(shù)據(jù)平臺(tái)自動(dòng)化

2021-11-19 10:55:03

GitOps運(yùn)維自動(dòng)化

2015-10-08 10:55:23

云服務(wù)自動(dòng)化運(yùn)維 ANSIBLE

2022-11-15 17:07:40

開(kāi)發(fā)自動(dòng)化前端

2014-09-22 11:24:18

運(yùn)維

2015-11-09 14:27:36

Ansiblelinux自動(dòng)化運(yùn)維

2020-03-18 09:23:24

Python數(shù)據(jù)SQL

2021-04-06 09:46:15

Linuxanacron命令系統(tǒng)運(yùn)維

2021-01-28 10:28:33

云計(jì)算基礎(chǔ)設(shè)施自動(dòng)化IT

2024-01-09 13:09:00

2024-11-21 15:24:49

2021-10-21 09:00:00

機(jī)器學(xué)習(xí)技術(shù)工具

2018-02-10 18:35:09

LinuxAnsible系統(tǒng)管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)