Debian / Ubuntuでサーバーの更新を自動化する

この記事では、ボード上のDebian / Ubuntuからのサーバーの更新を自動化する既存の方法を要約しようとします。



必要ですか?



もちろん、あなたやあなたの隣人以外は誰も使用しない「サーバー」が1つしかない場合、更新の追跡は非常に簡単です。 数十から数百のサーバーになると、それらを最新の状態に保つ問題が明らかになります。



Debian / Ubuntuパッチのアップデートはほぼ毎日公開されています。 これらすべてを追跡することは非常に困難です。 ここで、以下で説明するプログラムが役立つ場合があります。



アプティクロン



apticronは、利用可能な更新に関する情報を毎日メールで送信する単純なスクリプトです。 操作に必要なのは、設定ファイル/etc/apticron/apticron.confで電子メールを指定することだけです。

EMAIL="mail@example.com"







apticronからの手紙は非常に有益であり、次のようになります。

apticron report [Thu, 06 Aug 2009 16:15:24 +0300]

========================================================================



apticron has detected that some packages need upgrading on:



example.com

[ 127.0.1.1 192.168.0.1 ]



The following packages are currently pending an upgrade:



acpid 1.0.4-5etch1

apache2-utils 2.2.3-4+etch10



========================================================================



Package Details:



Reading changelogs...

--- Changes for acpid ---

acpid (1.0.4-5etch1) oldstable-security; urgency=high



* Added upstream's patch to fix CVE-2009-0798



-- Michael Meskes <meskes@debian.org> Wed, 29 Apr 2009 12:26:56 +0200



--- Changes for apache2 (apache2-utils) ---

apache2 (2.2.3-4+etch10) oldstable-security; urgency=low



* Fix regression: A segfault could happen in mod_deflate in conjunction with

mod_php when a client aborts the connection.



-- Stefan Fritsch <sf@debian.org> Wed, 29 Jul 2009 11:39:06 +0200



========================================================================



You can perform the upgrade by issuing the command:



aptitude dist-upgrade



as root on example.com



It is recommended that you simulate the upgrade first to confirm that

the actions that would be taken are reasonable. The upgrade may be

simulated by issuing the command:



aptitude -s -y dist-upgrade



-- apticron







この手紙から、acpidとapache2-utilsを更新する必要があることは明らかです。 さらに、レターには変更の説明が含まれています。 これは、他のソース(debian-security-announceメーリングリストなど)からこの情報を受け取らない場合に非常に便利です。



cron-apt



cron-aptは、利用可能な更新プログラムに関する情報に加えて、それらをダウンロードしてインストールできる、より高度なユーティリティです。 デフォルトでは、cron-aptはアップデートのみをダウンロードし、インストールはしません。 手紙を受け取るには、/ etc / cron-apt / configファイルで電子メールを指定し、どの条件で手紙を送るかを言う必要があります。

MAILTO="mail@example.com"

MAILON="always"







cron-aptからのメールの例を次に示します。

CRON-APT RUN [/etc/cron-apt/config]: Wed Jul 29 04:00:01 EEST 2009

CRON-APT SLEEP: 1172, Wed Jul 29 04:19:33 EEST 2009

CRON-APT ACTION: 0-update

CRON-APT LINE: /usr/bin/apt-get update -o quiet=2

CRON-APT ACTION: 3-download

CRON-APT LINE: /usr/bin/apt-get autoclean -y

Reading package lists...

Building dependency tree...

Reading state information...

CRON-APT LINE: /usr/bin/apt-get dist-upgrade -d -y -o APT::Get::Show-Upgraded=true

Reading package lists...

Building dependency tree...

Reading state information...

The following packages will be upgraded:

dbus dbus-x11 dhcp3-client dhcp3-common libdbus-1-3

5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Need to get 0B/957kB of archives.

After this operation, 8192B disk space will be freed.

Download complete and in download only mode






cron-aptがダウンロードされたが、インストールされなかった(!)dbusとdhcpの更新が見られます。



無人アップグレード



unattended-upgradeは、aptと連携するためにCanonicalが開発したオプションのスクリプトです。 前述の2つのユーティリティとは異なり、無人アップグレードでは更新プログラムのみをインストールできます。 自動システム更新を有効にするには、まず設定ファイル/etc/apt/apt.conf.d/50unattended-upgradesで正確に更新するものを指定する必要があります。

// allowed (origin, archive) pairs

Unattended-Upgrade::Allowed-Origins {

"Debian stable Debian-Security";

};



// never update the packages in this list

Unattended-Upgrade::Package-Blacklist {

// "vim";

};







さらに、無人アップグレード::パッケージブラックリストセクションで、更新できないパッケージのリストを指定できます。 この例では、vimがコメント化されています。



その後、無人アップグレードを使用することをaptに伝える必要があります。 これを行うには、ファイル/etc/apt/apt.conf.d/10periodicを作成し、そこに次の行を追加します。

APT::Periodic::Update-Package-Lists "1";

APT::Periodic::Download-Upgradeable-Packages "1";

APT::Periodic::AutocleanInterval "1";

APT::Periodic::Unattended-Upgrade "1";







その結果、パッケージのリストの毎日の更新、利用可能な更新のダウンロード、インストール済みパッケージのキャッシュからのdebファイルの削除、そして最も重要なのはパッケージの自動インストールを取得します。



無人アップグレードには1つの小さな欠点があります-ユーティリティは、実際に何をしたか(ログファイルを除く)を誰にも通知しません。 彼女が更新したものを見つけるために、ユーティリティlogrotateを利用できます-ログファイルをメールに送信します。 これを行うには、/ etc / logrotate.d / unattended-upgradesファイルに次の行を書き込みます。

/var/log/unattended-upgrades/unattended-upgrades.log {

rotate 7

daily

mailfirst

mail mail@example.com

compress

missingok

notifempty

}







その結果、更新に関する情報を含むログファイルの電子メールコピーを受信します。

2009-08-01 17:50:57,596 INFO Initial blacklisted packages:

2009-08-01 17:50:57,596 INFO Starting unattended upgrades script

2009-08-01 17:50:57,596 INFO Allowed origins are: ["['Debian', 'stable', 'Debian-Security']"]

2009-08-01 17:51:08,294 INFO Packages that are upgraded: libbind9-40 libisc45 libisccfg40 dnsutils libtiff4 liblwres40 bind9-host libisccc40 libdns45

2009-08-01 17:51:08,294 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg_2009-08-01_17:51:08.294492.log'

2009-08-01 17:51:11,169 INFO All upgrades installed







ログからわかるように、詳細(dpkg出力)は別のファイルに書き込まれます:unattended-upgrades-dpkg_2009-08-09_17:51:08.294492.log。



おわりに



上記のユーティリティを使用すると、システム内の更新の可用性について管理者に知らせることができます。 さらに、cron-aptおよび無人アップグレードでは、自動更新をインストールすることもできます。 ただし、すべてに単一の選択肢はありません。 管理者のみが、このサーバーまたはそのサーバーを自動的に更新できるかどうかを決定する必要があります。



PS私自身のために、cron-aptを選択しました。



All Articles