自動化コンテンツの開発


Red Hat Ansible Automation Platform 2.6

自動化ジョブを実行するための Ansible Automation コンテンツを開発する

Red Hat Customer Content Services

概要

このガイドでは、Ansible Automation コンテンツを開発する方法と、それを使用して Red Hat Ansible Automation Platforms から自動化ジョブを実行する方法を説明します。

はじめに

Red Hat Ansible Automation Platform に興味をお持ちいただきありがとうございます。Ansible Automation Platform は、Ansible を装備した環境に、制御、ナレッジ、委譲の機能を追加して、チームが複雑かつ複数層のデプロイメントを管理できるように支援する商用サービスです。

このガイドでは、Ansible 自動化コンテンツを開発する方法と、それを使用して Red Hat Ansible Automation Platform から自動化ジョブを実行する方法を説明します。このガイドの更新により、Ansible Automation Platform の最新リリースの情報が追加されました。

Red Hat ドキュメントへのフィードバック (英語のみ)

このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com からテクニカルサポートに連絡してリクエストを送信してください。

第1章 Ansible 開発ツール

Ansible 開発ツール (ansible-dev-tools) は、Ansible Automation Platform に付属するツールスイートです。自動化の作成者が Playbook プロジェクト、実行環境、コレクションを作成、テスト、デプロイするのに役立ちます。

Red Hat の Ansible VS Code 拡張機能には、ほとんどの Ansible 開発ツールが統合されています。これらのツールは、VS Code ユーザーインターフェイスから使用できます。

Ansible 開発ツールは、Playbook のローカル開発中、ローカルテスト中、および CI パイプライン (リンティングとテスト) で使用します。

このドキュメントでは、Ansible 開発ツールを使用して、プロジェクト内で再利用できる Playbook とロールを含む Playbook プロジェクトを作成する方法を説明します。また、Playbook をテストし、Ansible Automation Platform インスタンスにプロジェクトをデプロイして自動化ジョブで Playbook を使用できるようにする方法も説明します。

1.1. Ansible 開発ツールのコンポーネント

Ansible 拡張機能をインストールすると、一部の Ansible 開発ツールを VS Code UI から操作できます。残りの開発ツールはコマンドラインから操作できます。VS Code は、Linux、Mac、Windows で利用できる無料のオープンソースコードエディターです。

Ansible VS Code 拡張機能

これは Ansible Automation Platform RPM パッケージには含まれていませんが、自動化作成ワークフローの不可欠な構成要素です。VS Code の UI から、Ansible 開発ツールを使用して次のタスクを実行できます。

  • Playbook プロジェクトまたはコレクションのスキャフォールディングディレクトリー。
  • 構文の強調表示とオートコンプリートを利用して Playbook を作成します。
  • リンターを使用して Playbook をデバッグします。
  • ansible-playbook を使用して、Ansible Core で Playbook を実行します。
  • ansible-navigator を使用して、実行環境で Playbook を実行します。

VS Code 拡張機能から、Red Hat Ansible Lightspeed with IBM watsonx Code Assistant に接続することもできます。

コマンドライン Ansible 開発ツール

VS Code のターミナルを含め、コマンドラインから Ansible 開発ツールを使用して次のタスクを実行できます。

  • 実行環境を作成します。
  • Playbook、ロール、モジュール、プラグイン、コレクションをテストします。

第2章 自動化コンテンツ開発のワークフロー

2.1. ワークフロー

2.1.1. Create

作成段階では、VS Code を使用してローカルで新しい Playbook プロジェクトを作成します。一般的なワークフローは次のとおりです。

  1. VS Code に Ansible 拡張機能をインストールして実行します。
  2. VS Code から Playbook プロジェクトをスキャフォールディングします。
  3. プロジェクトに Playbook ファイルを追加し、VS Code で編集します。

2.1.2. テスト

  1. ansible-lint を利用して Playbook をデバッグします。
  2. ローカル環境が Ansible Automation Platform 上の環境を複製するように、自動化実行環境を選択または作成します。
  3. ansible-playbook を使用するか、実行環境で ansible-navigator を使用して、VS Code から Playbook を実行します。
  4. 実稼働環境を複製した実行環境で Playbook を実行してテストします。

2.1.3. デプロイ

  1. Playbook プロジェクトをソース管理リポジトリーにプッシュします。
  2. Ansible Automation Platform で認証情報を設定し、ソース管理リポジトリーからプルして、Playbook リポジトリーのプロジェクトを作成します。
  3. 実行環境を作成した場合は、それを Private Automation Hub にプッシュします。
  4. Ansible Automation Platform でプロジェクトから Playbook を実行するジョブテンプレートを作成し、使用する実行環境を指定します。

第3章 Ansible 開発ツールのインストール

Red Hat は、Ansible 開発ツールをインストールするための 2 つの選択肢を提供しています。

  • VS Code 内で実行されている RHEL コンテナーへのインストール。このオプションは、MacOS、Windows、Linux システムにインストールできます。
  • RPM (Red Hat Package Manager) パッケージを使用した、ローカルの RHEL 8 または RHEL 9 システムへのインストール。

    注記

    RHEL 10 では RPM インストールはサポートされていません。

3.1. 要件

Ansible 開発ツールをインストールして使用するには、次の要件を満たす必要があります。Windows インストールおよびコンテナーインストールの追加要件は、手順に記載されています。

3.1.1. Windows での Ansible 開発ツールの要件

Windows 上の VS Code のコンテナーに Ansible 開発ツールをインストールする場合は、追加の要件があります。

  • Windows Subsystem for Linux (WSL2)
  • Podman Desktop

手順

  1. ディストリビューションなしで WSL2 をインストールします。

    $ wsl --install --no-distribution
    Copy to Clipboard Toggle word wrap
  2. WSL2 の cgroupsv1 を無効にして cgroupsv2 を使用します。

    %USERPROFILE%/wsl.conf ファイルを編集し、次の行を追加して cgroupv2 の使用を強制します。

    [wsl2]
    kernelCommandLine = cgroup_no_v1="all"
    Copy to Clipboard Toggle word wrap
  3. Podman Desktop をインストールします。Podman Desktop ドキュメントの Installing Podman Desktop and Podman on Windows の手順を実行します。

    セットアップウィザードでデフォルト設定を変更する必要はありません。

  4. podman マシンが cgroupsv2 を使用していることを確認します。

    $ podman info | findstr cgroup
    Copy to Clipboard Toggle word wrap
  5. Podman デスクトップをテストします。

    $ podman run hello
    Copy to Clipboard Toggle word wrap
  6. Podman Desktop を設定します。次の内容を含む %USERPROFILE%\bin\docker.bat ファイルを追加します。

    @echo off
    podman %*
    Copy to Clipboard Toggle word wrap

    これにより、VS Code の Dev Container 拡張機能に必要な Docker をインストールする必要がなくなります。

  7. %USERPROFILE%\bin ディレクトリーを PATH に追加します。

    1. Settings を選択し、"Edit environment variables for your account" を検索して、すべてのユーザー環境変数を表示します。
    2. 上部のユーザー変数ボックスで "Path" を強調表示し、Edit をクリックしてパスを追加します。
    3. Save をクリックして、新しく開くコンソールのパスを設定します。

3.1.2. Red Hat コンテナーレジストリーでの認証

Red Hat Container Catalog を通じて利用できるすべてのコンテナーイメージは、イメージレジストリーの registry.redhat.io でホストされています。イメージにアクセスするには、レジストリーで認証が必要です。

注記

VS Code 内のコンテナーに Ansible 開発ツールをインストールする予定の場合は、VS Code を起動する前に registry.redhat.io にログインして、VS Code が registry.redhat.io から devtools コンテナーをプルできるようにする必要があります。

VS Code 内のコンテナーで Ansible 開発ツールを実行中で、実行環境または devcontainer をプルして実行環境として使用する場合は、VS Code 内のターミナルから devcontainer 内のターミナルプロンプトにログインする必要があります。

前提条件

  • registry.redhat.io レジストリーを使用するには、Red Hat ログイン情報が必要です。

    これは、Red Hat カスタマーポータル (access.redhat.com) にログインして Red Hat サブスクリプションを管理するために使用するアカウントと同じものです。

手順

  1. registry.redhat.io レジストリーにすでにログインしているかどうかを確認します。

    $ podman login --get-login registry.redhat.io
    Copy to Clipboard Toggle word wrap

    registry.redhat.io にログインしている場合は、コマンド出力に Red Hat ログイン情報が表示されます。

  2. registry.redhat.io にログインしていない場合は、podman login コマンドを使用して認証情報を指定し、レジストリーのコンテンツにアクセスします。

    $ podman login registry.redhat.io
    Username: my_redhat_username
    Password: ***********
    Copy to Clipboard Toggle word wrap

Red Hat コンテナーレジストリー認証の詳細は、Red Hat カスタマーポータルの Red Hat Container Registry Authentication を参照してください。

3.1.3. VS Code のインストール

3.1.4. VS Code Ansible 拡張機能のインストール

Ansible 拡張機能は、VS Code に Ansible の言語サポートを追加します。この拡張機能には、自動化コンテンツの作成と実行を容易にするために、Ansible 開発ツールが組み込まれています。

Ansible 拡張機能の詳細な説明は、Visual Studio Code Marketplace を参照してください。

拡張機能の操作に関するチュートリアルは、Learning path - Getting Started with the Ansible VS Code Extension を参照してください。

Ansible VS Code 拡張機能をインストールするには、次の手順に従います。

手順

  1. VS Code を開きます。
  2. アクティビティーバーの Extensions ( Extensions ) アイコンをクリックするか、ViewExtensions をクリックして Extensions ビューを表示します。
  3. Extensions ビューの検索フィールドに Ansible Red Hat と入力します。
  4. Ansible 拡張機能を選択し、Install をクリックします。

検証

ファイルの言語が Ansible として認識されると、Ansible 拡張機能によってオートコンプリート、ホバー、マウスオーバー、goto などの機能が提供されます。認識されたファイルの言語は、VS Code ウィンドウの下部にあるステータスバーに表示されます。

Ansible 言語は次のファイルに割り当てられています。

  • /playbooks ディレクトリー内の YAML ファイル
  • 二重拡張子 .ansible.yml または .ansible.yaml を持つファイル
  • Ansible が認識する特定の YAML 名 (例: site.ymlsite.yaml)
  • ファイル名に "playbook" が含まれる YAML ファイル (playbook.yml または playbook.yaml)

トラブルシューティング

拡張機能が Playbook ファイルの言語を Ansible として認識しない場合は、Ansible 言語を YAML ファイルに関連付ける の手順に従ってください。

3.1.5. Ansible 拡張機能の設定

Ansible 拡張機能は複数の設定方法をサポートしています。

拡張機能の設定は、ユーザーレベル、ワークスペースレベル、または特定のディレクトリーで設定できます。ユーザーベースの設定は、開かれている VS Code のすべてのインスタンスに対し、グローバルに適用されます。VS Code ワークスペースは、単一の VS Code ウィンドウで開くことができる 1 つ以上のフォルダーのコレクションです。ワークスペース設定はワークスペース内に保存され、現在のワークスペースを開いたときにのみ適用されます。

ワークスペースを設定すると、以下の点で便利です。

  • Playbook プロジェクトに固有の設定を定義して維持すると、他の作業の優先設定を変更することなく、個々のプロジェクトに合わせて Ansible 開発環境をカスタマイズできます。Python プロジェクト、Ansible プロジェクト、C++ プロジェクトごとに異なる設定が可能で、それぞれのスタックに合わせて最適化されているため、プロジェクトを切り替えるたびに手動で再設定する必要はありません。
  • チームと共有するプロジェクトのバージョン管理をセットアップするときにワークスペース設定を含めると、全員がそのプロジェクトに対して同じ設定を使用します。

前提条件

  • VS Code で、FileOpen Folder メニューを使用して、ワークスペースまたはフォルダーを開くか、新しいフォルダーを作成する。これは、ワークスペースの設定を保存するファイルがフォルダーまたはワークスペースに固有であるため必要です。

手順

  1. Ansible 拡張機能の設定を開きます。

    1. アクティビティーバーで、 Extensions Extensions アイコンをクリックします。
    2. Ansible 拡張機能を選択し、'歯車' アイコン、Extension Settings の順にクリックして拡張機能設定を表示します。

      • または、CodeSettingsSettings をクリックして Settings ページを開きます。
    3. 検索バーに Ansible と入力して拡張機能の設定を表示します。
  2. 現在の VS Code ワークスペースの設定を行うには、Workspace タブを選択します。

    • Workspace タブが表示されない場合は、FileOpen Folder メニューを使用してフォルダーを開くか、新しいフォルダーを作成します。
  3. Ansible 拡張機能の設定は事前に入力されています。要件に合わせて設定を変更します。

    • ansible-lint を有効にするには、AnsibleValidationLint: Enabled ボックスをオンにします。
    • 実行環境を使用するには、Ansible Execution Environment: Enabled ボックスをオンにします。
    • Ansible > Execution Environment: image フィールドで使用する実行環境イメージを指定します。
    • Red Hat Ansible Lightspeed を使用するには、Ansible > Lightspeed: Enabled ボックスをオンにし、Lightspeed の URL を入力します。

3.1.6. YAML ファイルに Ansible 言語を手動で追加する

Ansible VS Code 拡張機能は、ファイルに関連付けられた言語が Ansible に設定されている場合にのみ機能します。この拡張機能は、自動補完、マウスオーバー、診断など、Ansible Playbook の作成に役立つ機能を提供します。

Ansible VS Code 拡張機能は、Ansible 言語をファイルに自動的に関連付けます。以下の手順では、Ansible ファイルとして認識されないファイルの言語を設定する方法を説明します。

3.1.6.1. Ansible 言語を YAML ファイルに関連付ける

次の手順では、VS Code で開いている YAML ファイルに Ansible 言語を手動で割り当てる方法を説明します。

手順

  1. VS Code で YAML ファイルを開くか作成します。
  2. VS Code ウィンドウの下部にあるステータスバーに表示されている言語の上にカーソルを置き、Select Language Mode リストを開きます。
  3. リストから Ansible を選択します。

    ファイルの VS Code ウィンドウの下部にあるステータスバーに表示される言語が Ansible に変更されます。

3.1.6.2. Ansible 言語の永続的なファイル関連付けを settings.json に追加する

Ansible 言語を YAML ファイルに手動で関連付ける代わりに、settings.json ファイルに Ansible 言語のファイル関連付けを追加できます。

手順

  1. settings.json ファイルを開きます。

    1. ViewCommand Palette をクリックして、コマンドパレットを開きます。
    2. 検索ボックスに Workspace settings と入力し、Open Workspace Settings (JSON) を選択します。
  2. 次のコードを settings.json に追加します。

    {
      ...
    
      "files.associations": {
        "*plays.yml": "ansible",
        "*init.yml": "yaml",
      }
    }
    Copy to Clipboard Toggle word wrap

3.1.7. Dev Containers 拡張機能のインストールと設定

コンテナー化されたバージョンの Ansible 開発ツールをインストールする場合は、VS Code に Microsoft Dev Containers 拡張機能をインストールする必要があります。

  1. VS Code を開きます。
  2. アクティビティーバーの Extensions ( Extensions ) アイコンをクリックするか、ViewExtensions をクリックして Extensions ビューを表示します。
  3. Extensions ビューの検索フィールドに Dev Containers と入力します。
  4. Microsoft の Dev Containers 拡張機能を選択し、Install をクリックします。

コンテナー化プラットフォームとして Podman または Podman Desktop を使用する場合は、Dev Containers 拡張機能のデフォルト設定を変更する必要があります。

  1. Dev Containers 拡張設定で docker を podman に置き換えます。

    1. VS Code で設定エディターを開きます。
    2. @ext:ms-vscode-remote.remote-containers を検索します。

      または、アクティビティーバーの Extensions アイコンをクリックし、Dev Containers 拡張機能の歯車アイコンをクリックします。

  2. Dev > Containers:Docker Pathpodman に設定します。
  3. Dev > Containers:Docker Compose Pathpodman-compose に設定します。

3.2. VS Code 内のコンテナーに Ansible 開発ツールをインストールする

Dev Containers VS Code 拡張機能には、開発コンテナーの設定を保存するための .devcontainer ファイルが必要です。Ansible 拡張機能を使用して、開発コンテナー用の設定ファイルをスキャフォールディングし、VS Code のコンテナーでディレクトリーを再度開く必要があります。

前提条件

  • Podman、Podman Desktop、Docker、Docker Desktop などのコンテナー化プラットフォームをインストール済みである。
  • Red Hat ログイン情報をお持ちであり、registry.redhat.io の Red Hat レジストリーにログインしている。registry.redhat.io へのログインについては、Red Hat コンテナーレジストリーを使用した認証 を参照してください。
  • VS Code がインストールされていること。
  • VS Code に Ansible 拡張機能をインストール済みである。
  • VS Code に Microsoft Dev Containers 拡張機能をインストール済みである。
  • Windows に Ansible 開発ツールをインストールする場合は、VS Code を起動して WSL マシンに接続する。

    1. Remote ( Remote ) アイコンをクリックします。
    2. 表示されるドロップダウンメニューで、WSL マシンに接続するオプションを選択します。

手順

  1. VS Code でプロジェクトディレクトリーに移動します。
  2. VS Code アクティビティーバーの Ansible アイコンをクリックして、Ansible 拡張機能を開きます。
  3. Ansible 拡張機能の Ansible Development Tools セクションで、ADD オプションまでスクロールダウンし、Devcontainer を選択します。
  4. Create a devcontainer ページで、Container image オプションから Downstream コンテナーイメージを選択します。

    このアクションにより、Podman と Docker の両方の devcontainer.json ファイルが .devcontainer ディレクトリーに追加されます。

  5. プロジェクトディレクトリーを再度開くか、リロードします。

    • VS Code がディレクトリーに devcontainer.json ファイルが含まれていることを検出すると、以下の通知が表示されます。

      Reopen in Container をクリックします。

    • 通知が表示されない場合は、Remote ( Remote ) アイコンをクリックします。表示されるドロップダウンメニューで、Reopen in Container を選択します。
  6. 使用しているコンテナー化プラットフォームに応じて、Podman または Docker の開発コンテナーを選択します。

    VS Code ステータスバーの Remote() ステータスに opening Remote が表示され、通知にコンテナーを開く操作の進行状況が示されます。

検証

コンテナー内でディレクトリーが再度開かれると、Remote() ステータスに Dev Container: ansible-dev-container と表示されます。

注記

コンテナーのベースイメージは、パッケージマネージャーとして microdnf を使用する Universal Base Image Minimal (UBI Minimal) イメージです。dnf および yum パッケージマネージャーはコンテナーでは使用できません。

UBI Minimal イメージベースのコンテナーで microdnf を使用する方法は、Red Hat Enterprise Linux の コンテナーの構築、実行、および管理 ガイドの UBI minimal コンテナーへのソフトウェアの追加 を参照してください。

3.3. RHEL のパッケージから Ansible 開発ツールをインストールする

Ansible 開発ツールは、Ansible Automation Platform RPM (Red Hat Package Manager) パッケージにバンドルされています。Ansible Automation Platform のインストール方法は、RPM インストール ドキュメントを参照してください。

前提条件

  • RHEL 8 または RHEL 9 をインストールした。

    注記

    RHEL 10 では RPM インストールはサポートされていません。

  • Red Hat Subscription Manager でシステムを登録済みである。
  • Podman や Docker などのコンテナー化プラットフォームをインストール済みである。

手順

  1. 次のコマンドを実行して、Simple Content Access (SCA) が有効化されているか確認します。

    $ sudo subscription-manager status
    Copy to Clipboard Toggle word wrap

    Simple Content Access が有効化されている場合、出力には次のメッセージが含まれます。

    Content Access Mode is set to Simple Content Access.
    Copy to Clipboard Toggle word wrap
    1. Simple Content Access が有効化されていない場合は、Red Hat Ansible Automation Platform SKU をアタッチします。

      $ sudo subscription-manager attach --pool=<sku-pool-id>
      Copy to Clipboard Toggle word wrap
  2. 次のコマンドで Ansible 開発ツールをインストールします。

    $ sudo dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms ansible-dev-tools
    Copy to Clipboard Toggle word wrap
    $ sudo dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms ansible-dev-tools
    Copy to Clipboard Toggle word wrap

検証:

Ansible 開発ツールコンポーネントがインストールされていることを確認します。

$ rpm -aq | grep ansible
Copy to Clipboard Toggle word wrap

出力には、インストールされている Ansible パッケージが表示されます。

ansible-sign-0.1.1-2.el9ap.noarch
ansible-creator-24.4.1-1.el9ap.noarch
python3.11-ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch
ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch
ansible-builder-3.1.0-0.2.20240413.git167ed5c.el9ap.noarch
ansible-dev-environment-24.1.0-2.el9ap.noarch
ansible-core-2.16.6-0.1.20240413.gite636132.el9ap.noarch
python3.11-ansible-compat-4.1.11-2.el9ap.noarch
python3.11-pytest-ansible-24.1.2-1.el9ap.noarch
ansible-lint-6.14.3-4.el9ap.noarch
ansible-navigator-3.4.1-2.el9ap.noarch
python3.11-tox-ansible-24.2.0-1.el9ap.noarch
ansible-dev-tools-2.5-2.el9ap.noarch
Copy to Clipboard Toggle word wrap

インストールが成功すると、ansible-creator のヘルプドキュメントを表示できます。

$ ansible-creator --help

usage: ansible-creator [-h] [--version] command ...

The fastest way to generate all your ansible content.

Positional arguments:
 command
  add           Add resources to an existing Ansible project.
  init          Initialize a new Ansible project.

Options:
 --version      Print ansible-creator version and exit.
 -h     --help  Show this help message and exit
Copy to Clipboard Toggle word wrap

第4章 Playbook プロジェクトの作成

4.1. Playbook プロジェクトのスキャフォールディング

次の手順では、Ansible VS Code 拡張機能を使用して新しい Playbook プロジェクトをスキャフォールディングするプロセスを説明します。

  1. 前提条件

    • Ansible 開発ツールがインストール済みである。
    • Ansible VS Code 拡張機能がインストール済みである。
    • プロジェクトを保存するディレクトリーを特定している。

手順

  1. VS Code を開きます。
  2. VS Code アクティビティーバーの Ansible アイコンをクリックして、Ansible 拡張機能を開きます。
  3. Ansible content creator セクションで Get started を選択します。

    Ansible content creator タブが開きます。

  4. Create セクションで、Ansible playbook project をクリックします。

    Create Ansible Project タブが開きます。

  5. Create Ansible project タブのフォームに、以下を入力します。

    • Destination directory: 新しい Playbook プロジェクトをスキャフォールディングするディレクトリーへのパスを入力します。

      注記

      既存のディレクトリー名を入力すると、スキャフォールディングプロセスによってそのディレクトリーの内容が上書きされます。スキャフォールディングプロセスでは、Force オプションを有効にした場合にのみ、既存のディレクトリーを使用できます。

      • Ansible 開発ツールのコンテナー化されたバージョンを使用している場合、宛先ディレクトリーパスはコンテナーに対する相対パスであり、ローカルシステム内のパスではありません。コンテナー内の現在のディレクトリー名を確認するには、VS Code のターミナルで pwd コマンドを実行します。コンテナー内の現在のディレクトリーが workspaces の場合は、workspaces/<destination_directory_name> と入力します。
      • ローカルにインストールされたバージョンの Ansible 開発ツールを使用している場合は、ディレクトリーへのフルパスを入力します (例: /user/<username>/projects/<destination_directory_name>)
    • SCM organization and SCM project: Playbook 用に作成したロールを保存できるディレクトリーとサブディレクトリーの名前を入力します。
  6. 新しい Playbook プロジェクトをスキャフォールディングするディレクトリーの名前を入力します。

検証

プロジェクトディレクトリーが作成されると、Create Ansible Project タブの Logs ペインに、次のメッセージが表示されます。この例では、宛先ディレクトリー名は destination_directory_name です。

------------------ ansible-creator logs ------------------
    Note: ansible project created at /Users/username/test_project
Copy to Clipboard Toggle word wrap

プロジェクトディレクトリーに、次のディレクトリーとファイルが作成されます。

$ tree -a -L 5 .
├── .devcontainer
│   ├── devcontainer.json
│   ├── docker
│   │   └── devcontainer.json
│   └── podman
│       └── devcontainer.json
├── .gitignore
├── README.md
├── ansible-navigator.yml
├── ansible.cfg
├── collections
│   ├── ansible_collections
│   │   └── scm_organization_name
│   │       └── scm_project_name
│   └── requirements.yml
├── devfile.yaml
├── inventory
│   ├── group_vars
│   │   ├── all.yml
│   │   └── web_servers.yml
│   ├── host_vars
│   │   ├── server1.yml
│   │   ├── server2.yml
│   │   ├── server3.yml
│   │   ├── switch1.yml
│   │   └── switch2.yml
│   └── hosts.yml
├── linux_playbook.yml
├── network_playbook.yml
└── site.yml
Copy to Clipboard Toggle word wrap

第5章 Ansible 開発ツールを使用した Playbook の作成と実行

5.1. Playbook プロジェクト用の Ansible 設定ファイルの設定

Playbook プロジェクトをスキャフォールディングすると、Ansible 設定ファイル ansible.cfg がプロジェクトのルートディレクトリーに追加されます。

/etc/ansible/ansible.cfg にデフォルトの Ansible 設定ファイルを設定した場合は、プロジェクトで再利用する必要がある設定を、デフォルトの Ansible 設定ファイルからプロジェクトのルートディレクトリーにある ansible.cfg ファイルにコピーします。

Ansible 設定ファイルの詳細は、Ansible ドキュメントの Ansible Configuration Settings を参照してください。

5.2. 最初の Playbook の作成

VS Code で Playbook を作成および実行する際には、Ansible 開発ツールが役立ちます。

前提条件

  • Ansible VS Code 拡張機能がインストール済みである。
  • VS Code でターミナルを開いた。
  • ansible-devtools がインストール済みである。

手順

  1. VS Code で Playbook 用の新しい .yml ファイル (例: example_playbook.yml) を作成します。それを、サンプルの site.yml ファイルと同じディレクトリーレベルに配置します。
  2. 次のサンプルコードを Playbook ファイルに追加し、ファイルを保存します。Playbook は、ローカルマシンへの ping を実行する単一のプレイで構成されます。

    ---
    - name: My first play
      hosts: localhost
      tasks:
        - name: Ping my hosts
          ansible.builtin.ping:
    Copy to Clipboard Toggle word wrap

    Ansible-lint は、バックグラウンドで実行され、ターミナルの Problems タブにエラーが表示されます。この Playbook にはエラーはありません。

  3. Playbook に新しいコンテンツを追加する場合は、次のルールを使用します。

    • すべての Playbook ファイルは、空白行で終わる必要があります。
    • 行末の末尾にスペースを入れることはできません。
    • すべての Playbook とすべてのプレイには識別子 (名前) が必要です。
  4. Playbook ファイルを保存します。

5.3. Playbook の検査

Ansible VS Code 拡張機能は、インラインヘルプや構文の強調表示機能を備えており、.yml ファイル内のインデントを支援します。

  1. VS Code で Playbook を開きます。
  2. キーワードまたはモジュール名の上にマウスを移動すると、Ansible 拡張機能によってドキュメントが表示されます。

  3. モジュールの名前 (ansible.builtin.ping など) を入力し始めると、拡張機能によって候補のリストが表示されます。

    いずれかの候補を選択すると、行が自動補完されます。

5.4. Playbook のデバッグ

VS Code を使用して Playbook 内のエラーメッセージを確認して理解する方法を説明します。

  1. 次の Playbook には複数のエラーが含まれています。これをコピーして、VS Code の新しいファイルに貼り付けます。

    - name:
      hosts: localhost
      tasks:
       - name:
         ansible.builtin.ping:
    Copy to Clipboard Toggle word wrap

    エラーは VS Code で波線の下線で示されます。

  2. エラーの上にマウスをかざすと、詳細が表示されます。

  3. エラーを含む Playbook ファイルが、Explorer ペインに番号で示されます。
  4. VS Code ターミナルの Problems タブを選択して、エラーのリストを表示します。

    $[0].tasks[0].name None is not of type 'string' は、Playbook にラベルがないことを示します。

5.5. Playbook を実行する

Ansible VS Code 拡張機能を使用すると、次の 2 つの方法で Playbook を実行できます。

  • ansible-playbook により、Ansible Core を使用してローカルマシン上で Playbook を実行します。
  • ansible-navigator により、Ansible Automation Platform が自動化ジョブを実行するのと同じ方法で、Playbook を実行環境で実行します。Ansible 拡張機能の設定で、実行環境のベースイメージを指定します。

5.5.1. ansible-playbook で Playbook を実行する

手順

  • Playbook を実行するには、Explorer ペインで Playbook 名を右クリックしてから、Run Ansible Playbook viaRun playbook via ansible-playbook を選択します。

    Run playbook via ansible-playbook

出力は、VS Code ターミナルの Terminal タブに表示されます。ok=2 および failed=0 メッセージは、Playbook が正常に実行されたことを示します。

Success message for ansible-playbook execution

5.5.2. ansible-navigator で Playbook を実行する

Explorer ペインで Playbook 名を右クリックすると、ansible-navigator を使用して Ansible Playbook を実行できます。この手順では、Playbook の出力を表示し、ターミナル内で各プレイとタスクの結果を移動する方法を説明します。

前提条件

  • Ansible 拡張機能設定の Ansible Execution Environment > Enabled で、実行環境の使用を有効化した。
  • Ansible > Execution Environment: Image に実行環境イメージのパスまたは URL を入力した。

手順

  1. Playbook を実行するには、Explorer ペインで Playbook 名を右クリックしてから、Run Ansible Playbook viaRun playbook via ansible-navigator run を選択します。
  2. VS Code ターミナルの Terminal タブで出力を表示します。Successful ステータスは、Playbook が正常に実行されたことを示します。

    Output for ansible-navigator execution

  3. プレイの横にある番号を入力してプレイの結果を表示します。サンプル Playbook にはプレイが 1 つだけ含まれています。プレイで実行されたタスクのステータスを表示するには、0 を入力します。

    Tasks in ansible-navigator output

    タスクの結果を確認するには、タスクの横の番号を入力します。

5.5.3. 実行環境の操作

Red Hat が提供する自動化実行環境は、Red Hat エコシステムカタログ で確認できます。

ダウンロード方法を表示するには、実行環境をクリックします。

  1. まだログインしていない場合は、registry.redhat.io にログインします。

    注記

    VS Code 内のコンテナーで Ansible 開発ツールを実行していて、実行環境または devcontainer をプルして実行環境として使用する場合は、VS Code 内の devcontainer 内のターミナルプロンプトから registry.redhat.io にログインする必要があります。

  2. Red Hat Ecosystem Catalog の情報を使用して、必要な実行環境をダウンロードします。

    たとえば、最小 RHEL 8 ベースイメージをダウンロードするには、次のコマンドを実行します。

    $ podman pull registry.redhat.io/ansible-automation-platform-25/ee-minimal-rhel9
    Copy to Clipboard Toggle word wrap

ansible-builder を使用して、カスタム実行環境をビルドおよび作成できます。実行環境をローカルで操作する方法の詳細は、実行環境の作成と使用 を参照してください。

実行環境をカスタマイズした後に、新しいイメージを Automation Hub のコンテナーレジストリーにプッシュできます。実行環境の作成と使用 ドキュメントの 自動化実行環境の公開 を参照してください。

5.6. Playbook のテスト

プロジェクトで Playbook をテストするには、ラボセットアップや仮想マシンなどの非実稼働環境で Playbook を実行します。

Automation content navigator (ansible-navigator) は、実行環境で Ansible コンテンツを開発およびトラブルシューティングするためのテキストベースのユーザーインターフェイス (TUI) です。

ansible-navigator を使用して Playbook を実行すると詳細な出力が生成され、それを検査することで Playbook が期待どおりに実行されているか確認できます。Playbook を実行する実行環境を指定すると、Ansible Automation Platform の実稼働環境セットアップをテストで複製できます。

  • 実行環境で Playbook を実行するには、VS Code のターミナルから次のコマンドを実行します。

    $ ansible-navigator run <playbook_name.yml> -eei <execution_environment_name>
    Copy to Clipboard Toggle word wrap

    たとえば、Ansible Automation Platform RHEL 9 の最小実行環境で site.yml という Playbook を実行するには、VS Code のターミナルから次のコマンドを実行します。

    ansible-navigator run site.yml --eei ee-minimal-rhel8
    Copy to Clipboard Toggle word wrap

出力はターミナルに表示されます。結果を検査し、実行された各プレイとタスクの詳細を確認できます。

Playbook の実行の詳細は、コンテンツナビゲーターの使用 ガイドの Automation content navigator を使用した Ansible Playbook の実行 を参照してください。

第6章 Ansible Automation Platform での Playbook の公開と実行

次の手順では、新しい Playbook を Ansible Automation Platform のインスタンスにデプロイし、それを使用して自動化ジョブを実行する方法を説明します。

6.1. SCM にプロジェクトを保存する

Playbook プロジェクトを、GitHub などのソースコントロール管理システムのリポジトリーとして保存します。

手順

  1. プロジェクトディレクトリーを Git リポジトリーとして初期化します。
  2. プロジェクトを GitHub などのソース管理システムにプッシュします。

6.2. Ansible Automation Platform で Playbook を実行する

Ansible Automation Platform で Playbook を実行するには、Playbook プロジェクトを保存したリポジトリーの Automation Controller にプロジェクトを作成する必要があります。その後、プロジェクトから各 Playbook のジョブテンプレートを作成できます。

手順

  1. ブラウザーで、Automation Controller にログインします。
  2. 必要に応じて、ソース管理システムの Source Control 認証情報タイプを設定します。詳細は、自動化実行の使用新しい認証情報の作成 セクションを参照してください。https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/using_automation_execution/controller-credentials#controller-create-credential
  3. Automation Controller で、Playbook プロジェクトを保存した GitHub リポジトリーのプロジェクトを作成します。自動化実行の使用プロジェクト の章を参照してください。
  4. 作成したプロジェクトの Playbook を使用するジョブテンプレートを作成します。自動化実行の使用ジョブテンプレート の章を参照してください。
  5. ジョブテンプレートを起動することで、Automation Controller から Playbook を実行します。自動化実行の使用ジョブテンプレートの起動 セクションを参照してください。

第7章 コレクションの開発

コレクションは、Playbook、ロール、モジュール、およびプラグインなど、Ansible コンテンツのディストリビューション形式です。Red Hat は、Red Hat Ansible Certified Content と Ansible 検証済みコンテンツの両方を含む Ansible コンテンツコレクションを Ansible Automation Hub で提供しています。

Private Automation Hub をインストールした場合は、組織のコレクションを作成し、それを Private Automation Hub にプッシュして、Ansible Automation Platform のジョブテンプレートで使用できます。コレクションを使用すると、プラグインをパッケージ化して配布できます。このプラグインは Python で記述されます。

YAML で表される Ansible ロールをパッケージ化して配布するためのコレクションを作成することもできます。このロールに必要な Playbook やカスタムプラグインをコレクションに含めることもできます。通常、ロールのコレクションは、組織内で使用するために配布されます。

第8章 ロールを配布するためのコレクションの作成

Ansible ロールは、Ansible Automation コンテンツの自己完結型ユニットで、関連するタスクと関連する変数、ファイル、ハンドラー、およびその他のアセットを、特定のディレクトリー構造にグループ化したものです。

Ansible ロールは、1 つ以上のプレイで実行し、Playbook 間で再利用できます。タスクの代わりにロールを呼び出すと、Playbook が簡素化されます。既存のスタンドアロンのロールをコレクションに移行し、Private Automation Hub にプッシュして、組織内の他のユーザーと共有できます。このような形でロールを配布するのが、コレクションの一般的な使用方法です。

Ansible コレクションを使用すると、再利用可能な 1 つの自動化ユニットに複数のロールを保存して配布できます。各ロール内にカスタムプラグインを複製するのではなく、コレクション内のすべてのロール間でカスタムプラグインを共有できます。

Ansible Automation Platform でロールを使用する場合は、ロールをコレクションに移動する必要があります。

既存のスタンドアロンのロールをコレクションに追加することも、新しいロールを追加することもできます。コレクションをソースコントロールにプッシュし、Ansible Automation Platform のリポジトリー用の認証情報を設定します。

8.1. コレクションの計画

すべてのロールに対して 1 つの大きな汎用のコレクションを作成するのではなく、厳選した小さな自動化のバンドルを、特定の機能ごとに個別のコレクションにまとめてください。

たとえば、myapp という内部システムのネットワークを管理するロールは company_namespace.myapp_network コレクションに保存し、AWS でネットワークを管理およびデプロイするロールは company_namespace.aws_net というコレクションに保存することが考えられます。

8.2. 前提条件

  • VS Code と Ansible 拡張機能をインストール済みである。
  • VS Code に Microsoft Dev Containers 拡張機能をインストール済みである。
  • Ansible 開発ツールがインストール済みである。
  • Podman、Podman Desktop、Docker、Docker Desktop などのコンテナー化プラットフォームをインストール済みである。
  • Red Hat アカウントをお持ちの場合は、registry.redhat.io で Red Hat コンテナーレジストリーにログインできます。registry.redhat.io へのログインについては、Red Hat コンテナーレジストリーを使用した認証 を参照してください。

8.3. ロールのコレクションをスキャフォールディングする

VS Code の Ansible 拡張機能からロールのコレクションをスキャフォールディングできます。

手順

  1. VS Code を開きます。
  2. ロールのコレクションを作成するディレクトリーに移動します。
  3. VS Code アクティビティーバーの Ansible アイコンをクリックして、Ansible 拡張機能を開きます。
  4. Ansible content creator セクションで Get started を選択します。

    Ansible content creator タブが開きます。

  5. Create セクションで、Ansible collection project をクリックします。

    Create new Ansible project タブが開きます。

  6. Create Ansible project タブのフォームに、以下を入力します。

    • Namespace: 名前空間の名前を入力します (例: company_namespace)
    • Collection: コレクションの名前を入力します (例: myapp_network)。
    • Init path: 新しいコレクションをスキャフォールディングするディレクトリーへのパスを入力します。

      既存のディレクトリー名を入力すると、スキャフォールディングプロセスによってそのディレクトリーの内容が上書きされます。スキャフォールディングプロセスでは、Force オプションを有効にした場合にのみ、既存のディレクトリーを使用できます。

      • コンテナー化されたバージョンの Ansible 開発ツールを使用している場合、宛先ディレクトリーのパスは、コンテナーを基準とした相対パスであり、ローカルシステム内のパスではありません。コンテナー内の現在のディレクトリー名を確認するには、VS Code のターミナルで pwd コマンドを実行します。コンテナー内のカレントディレクトリーが workspaces の場合は、workspaces/<current_project>/collections と入力します。
      • ローカルにインストールされたバージョンの Ansible Dev ツールを使用している場合は、ディレクトリーへのフルパスを入力します (例: /user/<username>/path/to/<collection_directory>)。
  7. Create をクリックします。

検証

Create Ansible collection タブの Logs ペインに次のメッセージが表示されます。

--------------------- ansible-creator logs ---------------------

    Note: collection company_namespace.myapp_network created at /path/to/collections/directory
Copy to Clipboard Toggle word wrap

collections/ ディレクトリーに、次のディレクトリーとファイルが作成されます。

├── .devcontainer
├── .github
├── .gitignore
├── .isort.cfg
├── .pre-commit-config.yaml
├── .prettierignore
├── .vscode
├── CHANGELOG.rst
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING
├── LICENSE
├── MAINTAINERS
├── README.md
├── changelogs
├── devfile.yaml
├── docs
├── extensions
├── galaxy.yml
├── meta
├── plugins
├── pyproject.toml
├── requirements.txt
├── roles
├── test-requirements.txt
├── tests
└── tox-ansible.ini
Copy to Clipboard Toggle word wrap

8.4. 既存のロールをコレクションに移行する

スタンドアロンロールのディレクトリーの構造は次のとおりです。実際のロールには、これらのディレクトリーがすべて含まれていない場合があります。

my_role
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml
Copy to Clipboard Toggle word wrap

Ansible ロールには、特定のディレクトリー構造があり、7 つの主な標準ディレクトリーがあります。これらのディレクトリーが、各ロールに 1 つ以上含まれている必要があります。ロールが使用しないディレクトリーは省略できます。各ディレクトリーには main.yml ファイルが含まれています。

手順

  1. 必要に応じて、ロールを含むディレクトリーの名前を、その中身に合わせて変更します (例: acl_configtacacs)。

    コレクション内のロールの名前にハイフンを含めることはできません。代わりにアンダースコア文字 (_) を使用してください。

  2. スタンドアロンロールの roles ディレクトリーを、コレクション内の roles/ ディレクトリーにコピーします。

    たとえば、myapp_network というコレクションの場合は、myapp_network/roles/ ディレクトリーにロールを追加します。

  3. スタンドアロンロールのすべてのプラグインを、新しいコレクションの plugins directory/ にコピーします。コレクションのディレクトリー構造は次のようになります。

    company_namespace
    └── myapp_network
        ├── ...
        ├── galaxy.yml
        ├── docs
        ├── extensions
        ├── meta
        ├── plugins
        ├── roles
        │   ├── acl_config
        │   │   ├── README.md
        │   │   ├── defaults
        │   │   ├── files
        │   │   ├── handlers
        │   │   ├── meta
        │   │   ├── tasks
        │   │   ├── templates
        │   │   ├── tests
        │   │   └── vars
        │   └── tacacs
        │       ├── README.md
        │       ├── default
        │       ├── files
        │       ├── handlers
        │       ├── meta
        │       ├── tasks
        │       ├── templates
        │       ├── tests
        │       └── vars
        │   ├── run
        ├── ...
        ├── tests
        └── vars
    Copy to Clipboard Toggle word wrap

    run ロールは、コレクションをスキャフォールディングするときに作成されるデフォルトのロールディレクトリーです。

  4. コレクション内の新しいロールの完全修飾コレクション名 (FQCN) を使用するように Playbook を更新します。

    注記

    すべてのスタンドアロンロールが、コードの変更なしで、コレクションにシームレスに統合されるわけではありません。たとえば、プラグインを含む Galaxy のサードパーティーのスタンドアロンロールが module_utils/ ディレクトリーを使用する場合、そのプラグイン自体にインポートステートメントを追加します。

8.5. コレクションに新しいロールを作成する

手順

  1. 新しいロールを作成するには、コレクションを作成したときにスキャフォールディングされたデフォルトの run ロールディレクトリーをコピーします。
  2. ロールが実行する必要があるタスクを、tasks/main.yml ファイルで定義します。既存の Playbook 内のタスクを再利用するためのロールを作成する場合は、Playbook YAML ファイルの tasks ブロック内の内容をコピーします。tasks の左側の空白を削除します。VS Code で ansible-lint を使用して YAML コードをチェックします。
  3. ロールが別のロールに依存している場合は、meta/main.yml ファイルに依存関係を追加します。

8.6. ロールコレクションのドキュメントを追加する

他のユーザーがロールの機能とその使用方法を理解できるように、ロールとロールコレクションに関するドキュメントを提供することが重要です。

  1. ロールのドキュメントを追加するために、ロールディレクトリーに移動します。
  2. README.md ファイルをエディターで開きます。このファイルは、コレクションのディレクトリーをスキャフォールディングしたときに、ロールディレクトリーに追加されたものです。
  3. コレクション内の各ロールの README.md ファイルに、次の情報を記載します。

    • ロールの説明: ロールの機能の簡単な概要
    • 要件: コレクション、ライブラリー、および必要なインストールのリスト
    • 依存関係
    • ロール変数: ロールが使用する変数に関する次の情報を記載します。

      • 説明
      • デフォルト
      • 値の例
      • 必須の変数
    • Playbook の例: ロールを使用する Playbook の例を示します。Playbook 内のコメントを使用して、ユーザーが変数を設定する箇所がわかるようにします。

      controller_configuration.ad_hoc_command_cancelREADME.md ファイルは、標準ドキュメントを含むロールの例です。

  4. ロールコレクションのドキュメントを追加するために、コレクションのディレクトリーに移動します。
  5. コレクションの README.md ファイルに次の情報を記載します。

    • コレクションの説明: コレクションの機能を説明します。
    • 要件: 必要なコレクションのリストを記載します。
    • コレクションのコンポーネントであるロールのリストを記載します。
    • コレクションの使用: コレクションのコンポーネントを実行する方法を説明します。
    • トラブルシューティングのセクションを追加します。
    • バージョン管理: コレクションのリリースサイクルを説明します。

8.7. Private Automation Hub でコレクションを公開する

  1. 前提条件

    • コレクションを tarball にパッケージ化します。コレクションのファイル名の形式は次のとおりです。

<my_namespace-my_collection-x.y.z.tar.gz>

例: company_namespace-myapp_network-2.0.0.tar.gz

手順

  1. Private Automation Hub でコレクションの名前空間を作成します。自動化コンテンツの管理 ガイドの 名前空間の作成 を参照してください。
  2. オプション: 名前空間に情報を追加します。自動化コンテンツの管理 ガイドの 名前空間への情報およびリソースの追加 を参照してください。
  3. ロールコレクションの tarball を名前空間にアップロードします。自動化コンテンツの管理 ガイドの 名前空間へのコレクションのアップロード を参照してください。
  4. コレクションを内部公開のために承認します。自動化コンテンツの管理 ガイドの 名前空間へのコレクションのアップロード を参照してください。

8.7.1. Red Hat Ansible Automation Platform のプロジェクトでコレクションを使用する

Automation Controller でコレクションを使用するには、コレクションを実行環境に追加し、Private Automation Hub にプッシュする必要があります。

次の手順では、実行環境にコレクションを追加するワークフローを説明します。これらの手順を実行するコマンドは、実行環境の作成と使用 ガイドの 既存の自動化実行環境イメージのカスタマイズ を参照してください。

  1. Automation Hub から実行環境のベースイメージをプルすることも、独自のカスタム実行環境にコレクションを追加することもできます。
  2. 実行環境に含めるコレクションを追加します。
  3. 新しい実行環境をビルドします。
  4. コレクションが実行環境に含まれていることを確認します。
  5. イメージにタグを付けて、Private Automation Hub にプッシュします。
  6. 新しいイメージを Automation Controller インスタンスにプルします。
  7. コレクション内のロールを使用する Playbook で、ロールの完全修飾ドメイン名 (FQDN) を使用する必要があります。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat