thorian93.upgrade
Ansibleロール: アップグレード
メンテナンスされていません!コレクションに移動!
このロールは私のメインコレクションに移動しました。
ここではもはやメンテナンスされていません!
最新のコンテンツはコレクションを確認してください。
このロールは、Debian/Ubuntu、RHEL/CentOS、Fedora、Suseサーバーに対してアップグレードを実施します。
特徴
- 再起動検出と自動再起動
- サービス再起動検出と自動サービス再起動
- アップグレードレポート
- メールで
- テレグラムで
注意事項!
APTの再起動とサービス再起動のチェックはneedrestartを使って実装されています。Fedoraでは、dnfプラグインneeds-restartingを通じて、RHEL/CentOSではneeds-restartingツールを使っています。
このロールは出力またはリターンコードを使ってどのアクションを取るべきかを判断します。以下の変数を使って動作を設定できます。
これらの方法は完璧ではありませんが、合理的に機能します。使用する前にロールを確認しておくことをお勧めします。
既知の問題
- Debian 11:
ansible_python_interpreter=/usr/bin/python3
を明示的に設定しないと、apt
モジュールが動的にpython-apt
をインストールしようとして失敗します。詳細はこの問題を参照してください。 - CentOS 8: dnf needs-restartingプラグインにフラグが不足しているため、再起動検出が機能しません。再起動は行われません。
- Fedora 32およびそれ以前: dnf needs-restartingプラグインにフラグが不足しているため、サービス再起動検出が機能しません。サービス再起動は行われません。
- opensuse 15および42: 依存関係が不足しており、依存ツールのインストールができません。回避策はあります。また、アップグレードプロセスが不安定なようです。現在のところ、ロールは問題を引き起こさないようですが、注意してください。また、解決策をご存知の場合はぜひ教えてください。
- opensuse 15および42: サービスの再起動検出は「強制的な」アプローチを使用しています。
zypper ps -s
の出力を解析するのが非常に面倒です。そのため、これらのOSではサービスの再起動が必要な場合は簡単に再起動されます。
要件
テレグラムによるレポート機能を使用する場合:
collections:
- name: community.general
version: 3.4.0
このロールはrootアクセスを必要とするため、プレイブックでグローバルにbecome: yes
を設定して実行するか、プレイブックで次のようにロールを呼び出してください:
- hosts: foobar
roles:
- role: thorian93.upgrade
become: yes
このロールは再起動後にシステムがポート22で利用可能かどうかのみを確認します。さらなるチェックや検証が必要な場合は、自分で対応する必要があります。
ロール変数
使用可能な変数は以下にリストされています。デフォルト値も示されています(defaults/main.yml
を参照)。
基本変数
upgrade_packages_on_hold: []
自動でアップグレードしたくないパッケージをホールドリストに設定します。
upgrade_unattended_reboot: true
アップデート後に必要な場合、無人再起動を有効にします。デフォルトはtrue
です。再起動を無効にするにはfalse
に設定します。
upgrade_force_reboot: false
再起動チェックの結果に関係なく、各サーバーを強制的に再起動させます。デフォルトはfalse
で、強制再起動を有効にするにはtrue
に設定します。
upgrade_needrestart_disable_interaction: true
必要な再起動とサービス再起動を判断するためにneedrestart
ツールを使用しています。一部のディストリビューションは、デフォルトでインタラクティブに実行されるように設定されており、これがロールを壊してしまいます。したがって、デフォルトの設定はすべてのインタラクションを無効にします。インタラクションを有効にするにはfalse
に設定してください。詳細はマニュアルを参照してください。
upgrade_restart_services: true
自動サービス再起動を有効にします。これにより、再起動が必要なサービスが再起動されます。デフォルトはtrue
で、再起動を無効にするにはfalse
に設定します。
upgrade_restart_services_blacklist:
- auditd.service
- dbus.service
- systemd-manager.service
再起動すべきでないか、再起動できないサービスのブラックリストです。デフォルトリストは経験に基づき拡張されています。追加する必要があるサービスを報告してください。
レポート変数
upgrade_reporting_enable: false
このロールのレポート機能を有効にして、インストールされたアップデートを出力し、必要に応じてファイルに書き込みます。
upgrade_reporting_path: "."
レポートの保存場所を定義します。デフォルトは現在の作業ディレクトリです。
upgrade_reporting_cleanup: true
レポートファイルのクリーンアップを行います。デバッグ時にファイルを保持するのが便利です。
テレグラムレポート変数
upgrade_reporting_telegram_enable: false
テレグラムによるレポートを有効にします。実際にメッセージをテレグラムで送信するには、以下の2つの変数をあなたの資格情報で設定する必要があります! 詳細はモジュールドキュメントを参照してください。
upgrade_telegram_token: []
あなたのテレグラムボットトークン。
upgrade_telegram_chatid: []
あなたのテレグラムチャットID。
メールレポート変数
upgrade_reporting_mail_enable: false
メールによるレポートを有効にします。
upgrade_reporting_mail_subject: "Ansible Update Role Reporting"
メールの件名を設定します。
upgrade_reporting_mail_to: ""
メールの受取人を定義します。
upgrade_reporting_mail_from: ""
メールの送信者を定義します。
upgrade_reporting_mail_host: ""
メールサーバーまたは中継を定義します。
upgrade_reporting_mail_port: ""
メールサーバーポートを定義します。
upgrade_reporting_mail_user:
upgrade_reporting_mail_password:
メールサーバーが認証を必要とする場合、ここにユーザー名とパスワードを設定します。認証が不要な場合は、上記のように変数を空白のままにしてください。空であってはなりません。
upgrade_reporting_mail_run_once: true
プレイごとに1通のメールを送信したい場合は、これをtrue
に設定します。ホストごとに1通のメールを送信したい場合はfalse
に設定します。
依存関係
なし。
OS互換性
このロールは、サポートされていないまたは未検査のオペレーティングシステムで使用されないように、専用変数<role-name>_stable_os
に正しいディストリビューション名とメジャーバージョン番号が含まれているかどうかを確認します。この変数はロールのデフォルト変数ファイルdefaults/main.yml
にあり:
role_stable_os:
- Debian 10
- Ubuntu 18
- CentOS 7
- Fedora 30
ディストリビューションとメジャーバージョン番号の組み合わせがターゲットシステムと一致しない場合、ロールは失敗します。ロールが機能するようにするには、ディストリビューション名とメジャーバージョン名をその変数に追加し、動作します。ただし、新しい組み合わせはまずテストしてください!
このアイデアはHarryHarcourtに感謝します!
プレイブックの例
---
- name: "ロールを実行します。"
hosts: all
become: yes
roles:
- ansible-role-upgrade
貢献
バグや問題を見つけた場合や改善の余地があると思われる場合は、ぜひイシューをオープンしてください。また、何かを聞いたり相談したりしたい場合はいつでもご連絡ください。
免責事項
このロールはそのまま提供されており、意図した通りに動作することを保証することはできませんし、このロールによって引き起こされる損害や誤構成について責任を負うこともできません。使用する前にロールを十分に検討してください。
ライセンス
MIT
作成者情報
このロールは2019年にThorian93によって作成されました。
Upgrade Management for Linux
ansible-galaxy install thorian93.upgrade