Red Hat Ansible Automation Platform 操作ガイド
Ansible Automation Platform インストールのスムーズなデプロイを確実にするためのインストール後の設定
概要
はじめに
Red Hat Ansible Automation Platform をインストールした後、デプロイメントがスムーズに実行するように、システムに追加の設定が必要になる場合があります。このガイドでは、Red Hat Ansible Automation Platform のインストール後に実行できる設定タスクの手順を説明します。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ)
技術的な内容に関するフィードバックをお寄せいただきありがとうございます。皆様のご意見をお待ちしています。コメントの追加、Insights の提供、誤字の修正、および質問を行う必要がある場合は、ドキュメントで直接行うこともできます。
Red Hat アカウントがあり、カスタマーポータルにログインしている必要があります。
カスタマーポータルからドキュメントのフィードバックを送信するには、以下の手順を実施します。
- Multi-page HTML 形式を選択します。
- ドキュメントの右上にある Feedback ボタンをクリックします。
- フィードバックを提供するテキストのセクションを強調表示します。
- 強調表示されたテキストの横にある Add Feedback ダイアログをクリックします。
- ページの右側のテキストボックスにフィードバックを入力し、Submit をクリックします。
フィードバックを送信すると、自動的に問題の追跡が作成されます。Submit をクリックすると表示されるリンクを開き、問題の監視を開始するか、さらにコメントを追加します。
第1章 Red Hat Ansible Automation Platform のアクティブ化
Red Hat Ansible Automation Platform は、利用可能なサブスクリプションまたはサブスクリプションマニフェストを使用して、Ansible Automation Platform の使用を承認します。サブスクリプションを取得するには、次のいずれかを実行できます。
- Ansible Automation Platform を起動するときに、Red Hat のお客様または Satellite の認証情報を使用します。
- Red Hat Ansible Automation Platform インターフェイスを使用するか、Ansible Playbook で手動でサブスクリプションマニフェストファイルをアップロードします。
1.1. 認証情報を使用してアクティブ化する
Ansible Automation Platform を初めて起動すると、Ansible Automation Platform Subscription 画面が自動的に表示されます。Red Hat 認証情報を使用して、サブスクリプションを取得し、Ansible Automation Platform に直接インポートできます。
手順
- Red Hat のユーザー名とパスワードを入力します。
Get Subscriptions をクリックします。
注記クラスターノードが Subscription Manager を通じて Satellite に登録されている場合は、Satellite のユーザー名とパスワードを使用することもできます。
- 使用許諾契約書を確認し、使用許諾契約書に同意します を選択します。
- 追跡と分析のオプションはデフォルトでオンになっています。これらの選択は、はるかに優れたユーザーエクスペリエンスを提供することで、Red Hat が製品を改善するのに役立ちます。オプションの選択を解除することで、オプトアウトできます。
- Submit をクリックします。
- サブスクリプションが受け入れられると、ライセンス画面が表示され、Ansible Automation Platform インターフェイスのダッシュボードに移動します。Settings アイコン ⚙ をクリックし、設定画面から License タブを選択すると、ライセンス画面に戻ることができます。
1.2. マニフェストファイルでアクティブ化する
サブスクリプションマニフェストがある場合は、Red Hat Ansible Automation Platform インターフェイスを使用するか、Ansible Playbook で手動でマニフェストファイルをアップロードできます。
前提条件
Red Hat カスタマーポータルから Red Hat サブスクリプションマニフェストファイルをエクスポートしている。詳細は、マニフェストファイルの取得 を参照してください。
インターフェイスを使用したアップロード
- マニフェストファイルを生成してダウンロードする手順を完了します。
- Red Hat Ansible Automation Platform にログインします。
- マニフェストファイルの入力をすぐに求められない場合は、Settings → License に移動します。
- Username フィールドと Password フィールドが空であることを確認します。
- Browse をクリックして、マニフェストファイルを選択します。
- Next をクリックします。
ライセンスページで BROWSE ボタンが無効になっている場合は、USERNAME フィールドおよび PASSWORD フィールドをクリアします。
手動アップロード
Red Hat Ansible Automation Platform インターフェイスを使用してサブスクリプション情報を適用または更新できない場合は、ansible.controller コレクションの license モジュールを使用して、Ansible Playbook でサブスクリプションマニフェストを手動でアップロードできます。
- name: Set the license using a file license: manifest: "/tmp/my_manifest.zip"
第2章 マニフェストファイルの取得
サブスクリプションマニフェストは、Red Hat Subscription Management の サブスクリプション割り当て セクションで取得できます。サブスクリプションの割り当てを取得したら、そのマニフェストファイルをダウンロードしてアップロードし、Ansible Automation Platform をアクティブ化できます。
まず、管理者ユーザーアカウントを使用して Red Hat カスタマーポータル にログインし、このセクションの手順に従います。
2.1. サブスクリプションの割り当ての作成
新しいサブスクリプション割り当てを作成すると、現在オフラインまたはエアギャップ状態のシステムにサイドサブスクリプションとエンタイトルメントを設定できます。これは、マニフェストをダウンロードして Ansible Automation Platform にアップロードする前に必要です。
手順
- サブスクリプションの割り当て ページで、新規サブスクリプションの割り当て をクリックします。
- 割り当ての名前を入力し、後で検索できるようにします。
- 管理アプリケーションとして、Satellite 6.8 タイプを選択します。
- Create をクリックします。
2.2. サブスクリプション割り当てへのサブスクリプションの追加
割り当てが作成されたら、Ansible Automation Platform を適切に実行するために必要なサブスクリプションを追加できます。この手順は、マニフェストをダウンロードして Ansible Automation Platform に追加する前に必要です。
手順
- サブスクリプション割り当て ページで、サブスクリプションを追加する サブスクリプション割り当て の名前をクリックします。
- Subscriptions タブをクリックします。
- Add Subscriptions をクリックします。
- 追加する予定の Ansible Automation Platform エンタイトルメントの数を入力します。
- Submit をクリックします。
検証
サブスクリプションが承認されると、サブスクリプションの詳細が表示されます。Compliant のステータスは、サブスクリプションが、サブスクリプションカウント内で自動化したホストの数に準拠していることを示します。それ以外の場合、ステータスは Out of Compliance と表示され、サブスクリプション内のホスト数を超えていることを示します。
表示されるその他の重要な情報は次のとおりです。
- 自動化されたホスト
- ライセンス数を消費するジョブによって自動化されたホスト数
- インポートされたホスト
- すべてのインベントリーソースを考慮したホスト数 (残りのホストには影響しません)
- 残りのホスト
- 合計ホスト数から自動化されたホストを差し引いた数
2.3. マニフェストファイルのダウンロード
割り当てを作成して、適切なサブスクリプションを取得したら、Red Hat サブスクリプション管理からマニフェストをダウンロードできます。
手順
- サブスクリプションの割り当て ページで、マニフェストを生成する サブスクリプション割り当て の名前をクリックします。
- Subscriptions タブをクリックします。
- マニフェストのエクスポート をクリックして、マニフェストファイルをダウンロードします。
ファイルはデフォルトのダウンロードフォルダーに保存され、アップロードして Red Hat Ansible Automation Platform をアクティブ化できる ようになりました。
第3章 Red Hat Ansible Automation Platform のプロキシーサポートの設定
プロキシーを使用してトラフィックと通信できるように、Red Hat Ansible Automation Platform を設定できます。プロキシーサーバーは、リソースを別のサーバーから求めているクライアントが出した要求を仲介する役割を果たします。クライアントは、プロキシーサーバーに接続して、別のサーバーからサービスや利用可能なリソースを要求します。そして、このプロキシーサーバーは複雑な内容を簡素化して制御する方法の 1 つとして、その要求を評価します。次のセクションでは、サポート対象のプロキシー設定とその設定方法について説明します。
3.1. プロキシーサポートの有効化
プロキシーサーバーをサポートするために、Automation Controller は、Automation Controller 設定の REMOTE_HOST_HEADERS リスト変数を介してプロキシーされた要求 (Automation Controllerの前にある ALB、NLB、HAProxy、Squid、Nginx、tinyproxy など) を処理します。デフォルトでは、REMOTE_HOST_HEADERS は ["REMOTE_ADDR", "REMOTE_HOST"] に設定されています。
プロキシーサーバーのサポートを有効にするには、Automation Controller の設定ページで REMOTE_HOST_HEADERS フィールドを編集します。
手順
- Automation Controller で、Settings → Miscellaneous System に移動します。
REMOTE_HOST_HEADERS フィールドに、次の値を入力します。
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]
Automation Controller はリモートホストの IP アドレスを判断するために、最初の IP アドレスが特定されるまで、REMOTE_HOST_HEADERS のヘッダー一覧を検索します。
3.2. 既知のプロキシー
オートメーションコントローラーを REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST'] で設定している場合は、X-Forwarded-For の値が、オートメーションコントローラーの前にあるプロキシーまたはロードバランサ―から送られていることを前提としています。プロキシー/ロードバランサーを使用せずにオートメーションコントローラーに到達できる場合、またはプロキシーがヘッダーを検証しない場合は、X-Forwarded-For の値が偽造されて発信元の IP アドレスを偽装する可能性があります。HTTP_X_FORWARDED_FOR 設定で REMOTE_HOST_HEADERS を使用すると、脆弱性が発生します。
これを回避するには、Automation Controller の設定メニューの PROXY_IP_ALLOWED_LIST フィールドを使用して許可される既知のプロキシーのリストを設定できます。既知のプロキシー一覧に含まれていないロードバランサーおよびホストは、要求を拒否します。
3.2.1. 既知のプロキシーの設定
Automation Controller の既知のプロキシーのリストを設定するには、Automation Controller の設定ページの PROXY_IP_ALLOWED_LIST フィールドにプロキシー IP アドレスを追加します。
手順
- Automation Controller で、Settings → Miscellaneous System に移動します。
PROXY_IP_ALLOWED_LIST フィールドに、以下の例の構文に従って、Automation Controller への接続を許可する IP アドレスを入力します。
PROXY_IP_ALLOWED_LIST エントリーの例
[ "example1.proxy.com:8080", "example2.proxy.com:8080" ]
-
PROXY_IP_ALLOWED_LISTは、この一覧のプロキシーが適切にヘッダー入力をサニタイズし、X-Forwarded-Forの値がクライアントの実際のソース IP と同等になるように正しく設定します。Automation Controller は、PROXY_IP_ALLOWED_LISTの IP アドレスとホスト名に依存して、X-Forwarded-Forフィールドに偽装されていない値を提供できます。 以下の条件が すべて 満たされない限り
HTTP_X_FORWARDED_FORを 'REMOTE_HOST_HEADERS' のアイテムとして設定しないでください。- SSL Termination でプロキシー環境を使用している
-
プロキシーにより
X-Forwarded-Forヘッダーのサニタイズまたは検証が行われクライアントの攻撃を防止することができる -
/etc/tower/conf.d/remote_host_headers.pyが信頼されたプロキシーまたはロードバランサーの送信元 IP のみを含むPROXY_IP_ALLOWED_LISTを定義している
3.3. リバースプロキシーの設定
Automation Controller 設定の REMOTE_HOST_HEADERS フィールドに HTTP_X_FORWARDED_FOR を追加して、リバースプロキシーサーバー設定をサポートできます。X-Forwarded-For (XFF) HTTP ヘッダーフィールドは、HTTP プロキシーまたはロードバランサー経由で Web サーバーに接続するクライアントの送信元 IP アドレスを識別します。
手順
- Automation Controller で、Settings → Miscellaneous System に移動します。
REMOTE_HOST_HEADERS フィールドに、次の値を入力します。
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]
-
以下の行を
/etc/tower/conf.d/custom.pyに追加して、アプリケーションが正しいヘッダーを使用していることを確認します。
USE_X_FORWARDED_PORT = True USE_X_FORWARDED_HOST = True
3.4. スティッキーセッションの有効化
デフォルトでは、Application Load Balancer は、選択された負荷分散アルゴリズムに基づいて、登録済みのターゲットに各リクエストを個別にルーティングします。ロードバランサーの背後で Automation Hub の複数のインスタンスの実行時に認証エラーを回避するには、スティッキーセッションを有効にする必要があります。スティッキーセッションを有効にすると、ロードバランサーで設定された Cookie と一致するカスタムアプリケーション Cookie が設定され、スティッキーが有効になります。このカスタム Cookie には、アプリケーションで必要な Cookie 属性を含めることができます。
関連情報
- スティッキーセッションの有効化の詳細は、Application Load Balancer スティッキーセッション を参照してください。
免責事項: この注記に含まれる外部の Web サイトへのリンクは、お客様の利便性のみを目的として提供しています。Red Hat はリンクの内容を確認しておらず、コンテンツまたは可用性について責任を負わないものとします。外部 Web サイトへのリンクが含まれていても、Red Hat が Web サイトまたはその組織、製品、もしくはサービスを保証することを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。
第4章 Automation Controller Websocket 接続の設定
Websocket の設定を nginx またはロードバランサー設定に合わせるために、Automation Controller を設定できます。
4.1. コントローラーの自動化用の WebSocket 設定
Automation Controller ノードは、Websocket を介して相互接続され、Websocket が発行するすべてのメッセージをシステム全体に分散します。この設定セットアップにより、任意のブラウザークライアント Websocket が、任意の Automation Controller ノードで実行されている可能性がある任意のジョブにサブスクライブできるようになります。WebSocket クライアントは特定の Automation Controller ノードにルーティングされません。代わりに、すべての Automation Controller ノードが任意の Websocket 要求を処理できます。各 Automation Controller ノードは、全クライアントに宛てた全 Websocket メッセージを把握しておく必要があります。
すべての Automation Controller ノードの /etc/tower/conf.d/websocket_config.py で Websocket を設定でき、変更はサービスの再起動後に有効になります。
Automation Controller は、データベース内のインスタンスレコードを介して、他の Automation Controller ノードの検出を自動的に処理します。
Automation Controller ノードは、(オープンインターネットではなく) プライベートで信頼できるサブネットを介して Websocket トラフィックをブロードキャストするように設計されています。そのため、Websocket ブロードキャストの HTTPS をオフにすると、Ansible Playbook の標準出力 (stdout) の大部分で構成される Websocket トラフィックは、Automation Controller ノード間で暗号化されずに送信されます。
4.1.1. 他の Automation Controller ノードの自動検出の設定
Websocket 接続を設定して、Automation Controller がデータベースのインスタンスレコードを使用して他の Automation Controller ノードの検出を自動的に処理できるようにします。
ポートとプロトコルの Automation Controller Websock 情報を編集し、Websocket 接続を確立するときに
TrueまたはFalseで証明書を検証するかどうかを確認します。BROADCAST_WEBSOCKET_PROTOCOL = 'http' BROADCAST_WEBSOCKET_PORT = 80 BROADCAST_WEBSOCKET_VERIFY_CERT = False
第5章 ユーザビリティーアナリティクスおよび Automation Controller からのデータ収集の管理
Automation Controller のユーザーインターフェイスをオプトアウトまたは変更することで、Automation Controller からユーザビリティーアナリティクスおよびデータ収集への参加方法を変更できます。
5.1. ユーザビリティーアナリティクスおよびデータ収集
ユーザビリティーのデータ収集は、Automation Controller に含まれており、Automation Controller ユーザーが Automation Controller とどのように相互作用するかをよりよく理解するためのデータを収集し、今後のリリースの強化に役立て、ユーザーエクスペリエンスの合理化を継続していきます。
Automation Controller のトライアルまたは Automation Controller の新規インストールのみが、このデータ収集でオプトインされます。
関連情報
- 詳細は、Red Hat プライバシーポリシー を参照してください。
5.1.1. Automation Controller からのデータ収集の制御
Settings メニューの User Interface タブで参加レベルを設定して、Automation Controller がデータを収集する方法を制御できます。
手順
- Automation Controller にログインします。
- Settings → User Interface に移動します。
User Analytics Tracking State ドロップダウンリストから目的のデータ収集レベルを選択します。
- オフ: データ収集を行いません。
- 匿名: ユーザー固有のデータを含めないデータ収集を有効化します。
- 詳細: お使いのユーザー固有のデータを含めたデータ収集を有効化します。
- Save をクリックして設定を適用するか、Cancel をクリックして変更を破棄します。
第6章 Automation controller 設定ファイル内のプレーンテキストパスワードの暗号化
Automation Controller 設定ファイルに保存されるパスワードは、プレーンテキストで保存されます。/etc/tower/conf.d/ ディレクトリーへのアクセス権を持つユーザーは、データベースへのアクセスに使用されるパスワードを表示できます。ディレクトリーへのアクセスは権限によって制御されるため、ディレクトリーは保護されていますが、セキュリティーに関する調査結果によっては、この保護は不十分であると考えられています。解決策は、パスワードを個別に暗号化することです。
6.1. PostgreSQL パスワードハッシュの作成
手順
Automation Controller ノードで、次のコマンドを実行します。
# awx-manage shell_plus
続いて、python プロンプトから以下を実行します。
>>> from awx.main.utils import encrypt_value, get_encryption_key \ >>> postgres_secret = encrypt_value('$POSTGRES_PASS') \ >>> print(postgres_secret)注記$POSTGRES_PASS変数を、暗号化する実際のプレーンテキストのパスワードに置き換えます。出力は以下のようになります。
$encrypted$UTF8$AESCBC$Z0FBQUFBQmtLdGNRWXFjZGtkV1ZBR3hkNGVVbFFIU3hhY21UT081eXFkR09aUWZLcG9TSmpndmZYQXFyRHVFQ3ZYSE15OUFuM1RHZHBqTFU3S0MyNEo2Y2JWUURSYktsdmc9PQ==
これらのハッシュの完全な値をコピーして保存します。
次の例に示すように、ハッシュ値は
$encrypted$で始まり、単なる文字列ではありません。$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ==
$*_PASS値は、インベントリーファイル内ですでにプレーンテキストになっていることに注意してください。
これらの手順では、Automation Controller 設定ファイル内のプレーンテキストパスワードを置き換えるハッシュ値を提供します。
6.2. Postgres パスワードの暗号化
次の手順では、プレーンテキストのパスワードを暗号化された値に置き換えます。クラスター内の各ノードで次の手順を実行します。
手順
以下を使用して
/etc/tower/conf.d/postgres.pyを編集します。$ vim /etc/tower/conf.d/postgres.py
ファイルの先頭に次の行を追加します。
from awx.main.utils import decrypt_value, get_encryption_key
'PASSWORD': の後にリストされているパスワード値を削除し、次の行に置き換えて、指定された
$encrytpted..の値を独自のハッシュ値に置き換えます。decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='),注記このステップのハッシュ値は、
postgres_secretの出力値です。完全な
postgres.pyは次のようになります。# Ansible Automation platform controller database settings. from awx.main.utils import decrypt_value, get_encryption_key DATABASES = { 'default': { 'ATOMIC_REQUESTS': True, 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'awx', 'USER': 'awx', 'PASSWORD': decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='), 'HOST': '127.0.0.1', 'PORT': 5432, } }
6.3. Automation Controller サービスの再起動
手順
すべてのノードで暗号化が完了したら、以下を使用してクラスター全体でサービスの再起動を実行します。
# automation-controller-service restart
- UI に移動し、すべてのノードでジョブを実行できることを確認します。