概要
Ansible® は、プロビジョニング、構成管理、アプリケーションのデプロイメント、オーケストレーション、その他多くの IT プロセスを自動化する、オープンソースの IT 自動化エンジンです。
Ansible を使用すると、ソフトウェアのインストール、日常的なタスクの自動化、インフラストラクチャとネットワーク・コンポーネントのプロビジョニング、セキュリティとコンプライアンスの向上、システムへのパッチ適用、複雑なワークフローのオーケストレーションが可能になります。
Red Hat® Ansible Automation Platform は、Ansible のコミュニティバージョンを基礎として構築されていますが、エンタープライズ・ライフサイクルを完全にサポートし、組織による自動化の標準化、運用化、および拡張を支援するための機能が含まれています。
この記事では、コミュニティ版 Ansible と Ansible Automation Platform を機能させる基本的な要素について説明します。
Ansible のしくみ
モジュール
Ansible は、ノード (またはホスト) に接続し、モジュールと呼ばれる小さなプログラムをこれらのノードにプッシュすることで機能します。ノードは、Ansible で管理するターゲットエンドポイント (サーバー、ネットワークデバイス、または任意のコンピュータ) です。モジュールは、Ansible で自動化タスクを実行するために使用されます。これらのプログラムは、システムの望ましい状態のリソースモデルとして記述されています。次に、Ansible はこれらのモジュールを実行して、終了時に削除します。
モジュールがない場合は、タスクを実行するためにアドホックコマンドとスクリプトを利用する必要があります。Ansible には、タスクの自動化に使用できる組み込みのモジュールが含まれています。または、ユーザーが新しいモジュールを独自に作成することもできます。Ansible モジュールは、Ruby、Python、bash など、JSON を返すことができる任意の言語で記述できます。Windows 自動化モジュールは Powershell で記述することもできます。
エージェントレス自動化
Ansible はエージェントレスです。つまり、Ansible が管理するノードにソフトウェアをインストールする必要がありません。Ansible は、管理するマシンに関する情報をインベントリーから読み取ります。Ansible にはデフォルトのインベントリーファイルがありますが、独自のインベントリーファイルを作成して、管理するサーバーを定義することができます。
Ansible は、SSH プロトコルを使用してサーバーに接続し、タスクを実行します。デフォルトでは、Ansible は ssh-agent で SSH キーを使用し、現在のユーザー名を使用してリモートマシンに接続します。root ログインは必要ありません。任意のユーザーとしてログインしてから、su または sudo コマンドを任意のユーザーとして使用できます。
接続すると、Ansible はコマンドまたは Ansible Playbook に必要なモジュールをリモートマシンに転送して実行します。Ansible は人間が読める YAML テンプレートを使用するため、ユーザーは高度なプログラミング言語を習得しなくても、繰り返しタスクを自動的に実行するようにプログラミングすることができます。
アドホックコマンドに Ansible を使用する
Ansible を使用してアドホックコマンドを実行し、1 つ以上の管理対象ノードで 1 つのタスクを自動化することもできます。これを行うには、コマンドを実行するか、コマンドラインから直接モジュールを呼び出す必要があります。Playbook は使用されず、アドホックコマンドは再利用できません。これは 1 回限りのタスクでは問題ありませんが、より頻繁なタスクやより複雑なタスクの場合は Ansible Playbook を使用する必要があります。
Ansible Playbook
Ansible Playbook は、IT プロセスをオーケストレーションするために使用されます。Playbook は、1 つ以上の play を含む YAML ファイル (拡張子は .yml または .yaml) で、システムの望ましい状態を定義するために使用されます。これは、Ansible Playbook 内で使用できるスタンドアローンのスクリプトである Ansible モジュールとは異なります。
play は、Ansible インベントリファイルからのホスト選択に対して実行する一連の順序付けられたタスクで構成されます。タスクは、play を構成し、Ansible モジュールを呼び出す部分です。play では、タスクは記述された順序で実行されます。
Ansible を実行すると、システムの状態を追跡できます。Ansible がシステムをスキャンしてシステムの Playbook の記述を見つけ、実際のシステムの状態が一致しない場合、Ansible はシステムが Playbook と一致するために必要な変更を行います。
Ansible には、システムの状態を変更する前に Playbook とアドホックコマンドを検証できるチェックモードがあります。このモードで Playbook を実行すると、実際に変更を加えることなく、Ansible が実行する処理を確認できます。Ansible のハンドラーは、システムに変更が加えられた後にのみ、特定のタスクを実行するために使用されます。タスクによってトリガーされ、Playbook 内の他のすべての play の最後に 1 回実行されます。
変数により、Playbook の実行方法を変更して、パッケージバージョンやファイルパスなどのシステム間の差異を管理できます。Ansible を使用すると、単一のコマンドによってさまざまなシステム間で Playbook を実行できます。変数はこれらのシステム間の差異を吸収し、Playbook、インベントリー、再利用可能なファイルやロール、またはコマンドラインで定義できます。変数は、変数が相互にオーバーライドする順序を定義する、変数の優先順位に従います。
Ansible Roles は、完全に自己完結型で、複雑なオーケストレーションを完了するために必要なタスク、変数、構成テンプレート、およびその他のサポートファイルをグループ化して移動させることができる特別な種類の Playbook です。コレクション内には複数のロールを存在させることができるため、Automation Hub と Ansible Galaxy を介してコンテンツを簡単に共有できます。
コレクションは、Playbook、ロール、モジュール、プラグイン、ドキュメントをすべて 1 つのバンドルに含めることができる Ansible コンテンツの配布形式で、作成者が自動化を共有したり、他の人が作成したコンテンツを使用したりすることが容易になります。このコレクションはコンテンツドメインごとに分類されているので、さまざまなロールやモジュールを見つけて組み合わせるために必要な事前作業が軽減されます。
Ansible Content Collections は同様に機能しますが、Ansible Automation Platform ユーザーが Red Hat および認定パートナーが提供する事前構築済みのコンテンツを使用してより迅速に自動化できるよう、特別に設計されています。これらのコレクション (Red Hat Ansible Certified Content と Ansible 検証済みコンテンツの両方を含む) は、パートナーの意見に基づいて開発およびテストされ、セキュリティを重視しており、信頼性が高く、エンタープライズ対応であることが保証されています。
Ansible とRed Hat Ansible Automation Platform
Ansible は無料で使用でき、自由にダウンロードし、変更することができます。また、このプロジェクトには何千人ものコントリビューターの経験と知識が活用されています。Ansible のコミュニティ・ディストリビューションには、Python がインストールされているほとんどのオペレーティングシステムでサポートされる、強力なコマンドラインツールのスイートが含まれています。これには、Red Hat Enterprise Linux®、Debian、Ubuntu、MacOS、FreeBSD、Microsoft Windows などが含まれます。
Ansible Automation Platform は、10 余りのアップストリーム・プロジェクトを、セキュリティが強化された統合エンタープライズ製品と一体化します。コミュニティ版 Ansible を基盤として構築されており、部門を超えたチームを対象としたエンドツーエンドの自動化エクスペリエンスを生み出し、自動化の開発者、エンジニア、運用チーム間にプラグアンドプレイの体験を提供します。
Ansible と Red Hat Ansible Automation Platform の違いについてさらに詳しく
Ansible のトレーニングを受講する
Ansible Basics: Automation Technical Overview
このオンデマンドのオンライン動画シリーズでは、Ansible による自動化と構成管理、プロビジョニング、デプロイ、およびクラウド、仮想、物理環境にわたるコンピュート・インフラストラクチャの管理について説明します。
Red Hat Enterprise Linux Automation with Ansible
このコースでは、最新バージョンの Red Hat® Ansible Automation Platform を使用して Linux® のシステム管理タスクを自動化する方法を学びます。Ansible Automation Platform を使用してプロビジョニング、構成、アプリケーションのデプロイメント、およびオーケストレーションを自動化するために必要な技術を学びます。
学習リソースを探す
Ansible Automation Platform を使用するための学習資料やツールをタスクごとに確認できます。これらのリソースでは、デプロイメントのオプション、インストール、機能を最大限に活用する方法、新しい課題に自動化を適用するユースケースについて説明します。
インタラクティブラボで実践的な演習を体験する
このインタラクティブなシナリオでは、ブラウザーで動作する事前構成済みの Ansible Automation Platform 環境が提供されるため、さまざまなユースケースに応じた自動化の方法を自分のペースで学習することができます。
Ansible による生成 AI
Red Hat は IBM と提携して Red Hat Ansible Lightspeed with IBM watsonx Code Assistant を作成しました。これは、チームが自動化コンテンツをより効率的に学習、作成、維持できるようにする生成 AI サービスです。タスクリクエストは簡単な言語で入力できます。Ansible Lightspeed は IBM watsonx 基盤モデルと対話し、Ansible Playbook を作成するために使用できる推奨するコード情報を生成します。
Ansible Automation Platform の利用方法
プロビジョニング
Ansible Playbook を使用してインフラストラクチャの望ましい状態を記述し、それを Ansible Automation Platform にプロビジョニングさせることで、毎回同じ方法で同じ環境をプロビジョニングすることができます。これは、物理環境、クラウド環境、または仮想環境における新規インスタンスの作成から、新しいサービス、アプリケーション、コンピューティングホストなどのリソースの追加に至るまで、IT 環境のあらゆるインフラストラクチャの構築に適用でき、すべて 1 つのワークフロー内で実行されます。
構成管理
構成管理を自動化すると、変更やデプロイを迅速化し、手動操作によるエラーを最小限に抑えることができるのに加え、システム管理が予測可能かつスケーラブルになります。コンピュータシステム、サーバー、ソフトウェアを一貫性のある望ましい状態に維持することで、セキュリティ侵害、サービスの低下、さらには停止のリスクが軽減されます。また、IT チームはパッチやアップデートを手作業で適用する時間を短縮し、より影響が大きいプロジェクトに充てる時間を増やすことができます。
ネットワークの自動化
ネットワーク自動化では、プログラム可能なロジックを使用してネットワークリソースとサービスを管理するため、ネットワーク運用 (NetOps) チームはネットワーク・インフラストラクチャとアプリケーションサービスを手動で実行するよりも迅速に構成、スケーリング、保護、および統合できるようになります。
アプリケーションのデプロイ
アプリケーションのデプロイを自動化すると、調整されたプロセスを使用して、テスト環境と本番環境の間でソフトウェアを移行できるようになります。これにより、ソフトウェア配信サイクルが短縮され、本番環境でのアプリケーションの信頼性が向上します。これは、DevOps 手法を適用し、CI/CD パイプラインを管理するために不可欠です。
セキュリティの自動化
セキュリティの自動化は、セキュリティプロセス、アプリケーション、インフラストラクチャを 1 つのワークストリームに統合します。セキュリティ侵害やその他の脅威につながる不整合やエラーを削減しながら、セキュリティ運用 (SecOps) を効率化するのに役立ちます。セキュリティチームは、Ansible Automation Platform を使用して、インベントリー、Playbook、またはアクセス許可を共有する一連のジョブを構成し、調査または修正を完全に自動化できます。
オーケストレーション
1 つのタスクを自動化することで得られるメリットは限られています。そこで、Ansible Automation Platform をはじめとする自動化ソリューションを使用すると、インフラストラクチャ、ネットワーキングデバイス、セキュリティツールなど、統合されていない複数のシステム間で調整された、多くのステップを含むワークフローを簡単に設定し自動化することができます。オーケストレーションにより、さまざまな IT チーム間のコミュニケーションも向上します。
Automation as Code アプローチで IT を加速
Ansible Automation Platform は、インフラストラクチャの構築、プロビジョニング、デプロイなどのいわゆる Infrastructure as Code (IaC) タスクをするために使用されていますが、運用ライフサイクル全体でのプロセスの自動化にも使用できます。イベント駆動型の機能を含む統一された自動化プラットフォームを使用することで、組織は IaC の手法を Ops as Code (OaC) および Policy as Code (PaC) へと拡張できます。
Red Hat の自動化を選ぶ理由
Red Hat Ansible Automation Platform には、イベント駆動型のソリューション、Playbook、分析機能など、企業全体での自動化の導入に必要なツールがすべて揃っています。ビジュアル・ダッシュボードやロールベースのアクセス制御のほか、運用の複雑さを低減する機能などにより、IT インフラストラクチャを一元的に制御できます。
Red Hat サブスクリプションを使うことで、堅牢なパートナーエコシステムからの認定コンテンツ、ホストされた管理サービスへのアクセス、チームが組織全体で自動化を作成、管理、拡張するためのライフサイクル・テクニカルサポートを利用できます。また、数千ものお客様を支援することで蓄積された Red Hat の専門知識を活用できます。
組織に求められているのは、自動化を簡単に作成できることだけでなく、プロジェクトやチームの壁を越えて、適切なガバナンスと制御を維持しつつ自動化を共有および再利用できるようにすることです。Ansible Automation Platform を使用すると、新しいアプリケーションやサービスの迅速な導入、IT インフラストラクチャの効率的な管理、アプリケーション開発の生産性向上が可能になります。
Red Hat Ansible Automation Platform の組み込み機能は、まさに箱の中のアクセラレーターです。ベンダーやパートナーの多くも自社技術のインストール、設定、保守のためのスクリプトを書くのに使用しているデファクトスタンダードです。