alemorvan.patchmanagement
パッチ管理
システムのアップデートは単に yum update -y ではないため、patchmanagement は、RedHat、CentOS、Debian、またはUbuntu OSのサーバーにおけるアップデートプロセスとその周辺を簡単に管理するためのAnsibleのロールです。
パッチ管理の際に、次のことを行いたい場合:
- 監視のメンテナンスモードにターゲットを設定する
- プロセスの開始時または終了時にメッセージを送信する
- 障害が発生した場合に反応する
- その他
このロールがあなたの生活を楽にします。
どんな場合でも、サーバーに接続してアップグレードを実行しないようにしてください。
要件
特別な要件はありません。
機能
- システムについてのメモを取る - IPアドレスやルート、実行中のプロセス、マウントポイント(トラブルシューティングのために!忘れずに!)
- すべてのサーバーに対してカスタムタスクを実行する(
pm_before_update_tasks_file変数参照) - ターゲットサーバーに対してカスタムタスクを実行する(プレイブックの例の章参照)
私たちの主な目標:
- apt または yum でサーバーをパッチする
その後:
- 現在の日付を持つAnsibleファクトを設定し、必要に応じて環境変数を設定します。
- ターゲットサーバーに対してカスタムタスクを実行する(プレイブックの例の章参照)
- すべてのサーバーに対してカスタムタスクを実行する(
pm_after_update_tasks_file変数参照)
ロール変数
pm_restart_after_update: デフォルトはtrue
PM後にターゲットを再起動します。これにより、最新のカーネルが実行され、サーバーとそのサービスが再起動できる状態になります。定期的に実行することを検討してください。
pm_logpath: デフォルトは/etc/ansible/facts.d/PM.log
成功または失敗したPMの日時をどこに保存するか。
pm_date_format: デフォルトは"{{ ansible_date_time.date }}-{{ ansible_date_time.time }}"
ファクトおよびログパスでの日時のフォーマット方法?
pm_fact_name: デフォルトはpm
使用したいファクト名は?
pm_set_env_variable: デフォルトはtruepm_env_file_path: デフォルトは/etc/profile.d/last_pm_date.sh
最後のPM日付の環境変数を設定しますか?スクリプトはどこに保存しますか?
pm_manage_yum_clean_all: デフォルトはtrue
更新前に yum clean all を実行します。たとえば、RPMをすでにダウンロードしている場合は false に設定するべきです。
pm_manage_apt_clean: デフォルトはtrue
更新前に apt clean を実行します。
pm_manage_apt_autoremove: デフォルトはtrue
debパッケージを自動的に削除します。
pm_apt_verbose_package_list: デフォルトはfalse
aptの結果リストを印刷します。
pm_before_update_tasks_file:
たとえば custom_tasks/pm_before_update_tasks_file.yml。サーバーのアップデート前にこのタスクファイルを実行するようにロールを設定できます。対象ファイル内のすべてのタスクが実行されます。
メッセージを送信したり、スナップショットを取得したり、メンテナンスモードを設定したりするタスクを含めることを検討してください。
pm_after_update_tasks_file:
たとえば custom_tasks/pm_after_update_tasks_file.yml。サーバーのアップデート後にこのタスクファイルを実行するようにロールを設定できます。対象ファイル内のすべてのタスクが実行されます。
プレイブックの例
プレイブックの設定はとても簡単です:
- name: パッチ管理を開始する
hosts: servers
vars:
pm_before_update_tasks_file: custom_tasks/pm_before_update_tasks_file.yml
pm_after_update_tasks_file: custom_tasks/pm_after_update_tasks_file.yml
tasks:
- name: "パッチ管理を含める"
include_role:
name: "alemorvan.patchmanagement"
このプレイブックに加えて、サーバーごとにアップグレード前後に実行される2つのカスタムタスクファイルを作成できます。これは、たとえばLBからノードを削除したり、キャッシュをフラッシュしたり、サービスを再起動したりするのに便利です。
pm_before_update_tasks_file と pm_after_update_tasks_file は、すべてのターゲットに対するアクションを実行するタスクファイルを指定しますが、これらのファイルは特定のサーバーに特化したアクションに焦点を当てています。
プレイブックディレクトリ内に custom_tasks ディレクトリを作成し、before_pm_{{ inventory_hostname_short }}_custom_tasks.yml と after_pm_{{ inventory_hostname_short }}_custom_tasks.yml という名前のファイルを作成します。
- name: このサーバーのカスタムタスクをafter_pm_{{ inventory_hostname_short }}_custom_tasks.ymlファイルを使用して定義します。
debug:
msg: "このタスクはafter_pm_{{ inventory_hostname_short }}_custom_tasks.ymlファイルで定義されたカスタムタスクです"
モレキュールテスト
このロールはモレキュールとドッカーを使ってテストできます:
$ molecule test
このロールの使用方法の良い例については molecule/default/converge.yml を参照してください。
ライセンス
MIT
著者情報
このロールは、Antoine Le Morvan によって Vivalto Sante のために最初に書かれ、Nicolas Martin および Claranet France / BU RMP の Ansible チーム(Ismaël Ouattara および EliE Deloumeau)の作業に基づいています。
Ansible role to manage patchs managements on Linux for huge infrastructure with custom tasks per server basis or for all servers.
ansible-galaxy install alemorvan.patchmanagement