blog

テクノロジー|Ansibleとanacronで自動化する方法

anacronを使えば、スクリプトとAnsibleスクリプトを適切な場所に置くことができるので、あらゆる些細なタスクに対応できます。...

Oct 30, 2025 · 4 min. read
シェア

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テンプレートです:

  1. - hosts: localhost
  2. tasks:

Ansibleによるディレクトリの作成

次に、Anacronで使うためのディレクトリツリーを作りました。これは透明な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'

with_items:ディレクティブは作成する4つのディレクトリを定義し、Ansibleは ansible.buildin.file: ディレクティブで各ディレクトリを1回ずつ繰り返し実行します。Ansibleのすべてと同様に、ディレクトリがすでに存在していても、エラーや競合は発生しません。

Ansibleによるファイルのコピー

  1. - name: copy anacrontab into place
  2. ansible.builtin.copy:
  3. src: ~/Ansible/data/anacrontab
  4. dest: ~/.local/etc/anacrontab
  5. mode: '0755'
  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/

ログイン時にanacronを実行

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

Ansibleによるanacronのインストール

これは実際には別のスクリプトで、パッケージのインストールには 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による簡単な自動化

Ansibleでanacronをインストールするために、スクリプトを実行しました:

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

Read next