racqspace.unattended_upgrades

Ansible ロール: unattended_upgrades

MIT GitHub ワークフローステータス GitHub 最終コミット GitHub リリース日 メンテナンス

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/aptapt.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']
  • 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_enabletrue に設定されている場合のみ効果があります。
    • デフォルト: 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 を選択するよりも推奨されます。なぜなら、stableoldstable に移行すると、全くセキュリティ更新がインストールされなくなるか、新しいディストリビューションリリースからのパッケージが誤ってインストールされる可能性があるためです。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-upgrades0.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
ライセンス
mit
ダウンロード
1.4k
所有者