メインコンテンツまでスキップ

【メモ】Ansibleパッチ適用自動化

要旨

Ansible でパッチ適用を自動化するときに効くのは、Playbook そのものよりも「パッチ管理プロセス」「実行基盤」「証跡」を一体で設計する考え方です。NIST のパッチ管理ガイドが示すように、パッチ管理は識別、優先度付け、取得、適用、適用確認までを含む運用プロセスです。Ansible はその実行を大きく効率化できますが、企業運用では ansible-playbook が動くだけでは足りず、権限分離、承認、監査、段階展開、失敗時復旧まで含めて設計したほうが事故率を下げやすくなります。12

結論を先に置くと、選び方の目安は次の 3 段階です。

規模・要件向く形
数十〜数百ノード / 統制が軽いCLI + Git + Vault で始め、serial と失敗率制御、証跡保管を先に固める
数百〜数千ノード / 部門分掌と監査が必要AWX または Automation Controller を中核に置き、RBAC、スケジュール、Workflow、監査ログ、メトリクスを標準化する
数千〜数万ノード / 多拠点・分離ネットワーク実行プレーンを分散し、ホップノードと実行ノードを組み合わせて中央統制と拠点内実行を両立する

本稿では、前提が明示されていないため、Linux、Windows、ネットワーク機器の更新を対象にします。ミドルウェア更新も、変更管理、検証、段階展開、ロールバックという枠組み自体は同じです。

前提として押さえるべき Ansible 側の論点

いまの Ansible は ansible-core と Collection の組み合わせで使う前提が強く、Windows やネットワーク機器のパッチ適用ではこの点を外しにくいです。Collection はモジュール、プラグイン、ロールの配布単位で、ansible-core だけでは足りない機能が多くあります。たとえば Windows Update を扱う ansible.windows.win_updatesansible.windows collection に含まれ、ansible-core には含まれません。ネットワーク機器向けの ansible.netcommon.network_cli も同様です。3456

実務上の落とし穴は、ansible-core と Collection の対応関係がずれることです。ansible.windows collection の現行ドキュメントでも、対応 ansible-core2.16.0 以降とされています。加えて、Ansible community package と ansible-core は別のリリース体系で保守されるため、ローカル開発環境、CI、Automation Controller 上の実行環境がばらけると再現性が崩れます。47

この問題に対する基本解は、Execution Environment で依存関係を固定することです。Execution Environment は、従来の仮想環境の代わりに使うコンテナイメージで、ansible-core、Collections、Python 依存、システム依存をまとめて同梱できます。パッチ適用のように OS 別、接続方式別の差が大きい運用では、EE を使うかどうかで「開発では動くが本番では失敗する」の頻度が大きく変わります。8

公開事例から読めること

公開情報で追える事例だけを並べても、共通するのは「標準化された実行基盤」と「人手前提の手順からの脱却」です。

組織業界公開された規模感採用形態読み取れるポイント
Emory University教育RHEL サーバー 500 台超Ansible Automation Platform でパッチ適用を自動化手動なら 2 週間かかる修復を 4 時間で完了。パッチ自動化は速度よりも復旧可能な標準手順化が効いている。9
Asian Development Bank金融職員 3,500 人 + 3,000 人規模マネージドクラウド上の Ansible Automation Platformパッチ、DB クローン、復旧を自動化し、月 20 人日規模の削減を公開。運用の中央化と既存ツール連携が主眼。10
ABB製造・テクノロジー32 チームが利用グローバル標準の Ansible Automation Platformチームごとに別の自動化手段を使う分散状態から、マルチテナンシー前提の共通基盤へ寄せている。11
Swisscom通信約 15,000〜20,000 の IT / ネットワーク構成要素Ansible Tower / Automation Platform を中央基盤化自動化対象は OS だけでなく firewall、network、storage を含む。年間約 3,000 時間削減と、セルフサービス・RBAC の強化を前面に出している。1213

ここから読めるのは、パッチ適用だけを局所最適化しても効果は限定的で、結局は「誰が、どの権限で、どのテンプレートを、どの順序で実行するか」を共通化した組織のほうが伸びるということです。

実装形態の比較

パッチ適用を継続運用として回す前提で見ると、実装形態ごとの違いはかなりはっきりしています。

形態代表例強み弱み向く場面
コマンドライン中心ansible-playbook、Git、CI、Vault最小構成で始めやすい。Playbook の自由度が高い。承認、監査、権限分離、再実行統制を外部設計に頼りやすい。小規模、少人数、まず標準ロールを固めたい段階
Web 実行基盤AWX、Automation ControllerGUI/API、Job Template、Workflow、スケジュール、Activity Stream、メトリクスを持てる。基盤運用が増える。AWX は商用 SLA やサポート付きアップグレードを前提にしにくい。部門分掌、監査、セルフサービス運用が必要な段階
配布基盤込みの統合型Satellite + Ansible、WSUS + Ansible、機器ごとのイメージ配布基盤配布元、ライフサイクル、承認、検証済みコンテンツ管理を寄せやすい。設計対象が増える。製品ごとの差分吸収が必要。配布元を統制したい環境、本番前検証を厳密に回したい環境
マネージド / SaaSAAP Service on AWS などコントロールプレーン運用を減らしやすい。分散実行と親和性が高い。接続モデルやサポート範囲の理解が必要。ベンダー依存も増える。多拠点・分離ネットワーク・少人数運用

AWX / Automation Controller の価値は、ジョブを GUI から起動できること自体よりも、Workflow、Activity Stream、認証連携、メトリクス、資格情報の集約をセットで持てる点にあります。逆に AWX を選ぶなら、SLA やアップグレード互換性の責任を自前で持つ前提で判断したほうが安全です。14151617

代表構成パターン

小規模: CLI + Git + Vault

運用者 / CI
├─ Git pull → Playbook / Role リポジトリ
├─ Vault → 秘密情報
└─ ansible-playbook 実行
├─ SSH → Linux
├─ WinRM / PSRP → Windows
└─ network_cli / httpapi → ネットワーク機器

この構成の利点は、最短で始められることです。まずは serialmax_fail_percentage で段階展開を入れ、ログと実行結果を保管し、誰がいつどの Playbook を回したかが追えるようにします。小規模ではこれだけで十分なこともあります。1819

ただし、この構成は拡大すると急に脆くなります。承認フロー、権限分離、作業委譲、再実行統制、証跡の改ざん耐性を後付けで足すことになりやすいからです。

中規模: Automation Controller 中心

運用者 / 申請者
↓ Web UI / API
Automation Controller
├─ SCM 連携
├─ Job Template / Workflow
├─ 資格情報 / RBAC
├─ Activity Stream
├─ Metrics Endpoint
└─ 実行ノード
├─ SSH → Linux
├─ WinRM / PSRP → Windows
└─ network_cli → ネットワーク機器

実務で効くのは Workflow です。Red Hat のパッチ自動化ガイドでも、スナップショット取得、パッチ適用、失敗時復元、成功時クリーンアップという複数ジョブ連鎖が例示されています。これをテンプレート化しておけば、「作業者が上手いから事故が少ない」状態から抜けやすくなります。2

加えて、Activity Stream で変更履歴を追え、認証は LDAP や SAML などと統合でき、メトリクスは Prometheus 系に載せられます。UI があること自体より、統制と観測が一段上がることのほうが価値です。141516

大規模: 分散実行プレーン

ポータル / ITSM / 申請

Controller Cluster
├─ DB / 実行制御
├─ Automation Hub / EE Registry
└─ Automation Mesh
├─ Hop Node(中継)
├─ 拠点 A 実行ノード → 拠点 A の Linux / Windows / NW
└─ 拠点 B 実行ノード → 拠点 B の Linux / Windows / NW

多拠点や分離ネットワークでは、制御プレーンと実行プレーンを分けないと苦しくなります。Automation Mesh では、hop ノードがトラフィック中継だけを担い、execution ノードが実際のジョブを実行します。この役割分離があると、中央から直接到達しづらいセグメントでも現実的な設計になります。20

さらにマネージドサービスを使う場合、AAP Service on AWS は PULL モデルを推奨しており、実行ノード側から WebSocket を張る形なので企業ネットワーク側で Ingress を開けずに済みます。mTLS で保護される一方、TLS 終端プロキシは非サポートなので、ネットワーク設計時の前提条件として確認が必要です。21

運用設計で外しにくい論点

段階展開を最初から入れる

Ansible では serial によってホストをバッチ単位で処理でき、max_fail_percentage と組み合わせることで失敗率しきい値を超えた時点で停止できます。パッチ適用で重要なのは、全台一斉に成功することではなく、失敗の影響範囲を小さく閉じ込めることです。18

- hosts: linux_targets
become: true
serial: "10%"
max_fail_percentage: 10
tasks:
- name: Apply security patches
ansible.builtin.dnf:
name: "*"
security: true
state: latest

- name: Reboot hosts
ansible.builtin.reboot:
reboot_timeout: 1800

- name: Wait until hosts are reachable again
ansible.builtin.wait_for_connection:
timeout: 600

wait_for_connection は Windows も含めて使えるため、再起動後の復帰待ちを標準化しやすいです。22

ロールバックを「人が判断する作業」にしない

ロールバックを Runbook の末尾に文章で書くだけだと、失敗時に一番忙しい人へ判断が集中します。スナップショット取得、パッチ適用、失敗時復元、チケット作成、成功時スナップショット削除までを Workflow にしておくほうが、復旧時間も説明責任も安定します。2

ネットワーク機器では、変更前バックアップを必須にするだけでも事故率が下がります。ansible.netcommon.cli_config は変更前に running-config のフルバックアップを取れます。23

Windows は接続方式と更新方式の差分を先に潰す

Windows 更新では、ansible.windows.win_updates を中心に考えるのが素直です。カテゴリ指定、再起動、ログ出力をまとめて扱えます。接続は WinRM でも PSRP でもよいですが、Ansible の現行 Windows ガイドでは PSRP は WinRM よりやや高速で、負荷時のタイムアウトに強いことがあると説明されています。524

- hosts: windows_targets
tasks:
- name: Install Windows updates with reboot
ansible.windows.win_updates:
category_names:
- SecurityUpdates
- CriticalUpdates
reboot: true
log_path: C:\ansible_wu.log

Windows では、更新直後にサービスが完全復帰していない状態を織り込んで、疎通確認と業務アプリ確認を別タスクに分けたほうが安全です。

認証、権限、秘密情報は実行基盤に寄せる

Linux は SSH、Windows は WinRM または PSRP、ネットワーク機器は network_cli が基本線です。CLI 運用なら Ansible Vault で秘密情報を暗号化し、Controller 運用なら資格情報と RBAC を中央化します。運用者に鍵やパスワードを直接見せず、実行権限だけを委譲できる設計のほうが長期運用に向きます。19615

監査とメトリクスを「後から考える項目」にしない

AWX の Activity Stream は、どのオブジェクトに対して、誰が、いつ、何をしたかを追う起点になります。Automation Controller には Prometheus 等で取得できるメトリクスエンドポイントもあります。バージョンによってパス表記は差がありますが、少なくとも現行系ドキュメントではメトリクス公開が標準機能です。1416

ここで見るべきは、ジョブ成功率だけではありません。適用率、再実行率、失敗率、平均復旧時間、対象別の滞留件数を持っておくと、月次パッチ運用の品質が数字で話せるようになります。

多拠点や分断ネットワークでは「実行ノードを近づける」

到達不能ホストが多い環境で中央から直接流すだけだと、再試行とタイムアウトで全体が不安定になります。Hop node と execution node を使って実行位置を拠点側へ寄せるほうが現実的です。AWS の PULL モデルはその設計と相性がよく、アウトバウンド接続だけで済ませたい環境で特に有効です。2021

並列性は上げるより制御する

大規模では「もっと並列に流す」よりも「どこまで並列に流してよいか」を定義するほうが重要です。Automation Controller では instance group ごとに max_concurrent_jobsmax_forks を設定できるため、組織や拠点単位で消費上限を決められます。25

導入コストと運用工数の見方

ここは製品価格よりも、何が工数を押し上げるかで見るほうが実務的です。支配要因は、対象の多様性、統制要件、ロールバックの深さ、拠点分散、EE の有無です。特に Linux、Windows、ネットワーク機器が混在すると、接続、再起動、確認項目が一気に増えます。

以下は標準的な企業システムを想定した筆者試算のレンジです。金額ではなく、人日と月次運用工数の目安として見てください。

規模レンジ推奨実装形態初期導入の目安運用の目安インフラの見方
数十〜200 ノードCLI + Git/CI + Vault20〜60 人日2〜6 人日 / 月実行ホスト、ログ保管、最低限の検証環境
200〜2,000 ノードAWX / Automation Controller60〜140 人日6〜15 人日 / 月DB、実行ノード、監視、証跡保管
2,000〜10,000 ノードController + 分散実行 + Workflow 標準化140〜260 人日15〜35 人日 / 月実行プレーン分散、容量制御、拠点接続設計
10,000 ノード超大規模分散 + HA またはマネージド260〜500 人日35〜80 人日 / 月HA、複数拠点、接続モデル、実行ノード最適化

運用工数は、Playbook を書く時間より、例外処理、証跡保管、失敗調査、再実行判断、メンテナンスウィンドウ調整で膨らみます。ここを減らしたいなら、Workflow と定常 SOP を先に作るほうが効きます。

導入ロードマップ

12 週間で立ち上げるなら、最初に大規模 HA を作るより、標準ロール、段階展開、証跡、復旧手順を先に固めたほうが成功しやすいです。

  1. 週 1-2: 資産棚卸しと方針整理
    Linux、Windows、ネットワーク機器を分け、接続方式、再起動要否、検証観点、パッチ期限、例外条件を決める。

  2. 週 3-4: 実行基盤の最小構築
    まず CLI で始めるか、最初から AWX / Controller を入れるかを決める。認証連携、ログ保管先、証跡の残し方まで合わせて決める。

  3. 週 5-6: 標準 Playbook / Role 整備
    serialmax_fail_percentage、再起動、wait_for_connection、Windows Update、ネットワーク機器バックアップを骨格として揃える。

  4. 週 7-8: テストと依存固定
    ansible-lint と Molecule を CI に入れ、Execution Environment で依存を固定する。26278

  5. 週 9-10: パイロット運用
    Canary、段階拡大、復元、通知、レポートを含めて本番相当で回す。ここで SOP と障害時判断基準を確定させる。

  6. 週 11-12: 本番移行と横展開
    定期パッチと緊急パッチの 2 本立てで運用を始め、適用率、失敗率、平均復旧時間を KPI として定着させる。

まとめ

Ansible のパッチ適用自動化を企業運用として成立させるには、Playbook の巧拙よりも、段階展開、ロールバック、認証、証跡、分散実行の設計が効きます。小規模では CLI から始めてよいですが、運用を人に依存させないなら、どこかの段階で Web 実行基盤と Workflow に寄せるほうが安定します。

特に、Linux、Windows、ネットワーク機器を横断して扱う場合は、Collection と Execution Environment の整備を後回しにしないほうが安全です。パッチ適用を「月次作業」ではなく「標準化された変更管理プロセス」として扱えるかどうかが、最終的な差になります。

参考資料(出典)

Footnotes

  1. NIST, Guide to Enterprise Patch Management Technologies(NIST SP 800-40r3, 2013/07/01)。企業向けパッチ管理プロセスを整理した基礎文書。https://www.nist.gov/publications/guide-enterprise-patch-management-technologies-0

  2. Red Hat Documentation, Implementing security automation - Automating patching with Ansible Automation Platform(参照 2026/04/15)。複雑なパッチ適用 Workflow の例を説明。https://docs.redhat.com/ja/documentation/red_hat_ansible_automation_platform/2.6/html-single/implementing_security_automation/implementing_security_automation 2 3

  3. Ansible Core Documentation, Using collections(参照 2026/04/15)。Collection が Ansible コンテンツの配布単位であることを説明。https://docs.ansible.com/projects/ansible-core/2.13/user_guide/collections_using.html

  4. Ansible Community Documentation, Ansible.Windows(参照 2026/04/15)。ansible.windows collection と対応 ansible-core バージョンを記載。https://docs.ansible.com/projects/ansible/latest/collections/ansible/windows/index.html 2

  5. Ansible Community Documentation, ansible.windows.win_updates module(参照 2026/04/15)。Windows Update 自動化モジュールの仕様。https://docs.ansible.com/projects/ansible/latest/collections/ansible/windows/win_updates_module.html 2

  6. Ansible Community Documentation, ansible.netcommon.network_cli connection(参照 2026/04/15)。ネットワーク機器向け接続プラグインは Collection 提供で ansible-core 非同梱。https://docs.ansible.com/ansible/latest/collections/ansible/netcommon/network_cli_connection.html 2

  7. Ansible Core Documentation, Releases and maintenance(参照 2026/04/15)。Ansible community package と ansible-core の保守体系差分を説明。https://docs.ansible.com/projects/ansible-core/2.16/reference_appendices/release_and_maintenance.html

  8. Automation Controller User Guide, Execution Environments(参照 2026/04/15)。Execution Environment を依存込みのコンテナイメージとして説明。https://docs.ansible.com/automation-controller/4.1.1/html/userguide/execution_environments.html 2

  9. Red Hat, Emory University mitigates sudo threat with Red Hat Ansible Automation Platform(Case study, 2021/08/20)。500 台超の RHEL サーバー修復を 4 時間で完了した事例。https://www.redhat.com/en/resources/emory-university-completes-patch-case-study

  10. Red Hat, ADB uses Red Hat Ansible Automation Platform to boost infrastructure management(Case study, 2022/05/16)。パッチ、DB クローン、復旧の自動化事例。https://www.redhat.com/en/resources/asian-development-bank-case-study

  11. Red Hat, How ABB saved 1,800+ hours a month with Red Hat Ansible Automation Platform(Case study, 2026/01/15)。32 チーム利用の共通基盤化事例。https://www.redhat.com/en/resources/abb-case-study

  12. Red Hat, Swisscom Selects Red Hat Ansible Tower to Improve Efficiency and Reduce Deployment Time(Press release, 2018/08/21)。約 15,000 構成要素を対象とした導入事例。https://www.redhat.com/en/about/press-releases/swisscom-selects-red-hat-ansible-tower-improve-efficiency-and-reduce-deployment-time

  13. Red Hat, Configuration management with Red Hat Ansible Automation Platform(参照 2026/04/15)。Swisscom が 20,000 の IT / ネットワークシステムを自動化し、年間約 3,000 時間削減と紹介。https://www.redhat.com/en/technologies/management/ansible/configuration-management

  14. Ansible AWX community documentation, The User Interface(参照 2026/04/15)。Activity Stream が変更履歴を表示できることを説明。https://ansible.readthedocs.io/projects/awx/en/24.6.1/userguide/main_menu.html 2 3

  15. Automation Controller Administration Guide, Setting up enterprise authentication(参照 2026/04/15)。LDAP、SAML、OIDC などの認証連携を説明。https://docs.ansible.com/automation-controller/4.1.2/html_ja/administration/ent_auth.html 2 3

  16. Red Hat Documentation, Automation controller administration guide - Metrics(参照 2026/04/15)。Controller のメトリクスエンドポイントと Prometheus 連携を説明。https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.4/html/automation_controller_administration_guide/assembly-controller-metrics 2 3

  17. Red Hat, Red Hat Ansible Automation Platform によるセキュリティ強化(参照 2026/04/15)。AWX には SLA 保証やサポート付きアップグレードが含まれない点を整理。https://www.redhat.com/ja/technologies/management/ansible/gain-security-with-red-hat-ansible-automation-platform

  18. Ansible Documentation, Continuous Delivery and Rolling Upgrades(参照 2026/04/15)。serial と段階展開の考え方を説明。https://docs.ansible.com/projects/ansible/2.6-archive/scenario_guides/guide_rolling_upgrade.html 2

  19. Ansible Community Documentation, Ansible Vault(参照 2026/04/15)。秘密情報を暗号化して Playbook / Role と分離する基本機能。https://docs.ansible.com/ansible/latest/vault_guide/vault.html 2

  20. Red Hat Documentation, Automation mesh for operator-based installations(参照 2026/04/15)。execution ノードと hop ノードの役割分離を説明。https://docs.redhat.com/es/documentation/red_hat_ansible_automation_platform/2.4/html-single/red_hat_ansible_automation_platform_automation_mesh_for_operator-based_installations/index 2

  21. Red Hat Documentation, Red Hat Ansible Automation Platform Service on AWS PULL and PUSH models(参照 2026/04/15)。PULL モデル、WebSocket、mTLS、Ingress 不要の考え方を説明。https://docs.redhat.com/en/documentation/ansible_on_clouds/2.x/html/red_hat_ansible_automation_platform_service_on_aws/saas-pull-push 2

  22. Ansible Community Documentation, ansible.builtin.wait_for_connection module(参照 2026/04/15)。再起動後の復帰待ちに使える標準モジュール。https://docs.ansible.com/projects/ansible/latest/collections/ansible/builtin/wait_for_connection_module.html

  23. Ansible Community Documentation, ansible.netcommon.cli_config module(参照 2026/04/15)。変更前の running-config バックアップ取得に対応。https://docs.ansible.com/projects/ansible/latest/collections/ansible/netcommon/cli_config_module.html

  24. Ansible Community Documentation, Managing Windows hosts with Ansible(参照 2026/04/15)。Windows 接続方式として WinRM / PSRP を整理し、PSRP の特徴を説明。https://docs.ansible.com/ansible/latest/os_guide/intro_windows.html

  25. Automation Controller Administration Guide, Container and Instance Groups(参照 2026/04/15)。max_concurrent_jobsmax_forks による容量制御を説明。https://docs.ansible.com/automation-controller/4.5/html/administration/containers_instance_groups.html

  26. Ansible Lint Documentation, About Ansible Lint(参照 2026/04/15)。playbook、role、collection の lint に使う CLI ツール。https://ansible.readthedocs.io/projects/lint/

  27. Ansible Molecule Documentation, About Ansible Molecule(参照 2026/04/15)。Ansible collection、playbook、role のテストフレームワーク。https://ansible.readthedocs.io/projects/molecule/