Ansible Role の概要と使用方法

URL をコピー

Ansible® Role は、Ansible Automation の可搬性のある自己完結ユニットです。関連するタスクと関連する変数、ファイル、ハンドラー、その他のアセットを既知のファイル構造でグループ化するための推奨される手法として機能します。自動化タスクは Ansible Playbook にのみ記述できますが、Ansible Role を使用すると、1 つまたは複数の play で実行できる自動化コンテンツのバンドルを作成でき、Playbook 間で再利用したり、コレクションで他のユーザーと共有したりできます。

Ansible Role は YAML で記述されます。YAML は設定ファイルの作成に使用される、人間が読めるデータシリアライズ言語です。タスクや play にロールが含まれる場合、Ansible は 8 つの標準ロールディレクトリのうち少なくとも 1 つにある main.yml ファイルを探します。これらのディレクトリ (解説コメントとともに以下に記載) には、ロールタスク、ハンドラー、モジュール、デフォルト、変数、ファイル、テンプレート、メタが含まれます。

roles/ common/ # この階層は "ロール" タスクを表します tasks/ # main.yml # <-- タスクファイルには必要に応じてより小さなファイルを含めることができます handlers/ # main.yml # <-- ハンドラーファイル templates/ # <-- テンプレートリソースで使用するファイル ntp.conf.j2 # <------- テンプレートの末尾は.j2 files/ # bar.txt # <-- コピーリソースで使用するファイル foo.sh # <-- スクリプトリソースで使用するスクリプトファイル vars/ # main.yml # <-- このロールに関連する変数 defaults/ # main.yml # <-- このロールのデフォルトの優先順位の低い変数 meta/ # main.yml # <-- ロールの依存関係 library/ # ロールにはカスタムモジュールを含めることもできます module_utils/ # ロールにはカスタムmodule_utilsを含めることもできます lookup_plugins/ # あるいは他のタイプのプラグイン(この場合はルックアップなど) webtier/ # 上の "common"と同様の構造で、対象は webtier ロール monitoring/ # "" fooapp/ # "" 

Ansible Role は、Playbook で呼び出すことで使用できます。呼び出すには、roles オプションでリストするか、include_role コマンドまたは import_role コマンドでロールタスクセクションに追加します。roles オプションでリストされたロール、または import_role で追加されたロールは、play の他のどのタスクよりも先に実行され、include_role で追加されたロールはタスクリスト内で定義された順に実行されます。

Ansible Role と Ansible Playbook は、どちらも自動化タスクを整理して実行するためのツールですが、それぞれの目的は異なります。Ansible Role を作成するか、すべてのタスクを Ansible Playbook に記述するかは、ユースケースと Ansible の経験値によって決まります。

ほとんどの自動化開発者とシステム管理者は、単体の Playbook で自動化コンテンツを作成するところから始めます。Playbook は定義されたインベントリーに対して実行される自動化タスクのリストです。タスクは play (特定のホストにマッピングされ、順番に実行される 1 つ以上のタスクのグループ) に編成できます。Playbook には 1 つ以上の play を含めることができ、1 つのファイルで Ansible Automation を実行するための柔軟なメカニズムを提供します。

Playbook は Ansible で自動化するための強力な方法ですが、すべてのタスクを Playbook で記述することが必ずしも最善の方法とは限りません。スコープと変数が複雑で、再利用性が有用な場合、自動化コンテンツのほとんどを Ansible Role で作成し、Playbook 内で呼び出す方が適切な選択である場合もあります。

次の例は、Playbook 内で linux-systemr-roles.timesync というロールを使用する例です。この場合、この 1 つのロールで達成していることを実現するためには、4 つ以上のタスクが必要となります。

- name: Manage timesync with 3 servers hosts: targets vars: timesync_ntp_servers: - hostname: foo.example.com iburst: true - hostname: bar.example.com iburst: true - hostname: baz.example.com iburst: true roles: - linux-system-roles.timesync 

自動化コンテンツのすべてを単一の Playbook に記述する代わりに、Ansible Role を使用することにはいくつかのメリットがあります。

再利用性と共有

ロールは自動化の再利用可能なユニットとして設計されています。ロールは、1 つの play または Playbook のコンテキストから自動化タスクの論理的なグループ化を分離するのに役立つため、複数の play または Playbook 全体で再利用したり、共有して他のプロジェクトで再利用したりすることができます。

モジュール式

ロールを使用することで、自動化において、各ロールがそれぞれ 1 つの機能を担うモジュール式のアプローチが促進されます。このアプローチにより、自動化コードの理解、保守、トラブルシューティングが容易になります。

整理

Ansible Role を活用すると、構造化された方法でタスク、テンプレート、ファイル、変数を整理できます。この構造により、特定のロールに関連するすべてがそのディレクトリに含まれるため、複雑な自動化の設定の管理が容易になります。

パラメーター化

ロールには、ロールが Ansible Playbook で使用される際にオーバーライドできるデフォルト変数を定義できます。これにより、ロール自体を変更することなく、ロールの動作を異なる環境やユースケースに合わせることが容易になります。

バージョン管理と依存関係管理

ロールはバージョン管理でき、ロール内の meta/main.yml ファイルでロールの依存関係を指定できます。その結果、バージョンと依存関係を明示的に管理し、異なる環境間での安定性と一貫性を確保できます。

テスト

ロールの構造により、テスト手法の適用が容易になります。より大規模な Playbook に統合する前に、ロールに特化したテストを作成し、期待通りに稼働するかを確認できます。

シンプルさ

より大規模なプロジェクトや複雑なプロジェクトでは、ロールにより Ansible Playbook の使用が単純化されます。すべてのタスク、ハンドラー、テンプレートを含む大規模な Playbook ではなく、人が読みやすく理解しやすい、より簡潔な Playbook を作成できます。これにより、新しいプロジェクトで再利用するロールの特定も容易になり、自動化コンテンツの作成にかかる時間が短縮され、ワークフローが単純化されます。 

Red Hat Ansible Automation Platform 初心者向けガイド

新しいロールは、ansible-galaxy role init role_name コマンドで作成できます。これにより、標準のロールディレクトリ構造に従ったディレクトリが構築されます。ディレクトリを確認したら、タスク、デフォルト変数、その他のコンポーネントを定義することができます。ロールが機能するためには必須ではありませんが、README.md ファイルと meta/main.yml にドキュメントを追加することもできます。

新しいロールを作成するには、Ansible の高度な経験が必要になる場合があり、自動化コンテンツの構築方法をまだ習得中のチームにとっては簡単ではない可能性があります。経験豊富な自動化開発者もそうでない開発者も、コンテンツの作成を容易にするため、Red Hat® Ansible Lightspeed with IBM watsonx Code Assistant を活用できます。これは、Ansible のベストプラクティスに基づいた推奨コードを提供する生成 AI サービスです。自然言語プロンプトを使用して達成したい自動化を記述し、watsonx Code Assistant を使用して、Ansible Lightspeed からシングルタスクおよびマルチタスクのコンテンツ候補の提示を受けることができます。生成されたタスクは、Ansible Role や playbook に含めることができます。

Ansible Lightspeed with watsonx Code Assistant は、Ansible コードの作成、保守、品質向上に必要な労力を削減し、生産性の向上と導入期間の短縮を実現します。 

Ansible Role は簡単に共有することができ、メンテナンスが行き届いたテスト済みのロールを自動化に組み込むことができます。次のリポジトリを使用してロールを共有できます。

  • Ansible Galaxy - ロールやその他の Ansible コンテンツを、より大きな Ansible コミュニティと共有するための無料のリポジトリです。ロールはコマンドライン (CLI) から Ansible Galaxy にアップロードでき、コレクションは Web インタフェースから共有できます。Ansible Galaxy はコミュニティサイトであるため、コンテンツは Red Hat の精査、認定、サポートを受けていません。
  • Ansible Automation Hub - Red Hat Ansible Automation Platform サブスクリプションに含まれる Ansible Automation Hub は、Ansible Content Collections を検索、ダウンロード、共有するための中央リポジトリです。Ansible Automation Hub は Red Hat によってホストされており、Red Hat および独立系ソフトウェアベンダー (ISV) パートナーによる認定および検証済みのコンテンツが登録されています。
  • プライベート Automation Hub - プライベート Automation Hub はオンプレミスのリポジトリで、組織内だけでコンテンツの管理、共有、キュレーションを行うことができます。企業内でロールやその他の自動化コンテンツを共有できるため、チームはワークフローを単純化し、自動化を加速できます。 

Red Hat Ansible Automation Platform は、組織の自動化による加速化、オーケストレーション、イノベーションを支援するように設計された統合プラットフォームです。Red Hat サブスクリプションでは、Ansible Automation Hub で利用可能な Red Hat 認定コンテンツコレクションおよび Ansible 認定コンテンツにアクセスできます。

また、サブスクリプションに含まれる Red Hat Ansible Lightspeed with IBM watsonx Code Assistant を使うと、Ansible Role に含まれるタスクの記述と改善のプロセスが効率化され、自動化チームがコンテンツをより効率的に作成できます。Ansible Lightspeed は Visual Studio Code に完全に統合されており、自動化開発者のニーズに応え、開発者が開発環境を切り替えることなく、ベストプラクティスに沿った Ansible Role と Playbook を作成できるようにします。

Ansible Lightspeed はコンテンツソースのマッチング機能も提供しており、提供される提案に対してソーストレーニングデータを確認できるため、ユーザーのロールを作成する際により適切な判断を下すことができます。Ansible Lightspeed は、Ansible コミュニティからの何千ものロールと、Red Hat が提供するデータポイントでトレーニングされたモデルにより、正確で透明性の高い Ansible コードの作成と改善を支援し、組織の要求に応えて導入の迅速化を実現できるようにします。

関連資料

記事

Ansible の基本を学ぶ

Ansible は、プロビジョニング、構成管理などの IT プロセスを自動化します。主要な概念を含む Ansible の基本を確認できます。

記事

ビジネスプロセス管理とは

ビジネスプロセス管理 (BPM) とは、エンドツーエンドのビジネスプロセスをモデリング、分析、最適化して、戦略的な事業目標の達成を支援することです。

記事

Red Hat の自動化を選ぶ理由

Red Hat Ansible Automation Platform には、複数チームでの自動化の展開や企業全体での自動化の導入に必要なツールがすべて揃っています。

自動化の詳細はこちら

製品

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

エンタープライズ規模で自動化を実装するプラットフォーム。自動化導入のあらゆる段階に対応。

リソース

トレーニング

無料のトレーニングコース

Ansible Essentials: Simplicity in Automation Technical Overview

無料のトレーニングコース

Red Hat Ansible Automation for SAP