Automation Controller API の概要


Red Hat Ansible Automation Platform 2.4

Automation Controller API の開発者向けの概要

Red Hat Customer Content Services

概要

効率化された自動化ソリューションに関する Automation Controller API の概要を確認してください。開発者および管理者がインフラストラクチャー管理を効率化できるようにします。

はじめに

Red Hat Ansible Automation Platform に興味をお持ちいただきありがとうございます。Ansible Automation Platform は、Ansible を利用した環境に制御、ナレッジ、および委譲の機能を追加することにより、複数層からなる複雑なデプロイメントをチームが管理するのに役立ちます。

Automation Controller API の概要では、Automation Controller API の理解を支援することに重点を置いています。

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

このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com から Technical Support チームに連絡してください。

第1章 API で利用できるツール

Representational State Transfer (REST) は、ステートレスでクライアントサーバー型のキャッシュ可能な通信プロトコル (通常は HTTP プロトコル) に依存します。

ユーザーインターフェイスがどの API 呼び出しを順番に行うかを確認すると役立つ場合があります。これを行うには、開発者プラグインを備えた Firebug または Chrome の UI を使用できます。

もう 1 つのオプションとして、Charles Proxy を使用します。便利なビジュアライザーが含まれています。これは商用ソフトウェアですが、オペレーティングシステムの X プロキシーとして挿入され、Web ブラウザー、curl、およびその他の API コンシューマーからのリクエストをインターセプトできます。

その他のオプションには以下が含まれます。

第2章 API を使用した参照

REST API は、URI パスを通じてリソース (データエンティティー) へのアクセスを提供します。

手順

  1. Web ブラウザーで次の Automation Controller REST API にアクセスします。

    https://<server name>/api/controller/v2

  2. "current versions" または "available versions" の横にある "v2" リンクをクリックします。Automation Controller は、API のバージョン 2 をサポートします。
  3. /api/ エンドポイントのみで GET を実行し、推奨バージョンである current_version を取得します。
  4. ナビゲーションメニューの Copy アイコンをクリックして、その特定の API エンドポイントのアクセス方法や、これらのメソッドの使用時に返されるデータについてのドキュメントを参照してください。
  5. 特定の API ページでテキストフィールドを JSON 形式にフォーマットすると、PUT および POST 動詞を使用することもできます。

/api/v2/settings/changed/ エンドポイントで、工場出荷時のデフォルトから変更された設定を確認することもできます。これは、静的な設定ファイルでの変更ではなく、API ブラウザーで加えられた変更を反映します。

第3章 API の使用規則

Automation Controller は、サーバー上の /api/ をルートとする標準の REST API を使用します。

互換性の理由から、API はバージョン管理されています。/api/ をクエリーすると、利用可能な API バージョンを確認できます。

POST または PUT 要求でコンテンツまたはタイプを指定する必要がある場合があります。

  • PUT: 特定のリソース (識別子によって) またはリソースのコレクションを更新します。事前にリソース識別子がわかっている場合は、PUT を使用して特定のリソースを作成することもできます。
  • POST: 新しいリソースを作成します。また、他のカテゴリーに該当しない演算用の汎用動詞としても機能します。

"/" で終わらない URI はすべて 301 リダイレクトを返します。

注記

ジョブテンプレートレコードに割り当てられる extra_vars のフォーマットが保持されます。YAML は YAML として返され、フォーマットとコメントが保持され、JSON は JSON として返されます。

第4章 API でのソート

わかりやすい例を示すために、このガイド全体で次の URL を使用します。

https://<server name>/api/v2/groups/
Copy to Clipboard Toggle word wrap

手順

  • 特定の順番で {{ model_verbose_name_plural }} が返されることを指定するには、order_by クエリー文字列のパラメーターを GET リクエストで使用します。

    https://<server name>/api/v2/model_verbose_name_plural?order_by={{ order_field }}
    Copy to Clipboard Toggle word wrap
    • 逆の順序に並び替えるには、フィールド名の前にダッシュ (-) を加えます。

      https://<server name>/api/v2/model_verbose_name_plural?order_by=-{{ order_field }}
      Copy to Clipboard Toggle word wrap
    • フィールド名をコンマ (,) で区切って並べ替えフィールドを指定できます。

      https://<server name>/api/v2/model_verbose_name_plural?order_by={{ order_field }},some_other_field
      Copy to Clipboard Toggle word wrap

第6章 API でのフィルタリング

システムはコレクションを "queryset" として認識します。さまざまな Operator を使用してこれをフィルタリングできます。

手順

  • "foo" という名前を含むグループを検索するには、以下を使用します。

    http://<controller server name>/api/v2/groups/?name__contains=foo
    Copy to Clipboard Toggle word wrap
  • 完全一致を検索するには、次を使用します。

    http://<controller server name>/api/v2/groups/?name=foo
    Copy to Clipboard Toggle word wrap
  • リソースが整数型の場合、次のように、文字列入力値を整数にキャストするには、末尾に \_\_int を追加する必要があります。

    http://<controller server name>/api/v2/arbitrary_resource/?x__int=5
    Copy to Clipboard Toggle word wrap
  • 以下を使用して、関連リソースをクエリーできます。

    http://<controller server name>/api/v2/users/?first_name__icontains=kim
    Copy to Clipboard Toggle word wrap

    これは、名前に文字列 "Kim" が含まれるすべてのユーザーを返します。

  • 一度に複数のフィールドをフィルタリングすることもできます。

    http://<controller server name>/api/v2/groups/?name__icontains=test&has_active_failures=false
    Copy to Clipboard Toggle word wrap

    この場合は、名前に "test" が含まれており、現在障害が発生していないグループがすべて返されます。

関連情報

使用可能な Operator の種類の詳細は、QuerySet API リファレンス を参照してください。

注記

UI を使って各基準に対してフィルタリングを実行している際に、API を確認することもできます。

6.1. API の高度なクエリー

返される結果のリストを、指定された値に一致するアイテムだけに絞り込むために使用される追加のクエリー文字列パラメーターを使用できます。フィルタリングには、データベース内に存在するフィールドとリレーションのみを使用できます。指定された値の特殊文字が URL でエンコードされていることを確認します。以下に例を示します。

?field=value%20xyz
Copy to Clipboard Toggle word wrap

フィールドは関係にまで及ぶ可能性がありますが、その場合はデータベースで定義されたフィールドと関係に限定されます。

?other__field=value
Copy to Clipboard Toggle word wrap

特定の基準に一致する結果を除外するには、フィールドパラメーターの前に not__ を追加します。

?not__field=value
Copy to Clipboard Toggle word wrap

デフォルトでは、すべてのクエリー文字列フィルターは AND 演算されるため、すべてのフィルターに一致する結果のみが返されます。複数の条件のいずれかに一致する結果をまとめるには、各クエリー文字列パラメーターの前に or__ を付けます。

?or__field=value&or__field=othervalue
?or__not__field=value&or__field=othervalue
Copy to Clipboard Toggle word wrap

デフォルトの AND フィルタリングでは、データベースリレーションシップ全体でフィルタリングされる各関連オブジェクトにすべてのフィルターが同時に適用されます。チェーンフィルターは、代わりに関連するオブジェクトごとにフィルターを個別に適用します。これを使用するには、クエリー文字列パラメーターの前に chain__ を付けます。

?chain__related__field=value&chain__related__field2=othervalue
?chain__not__related__field=value&chain__related__field2=othervalue
Copy to Clipboard Toggle word wrap

最初のクエリーを ?relatedfield=value&relatedfield2=othervalue と記述すると、同じ関連オブジェクトが両方の条件を満たしたプライマリーオブジェクトのみが返されます。チェーンフィルターを使用して記述すると、各条件に一致するプライマリーオブジェクトが交差している内容が返されます。

6.2. フィールドの検索

フィールド名にルックアップを追加することで、より高度なクエリーにフィールドルックアップを使用できます。

?field__lookup=value
Copy to Clipboard Toggle word wrap

以下のフィールドのルックアップがサポートされています。

  • exact: 完全一致 (指定されていない場合はデフォルトで検索されます。詳細は以下の注記を参照してください)。
  • iexact: exact の大文字と小文字を区別しないバージョン。
  • contains: フィールドに値を含む。
  • icontains: 大文字小文字の区別のない contains。
  • startswith: 値で始まるフィールド。
  • istartswith: startswith で大文字小文字の区別なし。
  • endswith: 値で終わるフィールド。
  • iendswith: 大文字小文字の区別のない endswith。
  • regex: 特定の正規表現に一致するフィールド。
  • iregex: 正規表現の大文字と小文字を区別しないバージョン。
  • gt: Greater than の比較条件。
  • gte: Greater than or equal to の比較条件。
  • lt: Less than の比較条件。
  • lte: Less than or equal to の比較条件。
  • isnull: 特定フィールドもしくは関連オブジェクトが null かどうかをチェック。ブール値を想定。
  • in: 特定フィールドの値が提供されたリストに存在するかどうかをチェック。アイテムのリストを想定。
  • ブール値は、True の場合は True または 1、False の場合は False または 0 として指定できます (どちらも大文字と小文字は区別されません)。

たとえば、?created__gte=2023-01-01 は、1/1/2023 以降で作成されたアイテムのリストを提供します。

null 値は None または Null (どちらも大文字と小文字は区別されません) として指定できますが、isnull ルックアップを使用して null 値を明示的にチェックすることを推奨します。

リスト (in ルックアップ用) を、コンマで区切られた値のリストとして指定できます。クエリー文字列のパラメーターによるユーザーのアクセスレベルの要求をもとにしたフィルタリング。

  • role_level: フィルタリングするロールのレベル (admin_role など)
注記

Ansible Automation Platform の以前のリリースでは、デフォルトで _exact の結果を含むクエリーが返されました。回避策として、デフォルトフィルターの limit?limit_exact に設定します。たとえば、/api/v2/jobs/?limit_exact=example.domain.com は以下のようになります。

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
...
Copy to Clipboard Toggle word wrap

第7章 API でのページネーションの使用

API はコレクションの応答をページ分割します。つまり、コレクションには数万から数十万のオブジェクトが含まれる可能性がありますが、API パフォーマンス上の理由から、各 Web リクエストでは限られた数の結果のみが返されます。

コレクションの結果を受け取ると、次のような内容が表示されます。

{'count': 25, 'next': 'http://testserver/api/v2/some_resource?page=2', 'previous': None, 'results': [ ... ] }
Copy to Clipboard Toggle word wrap

手順

  1. "next" が含まれる連続した URL で指定されているページを要求して、次のページに移動します。
  2. 各リクエストで返される結果の数を変更するには、page_size=XX クエリー文字列パラメーターを使用します。

    • page_size にはデフォルトの上限 200 があります。これは、ユーザーが上限を超える値 (?page_size=1000 など) を試行したときに適用されます。ただし、/etc/tower/conf.d/<some file>.py の値をより高い値に設定することで、この制限を変更できます。たとえば、MAX_PAGE_SIZE=1000 です。
  3. 特定のページの結果を取得するには、page クエリー文字列パラメーターを使用します。

    http://<server name>/api/v2/model_verbose_name?page_size=100&page=2
    Copy to Clipboard Toggle word wrap

結果とともに返される前後のリンクは、これらのクエリー文字列パラメーターを自動的に設定します。

200 を超えるページサイズを要求しないでください。

ユーザーインターフェイスでは、スクロールを回避するために小さい値が使用されます。

第8章 リソースへのアクセス

Automation Controller はプライマリーキーを使用して個々のリソースオブジェクトにアクセスします。名前付き URL 機能を通じて、リソース固有で、人間が判読できる識別子を使用して、Automation Controller リソースにアクセスできます。

次の例は、補助クエリー文字列なしでリソースオブジェクトにアクセスできる名前付き URL パスを示しています。

/api/v2/hosts/host_name++inv_name++org_name/
Copy to Clipboard Toggle word wrap

8.1. 設定オプション

/api/v2/settings/named-url/: NAMED_URL_FORMATS および NAMED_URL_GRAPH_NODES という 2 つの名前付き URL 関連の設定があります。

NAMED_URL_FORMATS は、使用可能なすべての名前付き URL 識別子形式の読み取り専用のキーと値のペアのリストです。以下は NAMED_URL_FORMATS の例になります。

"NAMED_URL_FORMATS": {
"organizations": "<name>",
"teams": "<name>++<organization.name>",
"credential_types": "<name>+<kind>",
"credentials": "<name>++<credential_type.name>+<credential_type.kind>++<organization.name>",
"notification_templates": "<name>++<organization.name>",
"job_templates": "<name>++<organization.name>",
"projects": "<name>++<organization.name>",
"inventories": "<name>++<organization.name>",
"hosts": "<name>++<inventory.name>++<organization.name>",
"groups": "<name>++<inventory.name>++<organization.name>",
"inventory_sources": "<name>++<inventory.name>++<organization.name>",
"inventory_scripts": "<name>++<organization.name>",
"instance_groups": "<name>",
"labels": "<name>++<organization.name>",
"workflow_job_templates": "<name>++<organization.name>",
"workflow_job_template_nodes": "<identifier>++<workflow_job_template.name>++<organization.name>",
"applications": "<name>++<organization.name>",
"users": "<username>",
"instances": "<hostname>"
}
Copy to Clipboard Toggle word wrap

NAMED_URL_FORMATS の各項目のキーは、名前付き URL を持つリソースの API 名です。値は、人間が判読できる、そのリソースの一意識別子を形成する方法を示す文字列です。NAMED_URL_FORMATS には、名前付き URL を持つことができるリソースのみがリストされ、そこにリストされていないリソースには名前付き URL はありません。リソースに名前付き URL を設定できる場合、そのオブジェクトには、オブジェクト固有の名前付き URL を表す named_url フィールドが必要です。このフィールドはリストビューではなく詳細ビューでのみ表示されます。正確に生成された名前付き URL を使用して、指定されたリソースオブジェクトにアクセスできます。これはオブジェクトとそれに関連する URL です。たとえば、/api/v2/res_name/obj_slug/ が有効な場合、/api/v2/res_name/obj_slug/related_res_name/ も有効です。

NAMED_URL_FORMATS は、人間が判読できる一意の識別子と名前付き URL 自体を作成するのに十分な情報を提供します。使いやすさを考慮して、名前付き URL を指定できるリソースのオブジェクトにはすべて、そのオブジェクトの名前付き URL を表示する関連フィールド named_url があります。そのフィールドをコピーして貼り付け、独自のカスタム用途に使用できます。詳細は、リソースオブジェクトに名前付き URL がある場合、API ブラウザーのヘルプテキストを参照してください。

名前付き URL ラベル (ID 5 など) を手動で決定できます。NAMED_URL_FORMATS を使用してこの特定のリソースオブジェクトの名前付き URL を作成するには、まず NAMED_URL_FORMATS の labels フィールドを参照して、識別子形式 <name>++<organization.name> を取得します。

  • URL 形式の最初の部分は <name> です。つまり、ラベルリソースの詳細が /api/v2/labels/5/ にあり、返された JSON で name フィールドを探すことができます。名前 フィールドの値が Foo の場合、一意の識別子の最初の部分は Foo になります。
  • 形式の 2 番目の部分は二重プラス記号 ++ です。これは、一意の識別子の異なる部分を分ける区切り文字です。これらを一意の識別子に追加すると、Foo++ が得られます。
  • 形式の 3 番目の部分は <organization.name> です。これは、フィールドが調査中の現在のラベルオブジェクト内ではなく、ラベルオブジェクトが指す組織内にあることを示します。形式が示すように、現在返されている JSON の関連フィールドで組織を検索します。そのフィールドは存在しない可能性があります。存在する場合は、そのフィールドに指定された URL (例: /api/v2/organizations/3/) に従って特定の組織の詳細を取得し、その名前フィールド (例: "Default") を抽出して、現在の一意の識別子に追加します。<organizations.name> は、形式の最後の部分なので、/api/v2/labels/Foo++Default/ のように、名前付き URL が生成されます。

    ラベルオブジェクトの詳細の関連フィールドに組織が存在しない場合は、代わりに空の文字列を追加します。これにより現在の識別子は変更されません。したがって、Foo++ が最終的な一意の識別子になり、結果として生成される名前付き URL は /api/v2/labels/Foo++/ になります。

名前付き URL の一意の識別子を生成する際の重要な側面は、予約文字に関係しています。識別子は URL の一部であるため、;/?:@=&[] などの、URL 標準による予約文字はパーセント記号でエンコードされます。たとえば、組織の名前が ;/?:@=&[] の場合、その一意の識別子は %3B%2F%3F%3A%40%3D%26%5B%5D になります。もう 1 つの特別な予約文字は + です。これは URL 標準では予約されていませんが、名前付き URL によって識別子のさまざまな部分をリンクするために使用されます。[+] でエンコードされます。たとえば、組織名が [+] の場合、その一意の識別子は %5B[+]%5D になります。ここで、元の [] はパーセントにエンコードされ、+[+] に変換されます。

NAMED_URL_FORMATS は、手動で変更できませんが、変更は自動的に行われ、時間の経過とともに拡張され、基礎となるリソースの変更と拡張を反映します。名前付き URL 機能を使用する同じクラスターの NAMED_URL_FORMATS を参照してください。

NAMED_URL_GRAPH_NODES は、キーと値のペアのもう 1 つの読み取り専用リスト、名前付き URL を管理するために使用される内部グラフデータ構造を公開します。これは人間が読める形式ではありませんが、プログラムで名前付き URL を生成するために使用する必要があります。任意のリソースオブジェクトのプライマリーキーに NAMED_URL_GRAPH_NODES の情報を使用して、名前付きの URL を指定できる場合の、名前付き URL を生成するスクリプトのサンプルは、GitHub にあります。

8.2. 識別子フォーマットのプロトコル

リソースは、リソースフィールドのタプルである一意のキーによって識別できます。すべてのリソースには、一意のキーとしてプライマリーキー番号のみがあることが保証されていますが、他にも一意のキーが多数存在する場合があります。リソースは、次のルールを満たす一意のキーが少なくとも 1 つある場合に、識別子形式を生成し、名前付き URL を指定できます。

  1. キーには、name フィールド、または (認証タイプリソースの kind フィールドのように) 有限数の選択肢のあるテキストフィールドのいずれかのみが含まれる。
  2. これまでのルールに違反しているが、唯一許可されている例外フィールドは、自身以外のリソースに関連する、多対一の関連フィールドです。これにもスラグが許可されています。

リソース FooBar がある場合、FooBar の両方に、名前フィールドと、値が "yes" または "no".のみになる選択フィールドが含まれます。さらに、リソース Foo には、Bar に関連する多対 1 フィールド (外部キー) (例: fk) があります。Foo には一意のキータプル (namechoicefk) があり、Bar には一意のキータプル (namechoice) があります。Bar は、前述の最初のルールを満たしているため、名前付き URL を指定できます。Foo は、最初のルールに違反しているにもかかわらず、名前付き URL を指定できます。ルール 1 に違反する追加フィールドは、Bar と多対一の関係にある fk フィールドであり、Bar は 名前付き URL を指定できます。

ルール 1 を満たすリソースの場合、人間が判読できる一意の識別子は、+ で区切られた外部キーフィールドの組み合わせになります。具体的には、前述の例のリソース Bar のスラグ形式は <name>+<choice> です。スラグ形式ではフィールドの順序が重要であり、name フィールドが存在する場合は常に最初に表示され、その後に残りのフィールドがフィールド名の辞書順に配置されることに注意してください。たとえば、Bar にルール 1 を満たす a_choice フィールドもあり、一意のキーが namechoicea_choice になる場合、そのスラグの形式は <name><a_choice><choice> になります。

ルール 2 を満たすリソースの場合、追加の外部キーフィールドを遡って追跡すると、その結果はそのリソースのオブジェクトを識別するリソースツリーになります。識別子形式を生成するために、トレースバックツリー内の各リソースは、外部キー以外のすべてのフィールドを使用して、スタンドアロン形式の独自の部分を生成します。最後に、すべての部分が次の順序で ++ で結合されます。

  • 最初の識別子部分にスタンドアロン形式を配置します。
  • リソースにごとに一意の識別子を再帰的に生成します。基礎となるリソースは、外部キー (トレースバックツリーノードの子) を使用して参照します。
  • 生成された一意の識別子を残りの識別子コンポーネントとして扱います。対応する外部キーを辞書順に並べ替えます。
  • ++ を使用してすべてのコンポーネントを結合し、最終的な識別子形式を生成します。

Foo リソースの識別子形式を生成する場合、Automation Controller がスタンドアロン形式 (Foo の場合は <name>+<choice>Bar の場合は <fk.name>+<fk.choice>) を生成し、それらを結合して <name><choice>+<fk.name>+<fk.choice> にします。

指定された識別子形式に従って識別子を生成する場合、外部キーがどこも参照していない場合があります。この場合、Automation Controller は、外部キーが指すリソースに対応する形式の部分を空の文字列に置き換えます。たとえば、Foo オブジェクトが name ="alice"choice ="yes"," であるが、fk field = None の場合、結果の識別子は alice+yes++ になります。

第9章 読み取り専用フィールド

REST API の特定のフィールドは読み取り専用とマークされています。

これらには通常、リソースの URL、ID、場合によってはいくつかの内部フィールドが含まれます。たとえば、各オブジェクトの 'created\_by' 属性は、どのユーザーがリソースを作成したかを示しますが、編集はできません。値を記載してもこれが変更されない場合は、フィールドが読み取り専用である可能性があります。

第10章 API での認証

API では以下の認証方法を使用できます。

Automation Controller は、組織がすぐに使用できる視覚的なダッシュボードを使用して自動化を一元管理し、より深いレベルで、他のツールと統合するための REST API を提供するように設計されています。Automation Controller は、Automation Controller を既存のツールやプロセスに簡単に組み込むことができるように、いくつかの認証方法をサポートしています。これにより、適切なユーザーがリソースにアクセスできるようになります。

10.1. セッション認証の使用

Automation Controller の API または UI に直接ログインするときにセッション認証を使用して、インベントリー、プロジェクト、ジョブテンプレートなどのリソースを手動で作成し、ブラウザーでジョブを開始できます。この方法を使用すると、その HTTP リクエストの間だけでなく、長時間ログインしたままにすることができます。たとえば、Chrome や Mozilla Firefox などのブラウザーで API または UI を参照する場合などです。ユーザーがログインすると、セッションクッキーが作成されます。つまり、Automation Controller 内の別のページに移動しても、ログインしたままにすることができます。次の図は、セッション中にクライアントとサーバーの間で行われる通信を表しています。

curl ツールを使用して、Automation Controller にログインしたときに発生するアクティビティーを確認します。

手順

  1. GET を 使用して /api/login/ エンドポイントに移動し、csrftoken Cookie を取得します。

    curl -k -c - https://<controller-host>/api/login/
    
    localhost       FALSE   /       FALSE   0   csrftoken
    AswSFn5p1qQvaX4KoRZN6A5yer0Pq0VG2cXMTzZnzuhaY0L4tiidYqwf5PXZckuj
    Copy to Clipboard Toggle word wrap
  2. ユーザー名、パスワード、X-CSRFToken=<token-value> を使用して /api/login/ エンドポイントに POST を送信します。

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    --referer https://<awx-host>/api/login/ \
    -H 'X-CSRFToken: K580zVVm0rWX8pmNylz5ygTPamgUJxifrdJY0UDtMMoOis5Q1UOxRmV9918BUBIN' \
    --data 'username=root&password=reverse' \
    --cookie 'csrftoken=K580zVVm0rWX8pmNylz5ygTPamgUJxifrdJY0UDtMMoOis5Q1UOxRmV9918BUBIN' \
    https://<awx-host>/api/login/ -k -D - -o /dev/null
    Copy to Clipboard Toggle word wrap

これらはすべて、ブラウザーで UI または API にログインするときに Automation Controller によって実行され、ブラウザーで認証するときにのみ使用する必要があります。Automation Controller とのプログラムによる統合については、OAuth2 トークン認証 を参照してください。

一般的な応答の例を以下に示します。

Server: nginx
Date: <current date>
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Location: /accounts/profile/
X-API-Session-Cookie-Name: awx_sessionid
Expires: <date>
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
Vary: Cookie, Accept-Language, Origin
Session-Timeout: 1800
Content-Language: en
X-API-Total-Time: 0.377s
X-API-Request-Id: 700826696425433fb0c8807cd40c00a0
Access-Control-Expose-Headers: X-API-Request-Id
Set-Cookie: userLoggedIn=true; Path=/
Set-Cookie: current_user=<user cookie data>; Path=/
Set-Cookie: csrftoken=<csrftoken>; Path=/; SameSite=Lax
Set-Cookie: awx_sessionid=<your session id>; expires=<date>; HttpOnly; Max-Age=1800; Path=/; SameSite=Lax
Strict-Transport-Security: max-age=15768000
Copy to Clipboard Toggle word wrap

この方法でユーザーが正常に認証されると、サーバーはセッションクッキーの設定名を示す X-API-Session-Cookie-Name というヘッダーで応答します。デフォルト値は awx_session_id で、後で Set-Cookie ヘッダーで確認できます。

注記

SESSION_COOKIE_AGE パラメーターで指定することで、セッションの有効期限を変更できます。詳細は、セッション制限の使用 を参照してください。

10.2. Basic 認証

Basic 認証はステートレスであるため、Authorization ヘッダーを介して各リクエストとともに、base64 でエンコードされたユーザー名とパスワードを送信する必要があります。これは、curl リクエスト、Python スクリプト、または API への個々のリクエストからの API 呼び出しに使用できます。可能な限り、API へのアクセスには OAuth 2 トークン認証を使用することを推奨します。

以下は、curl を使用した Basic 認証の例です。

# the --user flag adds this Authorization header for us
curl -X GET --user 'user:password' https://<controller-host>/api/v2/credentials -k -L
Copy to Clipboard Toggle word wrap

関連情報

Basic 認証の詳細は、 'Basic' HTTP 認証スキーム を参照してください。

Basic 認証の無効化

セキュリティー上の理由から、Basic 認証を無効にすることができます。

手順

  1. ナビゲーションパネルから Settings を選択します。
  2. System オプションのリストから Miscellaneous Authentication settings を選択します。
  3. Enable HTTP Basic Auth のオプションを無効にします。

10.3. OAuth2 トークン認証

OAuth (Open Authorization) は、トークンベースの認証と承認のオープンスタンダードです。OAuth 2 認証は、Automation Controller API とプログラムでやり取りするときによく使用されます。Basic 認証と同様に、Authorization ヘッダーを通じて各 API リクエストに OAuth 2 トークンが付与されます。Basic 認証とは異なり、OAuth 2 トークンには設定可能なタイムアウトがあり、スコープ設定可能です。トークンには有効期限が設定されており、必要に応じて管理者が 1 ユーザーまたは Automation Controller システム全体に対して、トークンを簡単に取り消すことができます。これは、revoke_oauth2_tokens 管理コマンドを使用するか、アクセストークンの取り消し で説明されている API を使用して実行できます。

Automation Controller で OAuth2 アクセストークンを取得するためのさまざまな方法は次のとおりです。

  • パーソナルアクセストークン (PAT)
  • アプリケーショントークン: パスワード付与タイプ
  • アプリケーショントークン: 暗黙の付与タイプ
  • アプリケーショントークン: 認証コード付与タイプ

ユーザーは、API または Automation Controller UI の Users > Tokens タブで OAuth 2 トークンを作成する必要があります。UI を介したトークンの作成に関する詳細は、Users - Tokens を参照してください。

この例では、API でトークンを作成するために PAT メソッドを使用します。作成後、スコープを設定できます。

注記

システム全体でトークンの有効期限を設定できます。詳細は、パーソナルアクセストークン向けの OAuth 2 トークンシステムの使用 を参照してください。

トークン認証は、Python スクリプトや curl などのツールなど、Automation Controller API をプログラムで使用する場合に最適です。

curl の例

curl -u user:password -k -X POST https://<controller-host>/api/v2/tokens/
Copy to Clipboard Toggle word wrap

この呼び出しは、次の JSON データを返します。

token プロパティーの値を使用して、Hosts などの Automation Controller リソースに対して GET 要求を実行できます。

curl -k -X POST \
  -H “Content-Type: application/json”
  -H “Authorization: Bearer <oauth2-token-value>” \
  https://<controller-host>/api/v2/hosts/
Copy to Clipboard Toggle word wrap

開始するジョブテンプレートに POST を実行してジョブを実行することもできます。

curl -k -X POST \
  -H "Authorization: Bearer <oauth2-token-value>" \
  -H "Content-Type: application/json" \
  --data '{"limit" : "ansible"}' \
  https://<controller-host>/api/v2/job_templates/14/launch/
Copy to Clipboard Toggle word wrap

Python の例

awxkit は、HTTP リクエストを使用して Automation Controller API に簡単にアクセスできるようにするオープンソースツールです。awxkit login コマンドを使用すると、awxkit に代わって PAT を取得できます。詳細は、AWX コマンドラインインターフェイス を参照してください。

カスタムリクエストを記述する必要がある場合は、次の例のように、Python ライブラリーリクエストを使用して Python スクリプトを記述できます。

import requests
oauth2_token_value = 'y1Q8ye4hPvT61aQq63Da6N1C25jiA'   # your token value from controller
url = 'https://<controller-host>/api/v2/users/'
payload = {}
headers = {'Authorization': 'Bearer ' + oauth2_token_value,}

# makes request to controller user endpoint
response = requests.request('GET', url, headers=headers, data=payload,
allow_redirects=False, verify=False)

# prints json returned from controller with formatting
print(json.dumps(response.json(), indent=4, sort_keys=True))
Copy to Clipboard Toggle word wrap

関連情報

OAuth2 アクセストークンの取得と外部アプリケーションのコンテキストでの OAuth 2 の使用方法の詳細は、Automation Controller 管理ガイドトークンベースの認証 を参照してください。

外部ユーザーが OAuth 2 トークンを作成できるようにする

デフォルトでは、シングルサインオンによって作成されたユーザーなどの外部ユーザーは、セキュリティー上の理由から OAuth トークンを生成できません。

手順

  1. ナビゲーションパネルから Settings を選択します。
  2. System オプションのリストから Miscellaneous Authentication settings を選択します。
  3. Allow External Users to Create OAuth2 Tokens オプションを有効にします。

10.4. シングルサインオン認証

シングルサインオン (SSO) 認証方法は、ユーザーの認証が Google SSO、Microsoft Azure SSO、SAML、GitHub などの Automation Controller の外部で行われるため、他の方法とは異なります。たとえば、GitHub SSO では、GitHub が唯一の真実のソースとなり、Automation Controller に指定したユーザー名とパスワードに基づいてアイデンティティーを検証します。

中央アイデンティティープロバイダーを備えた大規模な組織内で Automation Controller を使用して SSO 認証を設定できます。Automation Controller で SSO メソッドを設定すると、ログイン画面でその SSO のオプションが利用できるようになります。このオプションをクリックすると、アイデンティティープロバイダー (この場合は GitHub) にリダイレクトされ、そこで認証情報を提示します。アイデンティティープロバイダーで確認が済むと、Automation Controller は GitHub ユーザーにリンクされたユーザーを作成し (この SSO 方法で初めてログインする場合)、ログインします。

関連情報

サポートされているさまざまなタイプの SSO 認証方法については、Automation Controller 管理ガイドソーシャル認証の設定 および エンタープライズ認証の設定 を参照してください。

法律上の通知

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

© 2026 Red Hat
トップに戻る