GNU/Linux >> Linux の 問題 >  >> Linux

自動化のためにAnsibleとanacronを使用する方法

自動化は優れたITとDevOpsの理想ですが、私の経験では、すぐに便利ではないものはまったく存在しない可能性があります。いくつかのタスクに対してかなり良い解決策を思いついたことが何度もあり、それをスクリプト化することもありますが、簡単な自動化のためのインフラストラクチャがマシンに存在しないため、文字通り自動化することはできません。取り組んでいます。

Ansibleの詳細

  • Ansibleのクイックスタートガイド
  • Ansibleチートシート
  • 無料のオンラインコース:Ansibleの必需品
  • Ansibleをダウンロードしてインストールする
  • eBook:自動化された企業
  • eBook:DevOps用のAnsible
  • 無料のAnsible電子書籍
  • 最新のAnsible記事

私のお気に入りの簡単な自動化ツールは、以前はcronシステムでした。古く、信頼性が高く、ユーザー向けで、(スケジューリング構文を除けば、メモリにコミットすることはできません)シンプルです。ただし、cronの問題は、コンピューターが1日24時間稼働していると想定していることです。スケジュールされたバックアップが多すぎるのを見逃した後、スケジュールされた時間ではなくタイムスタンプに基づくcronシステムであるanacronを発見しました。ジョブが通常実行されるときにコンピューターがオフになっている場合、anacronは、コンピューターが再びオンになったときに確実に実行されるようにします。ジョブの作成は、シェルスクリプトをcron.dailyの3つのディレクトリのいずれかにドロップするのと同じくらい簡単です。 、cron.weekly 、またはcron.monthly (必要に応じて、さらに定義できます)。 anacronを使用すると、次の期日やイベントのポップアップリマインダーなど、あらゆる種類の些細なタスクのためにスクリプトとAnsibleプレイブックを配置することになります。

これは現代の問題に対する単純で明白な解決策ですが、anacronがコンピューターにインストールされていない場合は役に立ちません。

Ansibleを使用したソフトウェアのセットアップ

ラップトップ、ワークステーション、サーバーのいずれであっても、新しいコンピューターをセットアップするときはいつでも、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.builtin.file:を反復処理します ディレクトリごとに1回ディレクティブ(ディレクトリ名は{{ item }}に入力されます) 変数)。 Ansibleの他のすべてと同様に、ディレクトリがすでに存在する場合でもエラーや競合は発生しません。

Ansibleを使用したファイルのコピー

ansible.builtin.copy モジュールは、ある場所から別の場所にファイルをコピーします。これを機能させるには、anacrontabというファイルを作成する必要がありました。 。これはAnsibleのプレイブックではないので、~/Ansible/dataに保存しています。 プレイブックのサポートファイルを保存するディレクトリ。

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

私のanacrontab ファイルは単純で、一部のディストリビューションがデフォルトで/etc/anacronにインストールするファイルを模倣しています。 :

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を実行する

ほとんどのLinuxディストリビューションは、/etc/anacronからジョブを読み取るようにanacronを構成します 。私は主に通常のユーザーとしてanacronを使用しているため、ログイン~/.profileからanacronを起動します。 。自分で設定することを覚えておく必要はないので、Ansibleに設定してもらいます。 ansible.builtin.lineinfileを使用しています ~/.profileを作成するモジュール まだ存在せず、anacron起動行を挿入する場合。

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

Ansibleを使用したanacronのインストール

私のシステムのほとんどでは、dnf モジュールはパッケージのインストールでは機能しますが、私のワークステーションはSlackware(slackpkgを使用)を実行しています )、そして時々別のLinuxディストリビューションが私のコレクションに組み込まれます。 ansible.builtin.package モジュールはパッケージインストールへの汎用インターフェースを提供するので、このプレイブックに使用します。幸い、anacronという名前のリポジトリは見つかりませんでした。 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

それ以降は、シェルスクリプトを記述して、些細で反復的なタスクを実行し、それを~/.local/etc/cron.dailyにコピーできます。 1日1回(またはそのあたり)自動的に実行するようにします。また、ダウンロードフォルダのクリーンアップなどのタスク用にAnsibleプレイブックを作成しています。プレイブックを~/Ansibleに配置します 、ここでAnsibleの再生を維持し、~/.local/etc/cron.dailyにシェルスクリプトを作成します。 プレイを実行します。簡単で痛みがなく、すぐに第二の性質になります。


Linux
  1. Debian11にAnsibleをインストールして使用する方法

  2. 無料の画像オプティマイザー:YOGAに会い、その使い方を学びましょう

  3. LinuxにEtcherをインストールして使用してLiveLinuxUSBを作成する方法

  1. CentOS 7にAnsible(自動化ツール)をインストールして使用する

  2. AnsiblePlaybookでAnsibleGalaxyの役割をダウンロードして使用する方法

  3. Ansibleを使用してDebian11にRedis6をインストールして設定する方法

  1. AnsiblePlaybookで変数を使用する方法

  2. Ansibleロールを作成してPlaybookで使用する方法

  3. Ansibleでカスタムファクトを作成して使用する方法