9.3. Ansible を使用したコンテナーの管理


Red Hat OpenStack Platform 17.1 は、tripleo_container_manage Ansible ロールを使用してコンテナーの管理操作を実行します。カスタム Playbook を作成して、特定のコンテナー管理操作を実行することもできます。

  • heat が生成するコンテナー設定データを収集する。tripleo_container_manage ロールは、このデータを使用してコンテナーのデプロイメントをオーケストレーションします。
  • コンテナーを起動する。
  • コンテナーを停止する。
  • コンテナーを更新する。
  • コンテナーを削除する。
  • 特定の設定でコンテナーを実行する。

director はコンテナー管理を自動的に実施しますが、コンテナー設定をカスタマイズしなければならない場合や、オーバークラウドを再デプロイせずにコンテナーにホットフィックスを適用しなければならない場合があります。

注記

このロールがサポートするのは Podman コンテナー管理だけです。

9.3.1. tripleo-container-manage ロールのデフォルトと変数

次の抜粋は、tripleo_container_manage Ansible ロールのデフォルトと変数を示しています。

# All variables intended for modification should place placed in this file.
tripleo_container_manage_hide_sensitive_logs: '{{ hide_sensitive_logs | default(true)
  }}'
tripleo_container_manage_debug: '{{ ((ansible_verbosity | int) >= 2) | bool }}'
tripleo_container_manage_clean_orphans: true

# All variables within this role should have a prefix of "tripleo_container_manage"
tripleo_container_manage_check_puppet_config: false
tripleo_container_manage_cli: podman
tripleo_container_manage_concurrency: 1
tripleo_container_manage_config: /var/lib/tripleo-config/
tripleo_container_manage_config_id: tripleo
tripleo_container_manage_config_overrides: {}
tripleo_container_manage_config_patterns: '*.json'
# Some containers where Puppet is run, can take up to 10 minutes to finish
# in slow environments.
tripleo_container_manage_create_retries: 120
# Default delay is 5s so 120 retries makes a timeout of 10 minutes which is
# what we have observed a necessary value for nova and neutron db-sync execs.
tripleo_container_manage_exec_retries: 120
tripleo_container_manage_healthcheck_disabled: false
tripleo_container_manage_log_path: /var/log/containers/stdouts
tripleo_container_manage_systemd_teardown: true
Copy to Clipboard Toggle word wrap

9.3.2. tripleo-container-manage molecule のシナリオ

Moleculetripleo_container_manage ロールをテストするために使用されます。以下は、molecule のデフォルトのインベントリーを示しています。

hosts:
  all:
    hosts:
      instance:
        ansible_host: localhost
        ansible_connection: local
        ansible_distribution: centos8
Copy to Clipboard Toggle word wrap

使用方法

Red Hat OpenStack 17.1 は、このロールで Podman のみをサポートします。Docker のサポートはロードマップ上にあります。

Molecule Ansible ロールは、次のタスクを実行します。

  • TripleO Heat テンプレートによって生成されたコンテナー設定データを収集します。このデータは、信頼できる情報源として使用されます。コンテナーがすでに Molecule で管理されている場合には、現在の状態に関係なく、設定データは必要に応じてコンテナーを再設定します。
  • systemd シャットダウンファイルを管理します。ノードのシャットダウン時または起動時のサービス注文に必要な TripleO Container systemd サービスを作成します。また、netns-placeholder サービスも管理します。
  • 不要になったコンテナーまたは再設定が必要なコンテナーを削除します。コンテナーを削除する必要があるかどうかを判断するための一連のルールが含まれる、needs_delete () という名前のカスタムフィルターを使用します。

    • コンテナーが tripleo_ansible によって管理されていない場合、またはコンテナーの config_id が入力 ID と一致しない場合には、コンテナーは削除されません。
    • コンテナーに config_data がない場合、またはコンテナーに入力データと一致しない config_data がある場合には、コンテナーは削除されます。コンテナーが削除されると、そのロールも systemd サービスとヘルスチェックを無効にして削除することに注意してください。
  • start_order コンテナー設定で定義された特定の順序でコンテナーを作成します。デフォルトは 0 です。

    • コンテナーが exec の場合は、exec 専用の Playbook が実行し、async を使用して複数の exec を同時に実行できるようになります。
    • それ以外の場合、podman_container が非同期で使用され、コンテナーが作成されます。コンテナーに 再起動ポリシー がある場合、systemd サービスが設定されます。コンテナーにヘルスチェックスクリプトがある場合には、systemd healthcheck サービスが設定されます。
注記

tripleo_container_manage_concurrency パラメーターはデフォルトで 1 に設定されており、2 より大きい値を設定すると、Podman ロックに関する問題が発生する可能性があります。

Playbook の例:

- name: Manage step_1 containers using tripleo-ansible
  block:
    - name: "Manage containers for step 1 with tripleo-ansible"
      include_role:
        name: tripleo_container_manage
      vars:
        tripleo_container_manage_config: "/var/lib/tripleo-config/container-startup-config/step_1"
        tripleo_container_manage_config_id: "tripleo_step1"
Copy to Clipboard Toggle word wrap

9.3.3. tripleo_container_manage ロールの変数

tripleo_container_manage Ansible ロールには、以下の変数が含まれます。

Expand
表9.1 ロール変数
名前デフォルト値説明

tripleo_container_manage_check_puppet_config

false

Ansible で Puppet コンテナー設定を確認する場合は、この変数を使用します。Ansible は、設定ハッシュを使用して更新されたコンテナー設定を識別することができます。コンテナーに Puppet からの新規設定がある場合は、この変数を true に設定します。これにより、Ansible は新規設定を検出し、Ansible が再起動しなければならないコンテナーリストにコンテナーを追加することができます。

tripleo_container_manage_cli

podman

この変数を使用して、コンテナーを管理するのに使用するコマンドラインインターフェイスを設定します。tripleo_container_manage ロールがサポートするのは Podman だけです。

tripleo_container_manage_concurrency

1

この変数を使用して、同時に管理するコンテナーの数を設定します。

tripleo_container_manage_config

/var/lib/tripleo-config/

この変数を使用して、コンテナー設定ディレクトリーへのパスを設定します。

tripleo_container_manage_config_id

tripleo

この変数を使用して、特定の設定ステップの ID を設定します。たとえば、デプロイメントのステップ 2 のコンテナーを管理するには、この値を tripleo_step2 に設定します。

tripleo_container_manage_config_patterns

*.json

この変数を使用して、コンテナー設定ディレクトリーの設定ファイルを識別する bash 正規表現を設定します。

tripleo_container_manage_debug

false

この変数を使用して、デバッグモードを有効または無効にします。特定の一度限りの設定でコンテナーを実行する場合、コンテナーのライフサイクルを管理するコンテナーコマンドを出力する場合、またはテストおよび検証目的で操作を行わずにコンテナー管理を実施する場合に、tripleo_container_manage ロールをデバッグモードで実行します。

tripleo_container_manage_healthcheck_disable

false

この変数を使用して、ヘルスチェックを有効または無効にします。

tripleo_container_manage_log_path

/var/log/containers/stdouts

この変数を使用して、コンテナーの stdout ログパスを設定します。

tripleo_container_manage_systemd_order

false

この変数を使用して、Ansible による systemd のシャットダウン順序を有効または無効にします。

tripleo_container_manage_systemd_teardown

true

この変数を使用して、使用されなくなったコンテナーのクリーンアップをトリガーします。

tripleo_container_manage_config_overrides

{}

この変数を使用して、コンテナー設定をオーバーライドします。この変数では、値にディクショナリー形式が使用されます。ここで、それぞれのキーはコンテナー名およびオーバーライドするパラメーター (例: コンテナーイメージ、ユーザー) です。この変数は、JSON コンテナー設定ファイルにカスタムオーバーライドを書き込みません。したがって、コンテナーが新たにデプロイ、更新、またはアップグレードされると、JSON 設定ファイルの内容に戻ります。

tripleo_container_manage_valid_exit_code

[]

この変数を使用して、コンテナーが終了コードを返すかどうかを確認します。この値はリストにする必要があります (例: [0,3])。

9.3.4. tripleo-container-manage ヘルスチェック

Red Hat OpenStack 17.1 までは、コンテナーのヘルスチェックは systemd タイマーで実装され、podman exec を実行して特定のコンテナーが正常かどうかを判断していました。現在は、Podman のネイティブの healthcheck インターフェイスを使用しており、統合と使用がさらに簡単になっています。

コンテナー (keystone など) が正常かどうかを確認するには、次のコマンドを実行します。

$ sudo podman healthcheck run keystone
Copy to Clipboard Toggle word wrap

戻りコードは 0 および “healthy” である必要があります。

"Healthcheck": {
    "Status": "healthy",
    "FailingStreak": 0,
    "Log": [
        {
            "Start": "2020-04-14T18:48:57.272180578Z",
            "End": "2020-04-14T18:48:57.806659104Z",
            "ExitCode": 0,
            "Output": ""
        },
        (...)
    ]
}
Copy to Clipboard Toggle word wrap

9.3.5. tripleo-container-manage デバッグ

tripleo_container_manage Ansible ロールを使用すると、特定のコンテナーに対して特定のアクションを実行できます。これは次の目的で使用できます。

  • 特定の 1 回限りの設定でコンテナーを実行します。
  • コンテナーのライフサイクル管理用のコンテナーコマンドを出力します。
  • Ansible がコンテナーに加えられた変更を出力します。
注記

1 つのコンテナーを管理するには、次の 2 つのことを知っておく必要があります。

  • オーバークラウドのデプロイ中のどのステップでコンテナーがデプロイされたか。
  • コンテナー設定を含む、生成された JSON ファイルの名前。

以下は、イメージ設定をオーバーライドする ステップ 1HAproxy コンテナーを管理する Playbook の例です。

- hosts: localhost
  become: true
  tasks:
    - name: Manage step_1 containers using tripleo-ansible
      block:
        - name: "Manage HAproxy container at step 1 with tripleo-ansible"
          include_role:
            name: tripleo_container_manage
          vars:
            tripleo_container_manage_config_patterns: 'haproxy.json'
            tripleo_container_manage_config: "/var/lib/tripleo-config/container-startup-config/step_1"
            tripleo_container_manage_config_id: "tripleo_step1"
            tripleo_container_manage_clean_orphans: false
            tripleo_container_manage_config_overrides:
              haproxy:
                image: quay.io/tripleoRed_Hat_OpenStack_Platform-17.1-Customizing_your_Red_Hat_OpenStack_Platform_deployment.entos9/centos-binary-haproxy:hotfix
Copy to Clipboard Toggle word wrap

Ansible が check mode で実行されている場合に、コンテナーは削除または作成されませんが、Playbook の実行の最後にコマンドのリストが表示され、Playbook で出される可能性のある結果が示されます。これはデバッグに役立ちます。

$ ansible-playbook haproxy.yaml --check
Copy to Clipboard Toggle word wrap

diff mode を追加すると、Ansible によってコンテナーに加えられた変更が表示されます。

$ ansible-playbook haproxy.yaml --check --diff
Copy to Clipboard Toggle word wrap

tripleo_container_manage_clean_orphans パラメーターはオプションです。false に設定できます。これは、固有の config_id が割り当てられた、孤立したコンテナーが削除されないことを意味します。このパラメーターを使用して、config_id が同じ、別の実行中のコンテナーに影響を与えずに、1 つのコンテナーを管理できます。

tripleo_container_manage_config_overrides パラメーターはオプションであり、イメージやコンテナーユーザーなどの特定のコンテナー属性をオーバーライドするために使用できます。このパラメーターは、コンテナー名とオーバーライドするパラメーターを使用してディクショナリーを作成します。これらのパラメーターは存在する必要があり、TripleO Heat テンプレートでコンテナー設定を定義します。

ディクショナリーは JSON ファイルのオーバーライドを更新しないことに注意してください。そのため、更新またはアップグレードが実行された場合に、コンテナーは JSON ファイルの設定で再構成されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat