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: デフォルトは true
  • pm_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_filepm_after_update_tasks_file は、すべてのターゲットに対するアクションを実行するタスクファイルを指定しますが、これらのファイルは特定のサーバーに特化したアクションに焦点を当てています。

プレイブックディレクトリ内に custom_tasks ディレクトリを作成し、before_pm_{{ inventory_hostname_short }}_custom_tasks.ymlafter_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
ライセンス
mit
ダウンロード
868