自動化は優れた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
にシェルスクリプトを作成します。 プレイを実行します。簡単で痛みがなく、すぐに第二の性質になります。