thedumbtechguy.unattended-upgrades
Ansibleロール: 無人アップグレード
Ubuntuで無人アップグレードを設定するためのAnsibleロールです。デフォルトではセキュリティアップデートのみが有効になっています。
要件
このロールは
Ubuntu 16.04
およびUbuntu 16.10
でのみテストされています。
Debianの場合、デフォルトがUbuntuを対象としているため、unattended_origins_patterns
の値を変更する必要があるかもしれません。
無人メール
unattended_mail
をメールアドレスに設定する場合、mailx
コマンドが利用可能であり、システムがメールを送信できることを確認してください。
自動再起動
自動再起動機能(unattended_automatic_reboot
)を有効にすると、このロールはアップグレード後に再起動を検出し、実行するために必要なupdate-notifier-common
パッケージのインストールを試みます。再起動の特定の時間を定義することもできます(unattended_automatic_reboot_time
)。
変数
unattended_origins_patterns
: パッケージが自動的にインストールできるかどうかを判断するための起源パターンの配列。詳細は以下のOrigins Patternsを参照してください。- デフォルト:
['origin=Ubuntu,archive=${distro_codename}-security']
- デフォルト:
unattended_package_blacklist
: 自動アップグレードされないパッケージ- デフォルト:
[]
- デフォルト:
unattended_autofix_interrupted_dpkg
: 不正なdpkgの終了時にdpkg --force-confold --configure -a
を実行するかどうか- デフォルト:
true
- デフォルト:
unattended_minimal_steps
: アップグレードを最小限のチャンクに分割し、SIGUSR1で中断できるようにします。- デフォルト:
false
- デフォルト:
unattended_install_on_shutdown
: マシンがシャットダウンする際にすべての無人アップグレードをインストールします。- デフォルト:
false
- デフォルト:
unattended_mail
: アップグレードや無人アップグレードの問題に関する情報を送信するためのメールアドレス- デフォルト:
false
(メールを送信しない)
- デフォルト:
unattended_mail_only_on_error
: エラー時のみメールを送信し、パッケージのアップグレードがあれば毎回メールが送信される場合もあります。- デフォルト:
false
- デフォルト:
unattended_remove_unused_dependencies
: アップグレード後に新しい未使用の依存関係を自動的に削除します。- デフォルト:
false
- デフォルト:
unattended_automatic_reboot
: アップグレードされたパッケージが必要とする場合、直後にシステムを自動的に再起動します。- デフォルト:
false
- デフォルト:
unattended_automatic_reboot_time
: アップグレードされたパッケージが必要とする場合、アップグレード後すぐではなく、特定の時間(_HH:MM_)にシステムを自動的に再起動します。- デフォルト:
false
- デフォルト:
unattended_ignore_apps_require_restart
: アップグレード後に再起動を要求するいくつかの重要なパッケージは自動的にアップグレードされません(つまり、そのdebain/controlファイルにXB-Upgrade-Requires: app-restart
ディレクティブがある)。このオプションがtrue
に設定されている場合、無人アップグレードはこのディレクティブに関係なくこれらのパッケージをアップグレードします。- デフォルト:
false
- デフォルト:
Origin Patterns
Origin Patternは、従来の無人アップグレードで使用されていた許可された起源オプションのより強力な代替です。
パターンは特定のキーワードで構成されています:
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
コマンドを使用して選択をデバッグできます。
さらに、無人アップグレードは/etc/debian_version
から派生した2つのマクロ(変数)をサポートします:
${distro_id}
– インストールされたディストリビューションの名前、例:Debian
またはUbuntu
。${distro_codename}
– インストールされたコードネーム、例:jessie
またはtrusty
。
${distro_codename}
を選択する方が、stable
やoldstable
を選択するよりも良いです。なぜなら、stable
がoldstable
に移動すると、セキュリティアップデートはまったくインストールされず、新しいディストリビューションリリースのパッケージが誤ってインストールされる可能性があります。同様に、oldstable
からstable
にアップグレードする場合、この起源パターンを変更し忘れると、新しいディストリビューションリリースのセキュリティアップデートを受けられなくなる可能性があります。${distro_codename}
を使用していれば、これらの問題は発生しません。
使用例
- hosts: all
vars:
unattended_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}-updates'
unattended_package_blacklist: [cowsay, vim]
unattended_mail: '[email protected]'
roles:
- setup_unattended_upgrades
パターンの例
デフォルトでは、セキュリティアップデートのみが許可されています。無人アップデートが自動的により多くのパッケージをインストールできるようにするためにパターンを追加できますが、自動的な大規模アップデートはシステムを壊す可能性があることを理解してください。
Ubuntuでは、アーカイブは常にディストリビューションのコードネームを含みます。
unattended_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'
ライセンス
MIT / BSD
作者情報
このロールはTheDumbTechGuyによって作成されました( twitter | blog | galaxy )
クレジット
このロールは、次の元の作業をもとにしています: