anacronを使えば、スクリプトやAnsibleスクリプトを適切な場所に配置して、あらゆる些細な作業を行うことができます。
私のお気に入りのシンプルな自動化ツールはcronシステムでした。しかし、cronの問題点は、コンピュータが1日24時間稼働していると仮定していることです。スケジュールされたバックアップをあまりに多く見逃してしまった後、私は 、スケジュールされた時間ではなくタイムスタンプに基づいたクーロンシステムを発見しました。通常であれば実行されているはずのコンピュータの電源が切られている場合、anacronはコンピュータの電源が入れ直されたときに実行されるようにします。ジョブの作成は、cron.day、cron.weekly、cron.monthlyの3つのディレクトリのいずれかにシェルスクリプトを置くだけです。anacronのおかげで、私はスクリプトやAnsibleスクリプトを、ポップアップする期日やイベントのリマインダーなど、あらゆる種類の雑用に使っていることに気づきました。
現代的な問題に対するシンプルで明白な解決策ですが、もしアナクロンがコンピューターにインストールされていなければ、私には無意味です。
Ansibleによるソフトウェアのセットアップ
ラップトップ、ワークステーション、サーバーを問わず、新しいコンピューターをセットアップする時はいつもanacronをインストールします。簡単ですが、anacronのインストールはanacronコマンドを提供するだけです。それは簡単ですが、anacronのインストールはanacronコマンドを提供するだけで、anacronのユーザー環境をセットアップしてくれません。そこで、私はAnsibleスクリプトを作成し、anacronを使用するために必要なユーザーを設定し、anacronコマンドをインストールしました。
まず、標準的なAnsibleテンプレートです:
- hosts: localhost
tasks:
Ansibleによるディレクトリの作成
次に、Anacronで使うためのディレクトリツリーを作りました。これは透明なcrontabのようなものです。
- name: create directory tree
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- '~/.local/etc/cron.daily'
- '~/.local/etc/cron.weekly'
- '~/.local/etc/cron.monthly'
- '~/.var/spool/anacron'
with_items:ディレクティブは作成する4つのディレクトリを定義し、Ansibleは ansible.buildin.file: ディレクティブで各ディレクトリを1回ずつ繰り返し実行します。Ansibleのすべてと同様に、ディレクトリがすでに存在していても、エラーや競合は発生しません。
Ansibleによるファイルのコピー
- name: copy anacrontab into place
ansible.builtin.copy:
src: ~/Ansible/data/anacrontab
dest: ~/.local/etc/anacrontab
mode: '0755'
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1 0 cron.day run-parts $HOME/.local/etc/cron.daily/
7 0 cron.wek run-parts $HOME/.local/etc/cron.weekly/
30 0 cron.mon run-parts $HOME/.local/etc/cron.monthly/
ログイン時にanacronを実行
- name: add local anacrontab to .profile
ansible.builtin.lineinfile:
path: ~/.profile
regexp: '^/usr/sbin/anacron'
c: '/usr/sbin/anacron\x20-t\x20~/.local/etc/anacrontab';
create: true
Ansibleによるanacronのインストール
これは実際には別のスクリプトで、パッケージのインストールには becomes: true ディレクティブで提供される特権昇格が必要だからです。
- hosts: localhost
become: true
tasks:
- name: install anacron
ansible.builtin.package:
name: anacron
state: present
anacronとAnsibleによる簡単な自動化
Ansibleでanacronをインストールするために、スクリプトを実行しました:
$ ansible-playbook ~/Ansible/setup-anacron.yaml




