racqspace.unattended_upgrades
Ansible ロール: unattended_upgrades
Ubuntu および Debian (Wheezy 以降) 用に unattended-upgrades をインストールし、セキュリティアップグレードを定期的に実行します。
要件
このロールは、追加の依存関係がある apt モジュール を使用します。
unattended_upgrades_mail
をメールアドレスに設定する場合は、mailx
コマンドが利用可能で、システムがメールを送信できることを確認してください。
ロールには、Debian Wheezy および Ubuntu 12.04 以降で利用可能な unattended-upgrades バージョン 0.70 以上が必要です。これは Origins Patterns の使用によるものです。
自動再起動
自動再起動機能 (unattended_upgrades_automatic_reboot
) を有効にすると、このロールは update-notifier-common
パッケージをインストールしようとします。これは一部のシステムでアップグレード後の再起動を検出し実行するために必要です。再起動の具体的な時間を定義することもできます (unattended_upgrades_automatic_reboot_time
)。
この機能は Debian Jessie では機能しませんでしたが、最終的に unattended-upgrades パッケージに組み込まれました。
無効な Cron ジョブ
一部のホストでは、unattended-upgrade の cron ファイル /etc/cron.daily/apt
が apt.disabled
という名前に変更されることがあります。これはプロバイダーの判断であり、CPU サイクルを節約するためです。unattended-upgrades を再有効化するには、enable-standard-cronjobs ロールを使用してください。
ロール変数
main
unattended_upgrades_cache_valid_time
: apt キャッシュが指定された秒数より古い場合に更新します; パッケージインストール時に apt モジュール に渡されます。- デフォルト:
3600
- デフォルト:
auto-upgrades
unattended_upgrades_enabled
: 更新/アップグレードスクリプトを有効にします (0=無効)- デフォルト:
1
- デフォルト:
unattended_upgrades_upgrade
: n 日ごとに「unattended-upgrade」セキュリティアップグレードスクリプトを実行します (0=無効)- デフォルト:
1
- デフォルト:
unattended_upgrades_update_package_list
: n 日ごとに「apt-get update」を自動的に実行します (0=無効)- デフォルト:
1
- デフォルト:
unattended_upgrades_download_upgradeable
: n 日ごとに「apt-get upgrade --download-only」を実行します (0=無効)- デフォルト:
0
- デフォルト:
unattended_upgrades_autoclean_interval
: n 日ごとに「apt-get autoclean」を実行します (0=無効)- デフォルト:
7
- デフォルト:
unattended_upgrades_clean_interval
: n 日ごとに「apt-get clean」を実行します (0=無効)- デフォルト:
0
- デフォルト:
unattended_upgrades_random_sleep
: apt ジョブが開始される前のランダムな間隔の最大秒数を定義します (systemd がないシステムのみ対象)- デフォルト:
1800
(30 分)
- デフォルト:
unattended_upgrades_dl_limit
: apt 帯域幅制限機能を使用してダウンロード速度を kB/sec で制限します。- デフォルト: 無効
unattended-upgrades
unattended_upgrades_origins_patterns
: 自動的にインストールできるパッケージを判断するためのオリジンパターンの配列。詳細は下記の Origins Patterns を参照してください。- Debian のデフォルト:
['origin=Debian,codename=${distro_codename},label=Debian-Security']
- Ubuntu のデフォルト:
['origin=Ubuntu,archive=${distro_codename}-security,label=Ubuntu']
- Debian のデフォルト:
unattended_upgrades_package_blacklist
: 自動的にアップグレードしないパッケージ- デフォルト:
[]
- デフォルト:
unattended_upgrades_autofix_interrupted_dpkg
: dpkg が不正終了した際にdpkg --force-confold --configure -a
を実行するかどうか- デフォルト:
true
- デフォルト:
unattended_upgrades_minimal_steps
: アップグレードを最小のチャンクに分割し、SIGUSR1 で中断できるようにします。- デフォルト:
true
- デフォルト:
unattended_upgrades_install_on_shutdown
: マシンのシャットダウン時にすべての unattended-upgrades をインストールします。- デフォルト:
false
- デフォルト:
unattended_upgrades_mail
: アップグレードや unattended-upgrades の問題についての情報を送信するためのメールアドレス- デフォルト:
false
(メールを送信しない)
- デフォルト:
unattended_upgrades_mail_only_on_error
: エラー時のみメールを送信し、パッケージアップグレードがあるたびにメールを送信しない。- デフォルト:
false
- デフォルト:
unattended_upgrades_remove_unused_dependencies
: アップグレード後にすべての未使用の依存関係を自動的に削除します。- デフォルト:
false
- デフォルト:
unattended_upgrades_remove_new_unused_dependencies
: アップグレード後に新しい未使用の依存関係を自動的に削除します。- デフォルト:
true
- デフォルト:
unattended_upgrades_automatic_reboot
: アップグレードされたパッケージのいずれかが再起動を要求する場合、アップグレード後すぐにシステムを自動的に再起動します。- デフォルト:
false
- デフォルト:
unattended_upgrades_automatic_reboot_time
: アップグレードされたパッケージのいずれかが再起動を要求する場合、アップグレード後すぐではなく、特定の時間 (HH:MM) にシステムを自動的に再起動します。- デフォルト:
false
- デフォルト:
unattended_upgrades_update_days
: 更新を適用する曜日を設定します。曜日は、短縮名または完全名で指定できます。または、整数で、"0" は日曜日、"1" は月曜日などです。例:{"Mon";"Fri"};
- デフォルト: 無効
unattended_upgrades_ignore_apps_require_restart
: unattended-upgrades は再起動を必要とする一部の重要なパッケージを自動的にアップグレードしません (つまり、debian/control ファイルにXB-Upgrade-Requires: app-restart
指令があります)。このオプションをtrue
に設定すると、unattended-upgrades は指令に関係なくこれらのパッケージをアップグレードします。- デフォルト:
false
- デフォルト:
unattended_upgrades_syslog_enable
: syslog にイベントを書き込みます。これは、syslog メッセージが中央ストアに送信される環境で役立ちます。- デフォルト:
false
- デフォルト:
unattended_upgrades_syslog_facility
: 指定された syslog ファシリティにイベントを書き込みます。指定がなければデーモンファシリティに書き込みます。unattended_upgrades_syslog_enable
がtrue
に設定されている場合のみ効果があります。- デフォルト:
daemon
- デフォルト:
unattended_upgrades_verbose
: 定期実行のための APT の冗長性レベルを定義します。出力は root に送信されます。- 可能なオプション:
0
: レポートなし1
: 進捗レポート2
: + コマンド出力3
: + トレースオン
- デフォルト:
0
(レポートなし)
- 可能なオプション:
unattended_upgrades_dpkg_options
: unattended-upgrades 実行時に使用される dpkg コマンドラインオプションの配列。例:["--force-confdef"]
,["--force-confold"]
- デフォルト:
[]
- デフォルト:
Origins Patterns
Origins Pattern は、以前のバージョンの unattended-upgrade で使用された Allowed Origins オプションのより強力な代替です。
パターンは特定のキーワードから構成されています:
a
,archive
,suite
– 例:stable
,trusty-security
(archive=stable
)c
,component
– 例:main
,crontrib
,non-free
(component=main
)l
,label
– 例:Debian
,Debian-Security
,Ubuntu
o
,origin
– 例:Debian
,Unofficial Multimedia Packages
,Ubuntu
n
,codename
– 例:jessie
,jessie-updates
,trusty
(これはunattended-upgrades
>= 0.80 でのみサポートされます)site
– 例:http.debian.net
利用可能なリポジトリを apt-cache policy
を使用して確認し、ターゲットシステムで unattended-upgrades -d
コマンドを使用して選択肢をデバッグできます。
さらに unattended-upgrades は、/etc/debian_version
から派生した2つのマクロ(変数)をサポートします:
${distro_id}
– インストールされたディストリビューション名、例:Debian
またはUbuntu
。${distro_codename}
– インストールされたコッドネーム、例:jessie
またはtrusty
。
${distro_codename}
を使用することが stable
または oldstable
を選択するよりも推奨されます。なぜなら、stable
が oldstable
に移行すると、全くセキュリティ更新がインストールされなくなるか、新しいディストリビューションリリースからのパッケージが誤ってインストールされる可能性があるためです。oldstable
から stable
へのアップグレードを行った場合も、オリジンパターンを変更し忘れると、新しいディストリビューションリリースのセキュリティ更新を受け取れなくなる可能性があります。${distro_codename}
を使用すれば、これらのケースは決して発生しません。
ロール使用例
カスタム origins patterns、ブラックリストパッケージ、メール通知を使用した Ubuntu の例:
- hosts: all
roles:
- role: racqspace.unattended_upgrades
vars:
unattended_upgrades_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}-updates'
unattended_upgrades_package_blacklist: [cowsay, vim]
unattended_upgrades_mail: '[email protected]'
注意: unattended_upgrades_origins_patterns
を指定する必要はありません。この変数が設定されていない場合、ロールは配布のデフォルトを使用します。
Debian ベースのシステムでのみ実行する
複数のディストリビューションを同じプレイブックで管理する場合、非 Debian システムでこのロールの実行をスキップすることを希望するかもしれません。特定のシステムにロールを限定するために when 条件をロールとともに使用する ことができます:
- hosts: all
roles:
- role: racqspace.unattended_upgrades
when: ansible_facts['os_family'] == 'Debian'
パターンの例
デフォルトでは、Ubuntu および Debian の両方でセキュリティ更新のみが許可されています。unattended-updates が自動的により多くのパッケージをインストールできるようにするために、追加のパターンを追加できますが、自動のメジャーアップデートはシステムが壊れる可能性があるため注意してください。
Debian 用
unattended_upgrades_origins_patterns:
- 'origin=Debian,codename=${distro_codename},label=Debian-Security' # セキュリティ更新
- 'o=Debian,codename=${distro_codename},label=Debian' # セキュリティ更新を含む更新
- 'o=Debian,codename=${distro_codename},a=proposed-updates'
Debian Wheezy では、unattended-upgrades
が 0.79.5
であるため、codename
指令を使用できません。
アーカイブに基づく一致を行う必要があります:
unattended_upgrades_origins_patterns:
- 'origin=Debian,a=stable,label=Debian-Security' # セキュリティ更新
- 'o=Debian,a=stable,l=Debian' # セキュリティ更新を含む更新
- 'o=Debian,a=proposed-updates'
上記のオリジンパターンのドキュメントの問題について必ず確認してください。
Ubuntu 用
Ubuntu では、アーカイブには常にディストリビューションのコッドネームが含まれます。
unattended_upgrades_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}'
- 'o=Ubuntu,a=${distro_codename}-updates'
- 'o=Ubuntu,a=${distro_codename}-proposed-updates'
Raspbian 用
Raspbian では、デフォルトのリポジトリからすべてのパッケージを更新するか、何も更新しないかのいずれかしかできません。
すべてを更新する、セキュリティ更新を含む:
unattended_upgrades_origins_patterns:
- 'origin=Raspbian,codename=${distro_codename},label=Raspbian'
Raspbian Wheezy では codename
指令を使用できないため、上記の Debian Wheezy と同じと見なしてください。
Raspbian ホストでアップデートを一切行わないようにするには、unattended_upgrades_origins_patterns
を空のリストに設定します:
unattended_upgrades_origins_patterns: []
ライセンス
MIT
作者情報
このロールは 2021 年に Clemens Kaserer によって作成されました。
貢献者:
Configure unattended-upgrades for Debian based systems.
ansible-galaxy install racqspace.unattended_upgrades